@@ -1746,9 +1746,18 @@ int process_set_commands(struct sqlclntstate *clnt, CDB2SQLQUERY *sql_query)
17461746 sqlstr );
17471747 rc = ii + 1 ;
17481748 } else if (clnt -> dbtran .mode != TRANLEVEL_SOSQL ) {
1749- snprintf (err , sizeof (err ),
1750- "transaction chunks require SOCKSQL transaction mode" );
1751- rc = ii + 1 ;
1749+ int snapshot_by_default =
1750+ (clnt -> dbtran .mode == TRANLEVEL_MODSNAP && gbl_sql_tranlevel_default == TRANLEVEL_MODSNAP );
1751+ if (snapshot_by_default ) {
1752+ logmsg (LOGMSG_DEBUG , "snapshot is on by default, use socksql instead\n" );
1753+ clnt -> dbtran .mode = TRANLEVEL_SOSQL ;
1754+ clnt -> dbtran .maxchunksize = tmp ;
1755+ /* in chunked mode, we disable verify retries */
1756+ clnt -> verifyretry_off = 1 ;
1757+ } else {
1758+ snprintf (err , sizeof (err ), "transaction chunks require SOCKSQL transaction mode" );
1759+ rc = ii + 1 ;
1760+ }
17521761 } else {
17531762 clnt -> dbtran .maxchunksize = tmp ;
17541763 /* in chunked mode, we disable verify retries */
@@ -1792,9 +1801,15 @@ int process_set_commands(struct sqlclntstate *clnt, CDB2SQLQUERY *sql_query)
17921801 if (clnt -> dbtran .mode == TRANLEVEL_INVALID ) {
17931802 rc = ii + 1 ;
17941803 } else if (clnt -> dbtran .mode != TRANLEVEL_SOSQL && clnt -> dbtran .maxchunksize ) {
1795- snprintf (err , sizeof (err ),
1796- "transaction chunks require SOCKSQL transaction mode" );
1797- rc = ii + 1 ;
1804+ int snapshot_by_default =
1805+ (clnt -> dbtran .mode == TRANLEVEL_MODSNAP && gbl_sql_tranlevel_default == TRANLEVEL_MODSNAP );
1806+ if (snapshot_by_default ) {
1807+ logmsg (LOGMSG_DEBUG , "snapshot is on by default, use socksql instead\n" );
1808+ clnt -> dbtran .mode = TRANLEVEL_SOSQL ;
1809+ } else {
1810+ snprintf (err , sizeof (err ), "transaction chunks require SOCKSQL transaction mode" );
1811+ rc = ii + 1 ;
1812+ }
17981813 }
17991814 }
18001815 } else if (strncasecmp (sqlstr , "timeout" , 7 ) == 0 ) {
0 commit comments