diff options
| author | Hiroshi Inoue | 2021-04-07 09:36:40 +0000 |
|---|---|---|
| committer | Hiroshi Inoue | 2021-04-21 12:05:15 +0000 |
| commit | c7908d73c6a5ab7a3f69cd43dc47b0593d7aa178 (patch) | |
| tree | 23bd8bc132f0168b6701bd5cf0de2587605f6625 /statement.c | |
| parent | 9273f63aecbb4fc85821a5aad1b84eaa590c07fb (diff) | |
Let SQLDescribeCol() use parsed result when the current executed result is NULL.
This change fixes the diff of prepare-test regression test reported by Mangold Fabian.
Diffstat (limited to 'statement.c')
| -rw-r--r-- | statement.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/statement.c b/statement.c index eea2c86..d79d323 100644 --- a/statement.c +++ b/statement.c @@ -1134,7 +1134,7 @@ SC_describe(StatementClass *self) QResultClass *res; MYLOG(0, "entering status = %d\n", self->status); - res = SC_get_Parsed(self); + res = SC_get_ExecdOrParsed(self); if (NULL != res) { num_fields = QR_NumResultCols(res); @@ -1168,7 +1168,7 @@ MYLOG(0, " preprocess: status = READY\n"); self->status = STMT_DESCRIBED; break; } - if (res = SC_get_Parsed(self), NULL != res) + if (res = SC_get_ExecdOrParsed(self), NULL != res) { num_fields = QR_NumResultCols(res); return num_fields; @@ -1215,7 +1215,7 @@ SC_clear_error(StatementClass *self) self->pgerror = NULL; } self->diag_row_count = 0; - if (res = SC_get_Curres(self), res) + if (res = SC_get_ExecdOrParsed(self), res) { QR_set_message(res, NULL); QR_set_notice(res, NULL); @@ -1291,7 +1291,7 @@ static const struct static PG_ErrorInfo * SC_create_errorinfo(const StatementClass *self, PG_ErrorInfo *pgerror_fail_safe) { - QResultClass *res = SC_get_Curres(self); + QResultClass *res = SC_get_ExecdOrParsed(self); ConnectionClass *conn = SC_get_conn(self); Int4 errornum; size_t pos; @@ -1301,8 +1301,6 @@ SC_create_errorinfo(const StatementClass *self, PG_ErrorInfo *pgerror_fail_safe) char *ermsg = NULL, *sqlstate = NULL; PG_ErrorInfo *pgerror; - if (!res) - res = SC_get_Parsed(self); if (self->pgerror) return self->pgerror; errornum = self->__error_number; @@ -1491,7 +1489,7 @@ MYLOG(DETAIL_LOG_LEVEL, "entering %p->%p check=%i\n", from_res ,self, check); ER_Destructor(self->pgerror); self->pgerror = NULL; } - self_res = SC_get_Curres(self); + self_res = SC_get_ExecdOrParsed(self); if (!self_res) return; if (self_res == from_res) return; QR_add_message(self_res, QR_get_message(from_res)); @@ -1539,8 +1537,8 @@ MYLOG(DETAIL_LOG_LEVEL, "entering %p->%p check=%i\n", from ,self, check); ER_Destructor(self->pgerror); self->pgerror = NULL; } - self_res = SC_get_Curres(self); - from_res = SC_get_Curres(from); + self_res = SC_get_ExecdOrParsed(self); + from_res = SC_get_ExecdOrParsed(from); if (!self_res || !from_res) return; QR_add_message(self_res, QR_get_message(from_res)); |
