From d5ffb44823c2f7f51e98f9c2aacbfce94a88b52b Mon Sep 17 00:00:00 2001 From: Pieter Lexis Date: Mon, 30 Mar 2015 16:30:14 +0200 Subject: [PATCH] Output query on error for gpgsql and goracle backends --- modules/goraclebackend/soracle.cc | 42 +++++++++++++++---------------- modules/gpgsqlbackend/spgsql.cc | 6 ++--- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/modules/goraclebackend/soracle.cc b/modules/goraclebackend/soracle.cc index 42e675ed7..aafe54415 100644 --- a/modules/goraclebackend/soracle.cc +++ b/modules/goraclebackend/soracle.cc @@ -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_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; -- 2.49.0