OSDN Git Service

1) Fix a bug in declare/fetch mode.
authorHiroshi Inoue <inoue@tpf.co.jp>
Fri, 12 Apr 2002 08:03:12 +0000 (08:03 +0000)
committerHiroshi Inoue <inoue@tpf.co.jp>
Fri, 12 Apr 2002 08:03:12 +0000 (08:03 +0000)
2) Suppress some error logs for the request to other drivers.

src/interfaces/odbc/environ.c
src/interfaces/odbc/options.c
src/interfaces/odbc/qresult.h
src/interfaces/odbc/results.c
src/interfaces/odbc/statement.h

index 6de5c50..7c8f80d 100644 (file)
@@ -281,6 +281,9 @@ PGAPI_StmtError(    HSTMT hstmt,
                        case STMT_INVALID_OPTION_IDENTIFIER:
                                strcpy(szSqlState, "HY092");
                                break;
+                       case STMT_OPTION_NOT_FOR_THE_DRIVER:
+                               strcpy(szSqlState, "HYC00");
+                               break;
                        case STMT_EXEC_ERROR:
                        default:
                                strcpy(szSqlState, "S1000");
index d560ff4..ab974c3 100644 (file)
@@ -209,6 +209,19 @@ set_statement_option(ConnectionClass *conn,
                                conn->stmtOptions.use_bookmarks = vParam;
                        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:
                        {
                                char            option[64];
index 1bf1ce9..b313cbc 100644 (file)
@@ -102,6 +102,7 @@ struct QResultClass_
 
 /* 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_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_end_tuples(self)                                    ( self->status == PGRES_END_TUPLES)
 #define QR_set_status(self, condition)         ( self->status = condition )
index 517d5a2..5f78ba9 100644 (file)
@@ -628,7 +628,7 @@ inolog("COLUMN_NULLABLE=%d\n", value);
                        break;
 
                case SQL_COLUMN_OWNER_NAME: /* == SQL_DESC_SCHEMA_NAME */
-                       p = "";
+                       p = fi && (fi->ti) ? fi->ti->schema : "";
                        break;
 
                case SQL_COLUMN_PRECISION: /* in 2.x */
@@ -744,6 +744,10 @@ inolog("COLUMN_TYPE=%d\n", value);
                        value = (fi && !fi->name[0] && !fi->alias[0]) ? SQL_UNNAMED : SQL_NAMED;
                        break;
 #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:
                        stmt->errornumber = STMT_INVALID_OPTION_IDENTIFIER;
                        stmt->errormsg = "ColAttribute for this type not implemented yet";
@@ -1293,9 +1297,10 @@ PGAPI_ExtendedFetch(
 
        /* increment the base row in the tuple cache */
        QR_set_rowset_size(res, opts->rowset_size);
-       /* QR_inc_base(res, stmt->last_fetch_count); */
-       /* Is inc_base right ? */
-       res->base = stmt->rowset_start;
+       if (SC_is_fetchcursor(stmt))
+               QR_inc_base(res, stmt->last_fetch_count);
+       else
+               res->base = stmt->rowset_start;
 
        /* Physical Row advancement occurs for each row fetched below */
 
index 65fa088..e0a01b7 100644 (file)
@@ -79,6 +79,7 @@ typedef enum
 #define STMT_RETURN_NULL_WITHOUT_INDICATOR                             29
 #define STMT_ERROR_IN_ROW                                              30
 #define STMT_INVALID_DESCRIPTOR_IDENTIFIER                             31
+#define STMT_OPTION_NOT_FOR_THE_DRIVER                                 32
 
 /* statement types */
 enum