Diff for /sql/pgsql/parser3pgsql.C between versions 1.22 and 1.23

version 1.22, 2004/06/23 07:32:07 version 1.23, 2004/12/23 15:57:41
Line 127  public: Line 127  public:
   
                 char *charset=0;                  char *charset=0;
                 char *datestyle=0;                  char *datestyle=0;
                   isDefaultTransaction = true;
   
                 while(options) {                  while(options) {
                         if(char *key=lsplit(&options, '&')) {                          if(char *key=lsplit(&options, '&')) {
Line 139  public: Line 140  public:
                                                         cstrBackwardCompAskServerToTranscode=value;                                                          cstrBackwardCompAskServerToTranscode=value;
                                                 } else if(strcasecmp(key, "datestyle")==0) {                                                  } else if(strcasecmp(key, "datestyle")==0) {
                                                         datestyle=value;                                                          datestyle=value;
                                                   } else if(strcmp(key, "WithoutDefaultTransaction")==0) {
                                                           isDefaultTransaction = false;
                                                 } else                                                  } else
                                                         services._throw("unknown connect option" /*key*/);                                                          services._throw("unknown connect option" /*key*/);
                                         } else                                           } else 
Line 182  public: Line 185  public:
                 connection.conn=0;                  connection.conn=0;
         }          }
         void commit(void *aconnection) {          void commit(void *aconnection) {
                 Connection& connection=*static_cast<Connection*>(aconnection);                  if(isDefaultTransaction)
                   {
                 if(PGresult *res=PQexec(connection.conn, "COMMIT"))                          Connection& connection=*static_cast<Connection*>(aconnection);
                         PQclear(res);  
                 else                          if(PGresult *res=PQexec(connection.conn, "COMMIT"))
                         throwPQerror;                                  PQclear(res);
                 begin_transaction(connection);                          else
                                   throwPQerror;
                           begin_transaction(connection);
                   }
         }          }
         void rollback(void *aconnection) {          void rollback(void *aconnection) {
                 Connection& connection=*static_cast<Connection*>(aconnection);                  if(isDefaultTransaction)
                   {
                 if(PGresult *res=PQexec(connection.conn, "ROLLBACK"))                          Connection& connection=*static_cast<Connection*>(aconnection);
                         PQclear(res);  
                 else                          if(PGresult *res=PQexec(connection.conn, "ROLLBACK"))
                         throwPQerror;                                  PQclear(res);
                 begin_transaction(connection);                          else
                                   throwPQerror;
                           begin_transaction(connection);
                   }
         }          }
   
         bool ping(void *aconnection) {          bool ping(void *aconnection) {
Line 373  cleanup: Line 382  cleanup:
 private: // private funcs  private: // private funcs
   
         void begin_transaction(Connection& connection) {          void begin_transaction(Connection& connection) {
                 if(PGresult *res=PQexec(connection.conn, "BEGIN"))                  if(isDefaultTransaction)
                         PQclear(res);                  {
                 else                          if(PGresult *res=PQexec(connection.conn, "BEGIN"))
                         throwPQerror;                                  PQclear(res);
                           else
                                   throwPQerror;
                   }
         }          }
   
         const char *preprocess_statement(Connection& connection,          const char *preprocess_statement(Connection& connection,
Line 560  private: // conn client library funcs li Line 572  private: // conn client library funcs li
                 return 0;                  return 0;
         }          }
   
           // Default transaction flag, if true make it.
           bool isDefaultTransaction;
 };  };
   
 extern "C" SQL_Driver *SQL_DRIVER_CREATE() {  extern "C" SQL_Driver *SQL_DRIVER_CREATE() {

Removed from v.1.22  
changed lines
  Added in v.1.23


E-mail: