]> granicus.if.org Git - pdns/commitdiff
Output query on error for gpgsql and goracle backends
authorPieter Lexis <pieter.lexis@powerdns.com>
Mon, 30 Mar 2015 14:30:14 +0000 (16:30 +0200)
committerPieter Lexis <pieter.lexis@powerdns.com>
Mon, 30 Mar 2015 18:42:01 +0000 (20:42 +0200)
modules/goraclebackend/soracle.cc
modules/gpgsqlbackend/spgsql.cc

index 42e675ed7542515511db30c385a98acbddf49236..aafe54415f9bf9a6d8dfe397ae811a7f30c9ae40 100644 (file)
@@ -48,7 +48,7 @@ public:
     if (d_release_stmt) {
       if (OCIStmtPrepare2(d_svcctx, &d_stmt, d_err, (text*)query.c_str(), query.size(), NULL, 0, OCI_NTV_SYNTAX, OCI_DEFAULT) != OCI_SUCCESS) {
         // failed.
-        throw SSqlException("Cannot prepare statement: " + OCIErrStr());
+        throw SSqlException("Cannot prepare statement: " + d_query + string(": ") + OCIErrStr());
       }
       d_init = true;
     } else d_init = false;
@@ -64,12 +64,12 @@ public:
     if (d_query.size()==0) return;
     if (d_init == false) {
       if (OCIStmtPrepare2(d_svcctx, &d_stmt, d_err, (text*)d_query.c_str(), d_query.size(), NULL, 0, OCI_NTV_SYNTAX, OCI_DEFAULT) != OCI_SUCCESS) {
-        throw SSqlException("Cannot prepare statement: " + OCIErrStr());
+        throw SSqlException("Cannot prepare statement: " + d_query + string(": ") + OCIErrStr());
       }
       d_init = true;
     } else {
       if (OCIStmtPrepare2(d_svcctx, &d_stmt, d_err, (text*)d_query.c_str(), d_query.size(), d_stmt_key, d_stmt_keysize, OCI_NTV_SYNTAX, OCI_DEFAULT) != OCI_SUCCESS) {
-        throw SSqlException("Cannot prepare statement: " + OCIErrStr());
+        throw SSqlException("Cannot prepare statement: " + d_query + string(": ") + OCIErrStr());
       }
     }
   }
@@ -81,7 +81,7 @@ public:
   SSqlStatement* bind(const string& name, int value) 
   {
     if (d_paridx >= d_parnum)
-     throw SSqlException("Attempt to bind more parameters than query has");
+     throw SSqlException("Attempt to bind more parameters than query has: " + d_query);
     prepareStatement();
     string zName = string(":") + name;
     d_bind[d_paridx].val4 = value;
@@ -94,7 +94,7 @@ public:
   SSqlStatement* bind(const string& name, uint32_t value)
   {
     if (d_paridx >= d_parnum)
-     throw SSqlException("Attempt to bind more parameters than query has");
+     throw SSqlException("Attempt to bind more parameters than query has: " + d_query);
     prepareStatement();
     string zName = string(":") + name;
     d_bind[d_paridx].val4 = value;
@@ -107,7 +107,7 @@ public:
   SSqlStatement* bind(const string& name, long value)
   {
     if (d_paridx >= d_parnum)
-     throw SSqlException("Attempt to bind more parameters than query has");
+     throw SSqlException("Attempt to bind more parameters than query has: " + d_query);
     prepareStatement();
     string zName = string(":") + name;
     d_bind[d_paridx].val4 = value;
@@ -120,7 +120,7 @@ public:
   SSqlStatement* bind(const string& name, unsigned long value) 
   {
     if (d_paridx >= d_parnum)
-     throw SSqlException("Attempt to bind more parameters than query has");
+     throw SSqlException("Attempt to bind more parameters than query has: " + d_query);
     prepareStatement();
     string zName = string(":") + name;
     d_bind[d_paridx].val4 = value;
@@ -133,7 +133,7 @@ public:
   SSqlStatement* bind(const string& name, long long value)
   {
     if (d_paridx >= d_parnum)
-     throw SSqlException("Attempt to bind more parameters than query has");
+     throw SSqlException("Attempt to bind more parameters than query has: " + d_query);
     prepareStatement();
     string zName = string(":") + name;
     d_bind[d_paridx].val8 = value;
@@ -146,7 +146,7 @@ public:
   SSqlStatement* bind(const string& name, unsigned long long value)
   {
     if (d_paridx >= d_parnum)
-     throw SSqlException("Attempt to bind more parameters than query has");
+     throw SSqlException("Attempt to bind more parameters than query has: " + d_query);
     prepareStatement();
     string zName = string(":") + name;
     d_bind[d_paridx].val8 = value;
@@ -159,7 +159,7 @@ public:
   SSqlStatement* bind(const string& name, const std::string& value) 
   {
     if (d_paridx >= d_parnum)
-     throw SSqlException("Attempt to bind more parameters than query has");
+     throw SSqlException("Attempt to bind more parameters than query has: " + d_query);
     prepareStatement();
     string zName = string(":") + name;
     d_bind[d_paridx].vals = new text[value.size()+1];
@@ -174,7 +174,7 @@ public:
   SSqlStatement* bindNull(const string& name) 
   { 
     if (d_paridx >= d_parnum)
-     throw SSqlException("Attempt to bind more parameters than query has");
+     throw SSqlException("Attempt to bind more parameters than query has: " + d_query);
     prepareStatement();
     string zName = string(":") + name;
     if (OCIBindByName(d_stmt, &(d_bind[d_paridx].handle), d_err, (text*)zName.c_str(), zName.size(), NULL, 0, SQLT_STR, &d_null_ind, 0, 0, 0, 0, OCI_DEFAULT) != OCI_SUCCESS) {
@@ -195,14 +195,14 @@ public:
     ub4 iters;
 
     if (OCIAttrGet(d_stmt, OCI_HTYPE_STMT, (dvoid*)&fntype, 0, OCI_ATTR_STMT_TYPE, d_err))
-      throw SSqlException("Cannot get statement type: " + OCIErrStr());
+      throw SSqlException("Cannot get statement type: " + d_query + string(": ") + OCIErrStr());
 
     if (fntype == OCI_STMT_SELECT) iters = 0;
     else iters = 1;
 
     d_queryResult = OCIStmtExecute(d_svcctx, d_stmt, d_err, iters, 0, NULL, NULL, OCI_DEFAULT);
     if (d_queryResult != OCI_NO_DATA && d_queryResult != OCI_SUCCESS && d_queryResult != OCI_SUCCESS_WITH_INFO) {
-      throw SSqlException("Cannot execute statement: " + OCIErrStr());
+      throw SSqlException("Cannot execute statement: " + d_query + string(": ") + OCIErrStr());
     }
 
     d_resnum = d_residx = 0; 
@@ -213,9 +213,9 @@ public:
 
       // figure out what the result looks like
       if (OCIAttrGet(d_stmt, OCI_HTYPE_STMT, (dvoid*)&o_resnum, 0, OCI_ATTR_ROW_COUNT, d_err)) 
-        throw SSqlException("Cannot get statement result row count: " + OCIErrStr()); // this returns 0 
+        throw SSqlException("Cannot get statement result row count: " + d_query + string(": ") + OCIErrStr()); // this returns 0 
       if (OCIAttrGet(d_stmt, OCI_HTYPE_STMT, (dvoid*)&o_fnum, 0, OCI_ATTR_PARAM_COUNT, d_err)) 
-        throw SSqlException("Cannot get statement result column count: " + OCIErrStr());
+        throw SSqlException("Cannot get statement result column count: " + d_query + string(": ") + OCIErrStr());
 
       d_residx = 0;
       d_resnum = o_resnum;
@@ -229,16 +229,16 @@ public:
 
         for(int i=0; i < d_fnum; i++) {
           if (OCIParamGet(d_stmt, OCI_HTYPE_STMT, d_err, (dvoid**)&parms, (ub4)i+1) != OCI_SUCCESS) {
-            throw SSqlException("Cannot get statement result column information: " + OCIErrStr());
+            throw SSqlException("Cannot get statement result column information: " + d_query + string(": ") + OCIErrStr());
           }
 
           if (OCIAttrGet(parms, OCI_DTYPE_PARAM, (dvoid*)&(d_res[i].colsize), 0, OCI_ATTR_DATA_SIZE, d_err) != OCI_SUCCESS) {
-            throw SSqlException("Cannot get statement result column information: " + OCIErrStr());
+            throw SSqlException("Cannot get statement result column information: " + d_query + string(": ") + OCIErrStr());
           }
           
           if (d_res[i].colsize == 0) {
             if (OCIAttrGet(parms, OCI_DTYPE_PARAM, (dvoid*)&o_attrtype, 0, OCI_ATTR_DATA_TYPE, d_err) != OCI_SUCCESS) {
-              throw SSqlException("Cannot get statement result column information: " + OCIErrStr());
+              throw SSqlException("Cannot get statement result column information: " + d_query + string(": ") + OCIErrStr());
             }
 
             // oracle 11g returns 0 for integer fields - we know oracle should return 22.
@@ -257,7 +257,7 @@ public:
       if (d_fnum > 0) {
         for(int i=0;i<d_fnum;i++) {
           if (OCIDefineByPos(d_stmt, &(d_res[i].handle), d_err, i+1, d_res[i].content, d_res[i].colsize+1, SQLT_STR, (dvoid*)&(d_res[i].ind), NULL, NULL, OCI_DEFAULT)) 
-            throw SSqlException("Cannot bind result column: " + OCIErrStr());
+            throw SSqlException("Cannot bind result column: " + d_query + string(": ") + OCIErrStr());
         }
       }
 
@@ -301,7 +301,7 @@ public:
     if (d_queryResult == OCI_NO_DATA) return this;
 
     if (d_queryResult != OCI_SUCCESS && d_queryResult != OCI_SUCCESS_WITH_INFO) {
-      throw SSqlException("Cannot get next row: " + OCIErrStr());
+      throw SSqlException("Cannot get next row: " + d_query + string(": ") + OCIErrStr());
     }
 
     row.reserve(d_fnum);
@@ -347,7 +347,7 @@ public:
   
     if (d_release_stmt) {
       if (OCIStmtRelease(d_stmt, d_err, (text*)d_stmt_key, d_stmt_keysize, OCI_DEFAULT) != OCI_SUCCESS)
-        throw SSqlException("Could not release statement: " + OCIErrStr());
+        throw SSqlException("Could not release statement: " + d_query + string(": ") + OCIErrStr());
       d_stmt = NULL;
     }
     return this;
index 3e19fa8482e8166ace29e5fa95e49766f2d5e4b0..0bf4792729cf1da6afaeb761c95b965d8ff1296b 100644 (file)
@@ -34,7 +34,7 @@ public:
     string errmsg(PQresultErrorMessage(res));
     PQclear(res);
     if (status != PGRES_COMMAND_OK && status != PGRES_TUPLES_OK && status != PGRES_NONFATAL_ERROR) {
-      throw SSqlException("Fatal error during prepare: " + errmsg);
+      throw SSqlException("Fatal error during prepare: " + d_query + string(": ") + errmsg);
     } 
     paramValues=NULL;
     d_paridx=d_residx=d_resnum=0;
@@ -52,7 +52,7 @@ public:
   SSqlStatement* bind(const string& name, const std::string& value) {
     allocate();
     if (d_paridx>=d_nparams) 
-      throw SSqlException("Attempt to bind more parameters than query has");
+      throw SSqlException("Attempt to bind more parameters than query has: " + d_query);
     paramValues[d_paridx] = new char[value.size()+1];
     memset(paramValues[d_paridx], 0, sizeof(char)*(value.size()+1));
     value.copy(paramValues[d_paridx], value.size());
@@ -72,7 +72,7 @@ public:
       string errmsg(PQresultErrorMessage(d_res));
       PQclear(d_res);
       d_res = NULL;
-      throw SSqlException("Fatal error during query: " + errmsg);
+      throw SSqlException("Fatal error during query: " + d_query + string(": ") + errmsg);
     }
     d_resnum = PQntuples(d_res);
     return this;