Diff for /sql/pgsql/parser3pgsql.C between versions 1.44 and 1.45

version 1.44, 2015/10/26 16:00:51 version 1.45, 2019/10/25 12:27:44
Line 99  struct Connection { Line 99  struct Connection {
         PGconn *conn;          PGconn *conn;
         const char* client_charset;          const char* client_charset;
         bool autocommit;          bool autocommit;
         bool without_default_transactions;          bool with_default_transactions;
         bool standard_conforming_strings;          bool standard_conforming_strings;
 };  };
   
Line 134  public: Line 134  public:
                         ClientCharset=charset&  // transcode by parser                          ClientCharset=charset&  // transcode by parser
                         charset=value&                  // transcode by server with 'SET CLIENT_ENCODING=value'                          charset=value&                  // transcode by server with 'SET CLIENT_ENCODING=value'
                         datestyle=value&                // 'SET DATESTYLE=value' available values are: ISO|SQL|Postgres|European|US|German [default=ISO]                          datestyle=value&                // 'SET DATESTYLE=value' available values are: ISO|SQL|Postgres|European|US|German [default=ISO]
                         autocommit=1&                   // each transaction is commited automatically (default)                          autocommit=0&                   // 1 -- each statement is commited automatically, only when with_default_transaction enabled
                         standard_conforming_strings=1& // 0 -- escape \ char that could be needed for old servers                          standard_conforming_strings=1&  // 0 -- escape \ char that could be needed for old servers
                         WithoutDefaultTransaction=0        // 1 -- disable any BEGIN TRAN/COMMIT/ROLLBACK [can NOT be used with autocommit option]                          with_default_transaction=0      // 1 -- wrap connection into BEGIN TRAN/COMMIT/ROLLBACK
         */          */
         void connect(          void connect(
                                 char* url,                                   char* url, 
Line 155  public: Line 155  public:
                 char* datestyle=0;                  char* datestyle=0;
   
                 Connection& connection=*(Connection *)services.malloc(sizeof(Connection));                  Connection& connection=*(Connection *)services.malloc(sizeof(Connection));
   
                 *connection_ref=&connection;                  *connection_ref=&connection;
                 connection.services=&services;                  connection.services=&services;
                 connection.client_charset=0;                      connection.client_charset=0;
                 connection.autocommit=true;                  connection.autocommit=false;
                 connection.without_default_transactions=false;                  connection.with_default_transactions=false;
                 connection.standard_conforming_strings=true;                  connection.standard_conforming_strings=true;
   
                 connection.conn=PQsetdbLogin(                  connection.conn=PQsetdbLogin(
Line 184  public: Line 185  public:
                                                 } else if(strcasecmp(key, "datestyle")==0){                                                  } else if(strcasecmp(key, "datestyle")==0){
                                                         datestyle=value;                                                          datestyle=value;
                                                 } else if(strcasecmp(key, "autocommit")==0){                                                  } else if(strcasecmp(key, "autocommit")==0){
                                                         if(connection.without_default_transactions)  
                                                                 services._throw("options WithoutDefaultTransaction and autocommit can't be used together");  
                                                         if(atoi(value)==0)  
                                                                 connection.autocommit=false;  
                                                 } else if(strcmp(key, "WithoutDefaultTransaction")==0){  
                                                         if(!connection.autocommit)  
                                                                 services._throw("options WithoutDefaultTransaction and autocommit can't be used together");  
                                                         if(atoi(value)==1){                                                          if(atoi(value)==1){
                                                                 connection.without_default_transactions=true;                                                                  if(!connection.with_default_transactions)
                                                                 connection.autocommit=false;                                                                          services._throw("autocommit can be used only with_default_transaction enabled");
                                                                   connection.autocommit=true;
                                                         }                                                          }
                                                   } else if(strcmp(key, "with_default_transaction")==0){
                                                           if(atoi(value)==1)
                                                                   connection.with_default_transactions=true;
                                                   } else if(strcmp(key, "WithoutDefaultTransaction")==0){
                                                           if(atoi(value)==0)
                                                                   connection.with_default_transactions=true;
                                                 } else if(strcasecmp(key, "standard_conforming_strings")==0){                                                  } else if(strcasecmp(key, "standard_conforming_strings")==0){
                                                         if(atoi(value)==0)                                                          if(atoi(value)==0)
                                                                 connection.standard_conforming_strings=false;                                                                  connection.standard_conforming_strings=false;
Line 534  private: Line 535  private:
         }          }
   
         void _execute_transactions_cmd(const Connection& connection, const char *query){          void _execute_transactions_cmd(const Connection& connection, const char *query){
                 if(!connection.without_default_transactions) // with option ?WithoutDefaultTransaction=1 user must execute BEGIN/COMMIT/ROLLBACK by himself                  if(connection.with_default_transactions) // without ?with_default_transaction=1 user must execute BEGIN/COMMIT/ROLLBACK by himself
                         _execute_cmd(connection, query);                          _execute_cmd(connection, query);
         }          }
   

Removed from v.1.44  
changed lines
  Added in v.1.45


E-mail: