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