Changeset: d35049eb70f2 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d35049eb70f2
Modified Files:
        clients/odbc/driver/ODBCDbc.c
        clients/odbc/driver/ODBCDbc.h
        clients/odbc/driver/SQLGetConnectAttr.c
        clients/odbc/driver/SQLGetStmtAttr.c
        clients/odbc/driver/SQLSetConnectAttr.c
        clients/odbc/driver/SQLSetStmtAttr.c
Branch: Aug2011
Log Message:

Get and set SQL_ATTR_METADATA_ID connection/statement attribute.
This changeset doesn't actually *do* anything with the value yet.


diffs (117 lines):

diff --git a/clients/odbc/driver/ODBCDbc.c b/clients/odbc/driver/ODBCDbc.c
--- a/clients/odbc/driver/ODBCDbc.c
+++ b/clients/odbc/driver/ODBCDbc.c
@@ -79,6 +79,7 @@ newODBCDbc(ODBCEnv *env)
 
        dbc->Connected = 0;
        dbc->sql_attr_autocommit = SQL_AUTOCOMMIT_ON;   /* default is 
autocommit */
+       dbc->sql_attr_metadata_id = SQL_FALSE;
        dbc->mid = NULL;
        dbc->major = 0;
        dbc->minor = 0;
diff --git a/clients/odbc/driver/ODBCDbc.h b/clients/odbc/driver/ODBCDbc.h
--- a/clients/odbc/driver/ODBCDbc.h
+++ b/clients/odbc/driver/ODBCDbc.h
@@ -66,6 +66,7 @@ typedef struct tODBCDRIVERDBC {
        char *dbname;           /* Database Name or NULL */
        int Connected;          /* 1 is Yes, 0 is No */
        SQLUINTEGER sql_attr_autocommit;
+       SQLUINTEGER sql_attr_metadata_id;
 
        /* MonetDB connection handle & status information */
        Mapi mid;               /* connection with server */
diff --git a/clients/odbc/driver/SQLGetConnectAttr.c 
b/clients/odbc/driver/SQLGetConnectAttr.c
--- a/clients/odbc/driver/SQLGetConnectAttr.c
+++ b/clients/odbc/driver/SQLGetConnectAttr.c
@@ -80,7 +80,7 @@ SQLGetConnectAttr_(ODBCDbc *dbc,
                *(SQLUINTEGER *) ValuePtr = 0;  /* no timeout */
                break;
        case SQL_ATTR_METADATA_ID:
-               *(SQLUINTEGER *) ValuePtr = SQL_FALSE;
+               *(SQLUINTEGER *) ValuePtr = dbc->sql_attr_metadata_id;
                break;
        case SQL_ATTR_ODBC_CURSORS:
                *(SQLUINTEGER *) ValuePtr = SQL_CUR_USE_IF_NEEDED;
diff --git a/clients/odbc/driver/SQLGetStmtAttr.c 
b/clients/odbc/driver/SQLGetStmtAttr.c
--- a/clients/odbc/driver/SQLGetStmtAttr.c
+++ b/clients/odbc/driver/SQLGetStmtAttr.c
@@ -147,12 +147,14 @@ SQLGetStmtAttr_(ODBCStmt *stmt,
                return SQLGetDescField_(stmt->ImplRowDescr, 0,
                                        SQL_DESC_ROWS_PROCESSED_PTR, ValuePtr,
                                        BufferLength, StringLengthPtr);
+       case SQL_ATTR_METADATA_ID:
+               *(SQLUINTEGER *) ValuePtr = stmt->Dbc->sql_attr_metadata_id;
+               break;
 
                /* TODO: implement requested behavior */
        case SQL_ATTR_ENABLE_AUTO_IPD:
        case SQL_ATTR_FETCH_BOOKMARK_PTR:
        case SQL_ATTR_KEYSET_SIZE:
-       case SQL_ATTR_METADATA_ID:
        case SQL_ATTR_QUERY_TIMEOUT:
        case SQL_ATTR_SIMULATE_CURSOR:
        case SQL_ATTR_USE_BOOKMARKS:
diff --git a/clients/odbc/driver/SQLSetConnectAttr.c 
b/clients/odbc/driver/SQLSetConnectAttr.c
--- a/clients/odbc/driver/SQLSetConnectAttr.c
+++ b/clients/odbc/driver/SQLSetConnectAttr.c
@@ -68,6 +68,22 @@ SQLSetConnectAttr_(ODBCDbc *dbc,
                        return SQL_ERROR;
                }
                return SQL_SUCCESS;
+       case SQL_ATTR_METADATA_ID:
+               switch ((SQLUINTEGER) (size_t) ValuePtr) {
+               case SQL_TRUE:
+               case SQL_FALSE:
+                       dbc->sql_attr_metadata_id = (SQLUINTEGER) (size_t) 
ValuePtr;
+#ifdef ODBCDEBUG
+                       ODBCLOG("SQLSetConnectAttr set metadata_id %s\n",
+                               dbc->sql_attr_metadata_id == SQL_TRUE ? "true" 
: "false");
+#endif
+                       break;
+               default:
+                       /* Invalid attribute value */
+                       addDbcError(dbc, "HY024", NULL, 0);
+                       return SQL_ERROR;
+               }
+               return SQL_SUCCESS;
 
                /* TODO: implement connection attribute behavior */
        case SQL_ATTR_ACCESS_MODE:
@@ -75,7 +91,6 @@ SQLSetConnectAttr_(ODBCDbc *dbc,
        case SQL_ATTR_CONNECTION_TIMEOUT:
        case SQL_ATTR_CURRENT_CATALOG:
        case SQL_ATTR_LOGIN_TIMEOUT:
-       case SQL_ATTR_METADATA_ID:
        case SQL_ATTR_ODBC_CURSORS:
        case SQL_ATTR_PACKET_SIZE:
        case SQL_ATTR_QUIET_MODE:
diff --git a/clients/odbc/driver/SQLSetStmtAttr.c 
b/clients/odbc/driver/SQLSetStmtAttr.c
--- a/clients/odbc/driver/SQLSetStmtAttr.c
+++ b/clients/odbc/driver/SQLSetStmtAttr.c
@@ -222,6 +222,18 @@ SQLSetStmtAttr_(ODBCStmt *stmt,
                return SQLSetDescField_(stmt->ImplRowDescr, 0,
                                        SQL_DESC_ROWS_PROCESSED_PTR, ValuePtr,
                                        StringLength);
+       case SQL_ATTR_METADATA_ID:
+               switch ((SQLUINTEGER) (size_t) ValuePtr) {
+               case SQL_TRUE:
+               case SQL_FALSE:
+                       break;
+               default:
+                       /* Invalid attribute value */
+                       addStmtError(stmt, "HY024", NULL, 0);
+                       return SQL_ERROR;
+               }
+               stmt->Dbc->sql_attr_metadata_id = (SQLUINTEGER) (size_t) 
ValuePtr;
+               break;
 
                /* TODO: implement requested behavior */
        case SQL_ATTR_ASYNC_ENABLE:
@@ -232,7 +244,6 @@ SQLSetStmtAttr_(ODBCStmt *stmt,
        case SQL_ATTR_KEYSET_SIZE:
        case SQL_ATTR_MAX_LENGTH:
        case SQL_ATTR_MAX_ROWS:
-       case SQL_ATTR_METADATA_ID:
        case SQL_ATTR_QUERY_TIMEOUT:
        case SQL_ATTR_ROW_NUMBER:
        case SQL_ATTR_SIMULATE_CURSOR:
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to