Commit 40eb5495 authored by Hiroshi Inoue's avatar Hiroshi Inoue

1) Fix a bug in declare/fetch mode.

2) Suppress some error logs for the request to other drivers.
parent 50b5d4bf
...@@ -281,6 +281,9 @@ PGAPI_StmtError( HSTMT hstmt, ...@@ -281,6 +281,9 @@ PGAPI_StmtError( HSTMT hstmt,
case STMT_INVALID_OPTION_IDENTIFIER: case STMT_INVALID_OPTION_IDENTIFIER:
strcpy(szSqlState, "HY092"); strcpy(szSqlState, "HY092");
break; break;
case STMT_OPTION_NOT_FOR_THE_DRIVER:
strcpy(szSqlState, "HYC00");
break;
case STMT_EXEC_ERROR: case STMT_EXEC_ERROR:
default: default:
strcpy(szSqlState, "S1000"); strcpy(szSqlState, "S1000");
......
...@@ -209,6 +209,19 @@ set_statement_option(ConnectionClass *conn, ...@@ -209,6 +209,19 @@ set_statement_option(ConnectionClass *conn,
conn->stmtOptions.use_bookmarks = vParam; conn->stmtOptions.use_bookmarks = vParam;
break; break;
case 1227:
case 1228:
if (stmt)
{
stmt->errornumber = STMT_OPTION_NOT_FOR_THE_DRIVER;
stmt->errormsg = "The option may be for MS SQL Server(Set)";
}
else if (conn)
{
conn->errornumber = STMT_OPTION_NOT_FOR_THE_DRIVER;
conn->errormsg = "The option may be for MS SQL Server(Set)";
}
return SQL_ERROR;
default: default:
{ {
char option[64]; char option[64];
......
...@@ -102,6 +102,7 @@ struct QResultClass_ ...@@ -102,6 +102,7 @@ struct QResultClass_
/* status macros */ /* status macros */
#define QR_command_successful(self) ( !(self->status == PGRES_BAD_RESPONSE || self->status == PGRES_NONFATAL_ERROR || self->status == PGRES_FATAL_ERROR)) #define QR_command_successful(self) ( !(self->status == PGRES_BAD_RESPONSE || self->status == PGRES_NONFATAL_ERROR || self->status == PGRES_FATAL_ERROR))
#define QR_command_maybe_successful(self) ( !(self->status == PGRES_BAD_RESPONSE || self->status == PGRES_FATAL_ERROR))
#define QR_command_nonfatal(self) ( self->status == PGRES_NONFATAL_ERROR) #define QR_command_nonfatal(self) ( self->status == PGRES_NONFATAL_ERROR)
#define QR_end_tuples(self) ( self->status == PGRES_END_TUPLES) #define QR_end_tuples(self) ( self->status == PGRES_END_TUPLES)
#define QR_set_status(self, condition) ( self->status = condition ) #define QR_set_status(self, condition) ( self->status = condition )
......
...@@ -628,7 +628,7 @@ inolog("COLUMN_NULLABLE=%d\n", value); ...@@ -628,7 +628,7 @@ inolog("COLUMN_NULLABLE=%d\n", value);
break; break;
case SQL_COLUMN_OWNER_NAME: /* == SQL_DESC_SCHEMA_NAME */ case SQL_COLUMN_OWNER_NAME: /* == SQL_DESC_SCHEMA_NAME */
p = ""; p = fi && (fi->ti) ? fi->ti->schema : "";
break; break;
case SQL_COLUMN_PRECISION: /* in 2.x */ case SQL_COLUMN_PRECISION: /* in 2.x */
...@@ -744,6 +744,10 @@ inolog("COLUMN_TYPE=%d\n", value); ...@@ -744,6 +744,10 @@ inolog("COLUMN_TYPE=%d\n", value);
value = (fi && !fi->name[0] && !fi->alias[0]) ? SQL_UNNAMED : SQL_NAMED; value = (fi && !fi->name[0] && !fi->alias[0]) ? SQL_UNNAMED : SQL_NAMED;
break; break;
#endif /* ODBCVER */ #endif /* ODBCVER */
case 1212:
stmt->errornumber = STMT_OPTION_NOT_FOR_THE_DRIVER;
stmt->errormsg = "this request may be for MS SQL Server";
return SQL_ERROR;
default: default:
stmt->errornumber = STMT_INVALID_OPTION_IDENTIFIER; stmt->errornumber = STMT_INVALID_OPTION_IDENTIFIER;
stmt->errormsg = "ColAttribute for this type not implemented yet"; stmt->errormsg = "ColAttribute for this type not implemented yet";
...@@ -1293,9 +1297,10 @@ PGAPI_ExtendedFetch( ...@@ -1293,9 +1297,10 @@ PGAPI_ExtendedFetch(
/* increment the base row in the tuple cache */ /* increment the base row in the tuple cache */
QR_set_rowset_size(res, opts->rowset_size); QR_set_rowset_size(res, opts->rowset_size);
/* QR_inc_base(res, stmt->last_fetch_count); */ if (SC_is_fetchcursor(stmt))
/* Is inc_base right ? */ QR_inc_base(res, stmt->last_fetch_count);
res->base = stmt->rowset_start; else
res->base = stmt->rowset_start;
/* Physical Row advancement occurs for each row fetched below */ /* Physical Row advancement occurs for each row fetched below */
......
...@@ -79,6 +79,7 @@ typedef enum ...@@ -79,6 +79,7 @@ typedef enum
#define STMT_RETURN_NULL_WITHOUT_INDICATOR 29 #define STMT_RETURN_NULL_WITHOUT_INDICATOR 29
#define STMT_ERROR_IN_ROW 30 #define STMT_ERROR_IN_ROW 30
#define STMT_INVALID_DESCRIPTOR_IDENTIFIER 31 #define STMT_INVALID_DESCRIPTOR_IDENTIFIER 31
#define STMT_OPTION_NOT_FOR_THE_DRIVER 32
/* statement types */ /* statement types */
enum enum
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment