in driver/options.cc [42:156]
static SQLRETURN set_constmt_attr(SQLSMALLINT HandleType,
SQLHANDLE Handle,
STMT_OPTIONS *options,
SQLINTEGER Attribute,
SQLPOINTER ValuePtr)
{
switch (Attribute)
{
case SQL_ATTR_ASYNC_ENABLE:
if (ValuePtr == (SQLPOINTER) SQL_ASYNC_ENABLE_ON)
return set_handle_error(HandleType,Handle,MYERR_01S02,
"Doesn't support asynchronous, changed to default",0);
break;
case SQL_ATTR_CURSOR_SENSITIVITY:
if (ValuePtr != (SQLPOINTER) SQL_UNSPECIFIED)
{
return set_handle_error(HandleType,Handle,MYERR_01S02,
"Option value changed to default cursor sensitivity(unspecified)",0);
}
break;
case SQL_ATTR_CURSOR_TYPE:
if (((STMT *)Handle)->dbc->ds.opt_FORWARD_CURSOR)
{
options->cursor_type= SQL_CURSOR_FORWARD_ONLY;
if (ValuePtr != (SQLPOINTER)SQL_CURSOR_FORWARD_ONLY)
return set_handle_error(HandleType,Handle,MYERR_01S02,
"Forcing the use of forward-only cursor)",0);
}
else if (((STMT *)Handle)->dbc->ds.opt_DYNAMIC_CURSOR)
{
if (ValuePtr != (SQLPOINTER)SQL_CURSOR_KEYSET_DRIVEN)
options->cursor_type= (SQLUINTEGER)(SQLULEN)ValuePtr;
else
{
options->cursor_type= SQL_CURSOR_STATIC;
return set_handle_error(HandleType,Handle,MYERR_01S02,
"Option value changed to default static cursor",0);
}
}
else
{
if (ValuePtr == (SQLPOINTER)SQL_CURSOR_FORWARD_ONLY ||
ValuePtr == (SQLPOINTER)SQL_CURSOR_STATIC)
options->cursor_type= (SQLUINTEGER)(SQLULEN)ValuePtr;
else
{
options->cursor_type= SQL_CURSOR_STATIC;
return set_handle_error(HandleType,Handle,MYERR_01S02,
"Option value changed to default static cursor",0);
}
}
break;
case SQL_ATTR_MAX_LENGTH:
options->max_length= (SQLULEN) ValuePtr;
break;
case SQL_ATTR_MAX_ROWS:
options->max_rows= (SQLULEN) ValuePtr;
break;
case SQL_ATTR_METADATA_ID:
if (ValuePtr == (SQLPOINTER) SQL_TRUE)
return set_handle_error(HandleType,Handle,MYERR_01S02,
"Doesn't support SQL_ATTR_METADATA_ID to true, changed to default",0);
break;
case SQL_ATTR_RETRIEVE_DATA:
options->retrieve_data = (ValuePtr != (SQLPOINTER)SQL_RD_OFF);
break;
case SQL_ATTR_SIMULATE_CURSOR:
if (ValuePtr != (SQLPOINTER) SQL_SC_TRY_UNIQUE)
return set_handle_error(HandleType,Handle,MYERR_01S02,
"Option value changed to default cursor simulation",0);
break;
case 1226:/* MS SQL Server Extension */
case 1227:
case 1228:
break;
case SQL_ATTR_USE_BOOKMARKS:
if (ValuePtr == (SQLPOINTER) SQL_UB_VARIABLE ||
ValuePtr == (SQLPOINTER) SQL_UB_ON)
options->bookmarks= (SQLUINTEGER) SQL_UB_VARIABLE;
else
options->bookmarks= (SQLUINTEGER) SQL_UB_OFF;
break;
case SQL_ATTR_FETCH_BOOKMARK_PTR:
options->bookmark_ptr = ValuePtr;
break;
case SQL_ATTR_QUERY_TIMEOUT:
/* Do something only if the handle is STMT */
if (HandleType == SQL_HANDLE_STMT)
{
return set_query_timeout((STMT*)Handle, (SQLULEN)ValuePtr);
}
break;
case SQL_ATTR_KEYSET_SIZE:
case SQL_ATTR_CONCURRENCY:
case SQL_ATTR_NOSCAN:
default:
/* ignored */
break;
}
return SQL_SUCCESS;
}