/* Description This is a simple test program used to test fix for BUG 4274. Requirements/Test Environment XP MySQL v4.0.20a MyODBC v3.51 (post v3.51.08 bk ver used) Setup You want use the appropriate daemon and daemon options so from the XP console start the server like this; mysqld-nt --enable-named-pipe --socket=MyPIPE You should not need a my.cnf nor a my.ini for this test. Enjoy Peter Harvey 11.JUL.04 */ #include #include #include #include #include #include #define MAX_STR_LEN 1024 SQLHENV hEnv = SQL_NULL_HENV; SQLHDBC hDbc = SQL_NULL_HDBC; /* OPTION=8192 - we want to use named pipes for this test SOCKET=MyPIPE - we want to use a custom name for our pipe (the whole purpose we are here) */ SQLCHAR * szConnStrIn = "DRIVER=MySQL ODBC 3.51 Driver;SERVER=.;Database=test;OPTION=8192;SOCKET=MyPIPE;"; void do_errors( SQLRETURN nReturn, SQLSMALLINT nHandleType, SQLHANDLE h ) { if ( h ) { SQLSMALLINT nRec = 1; SQLCHAR szSQLState[6]; SQLINTEGER nNative; SQLCHAR szMessage[MAX_STR_LEN]; SQLSMALLINT nMessage; *szSQLState = '\0'; *szMessage = '\0'; while ( SQL_SUCCEEDED( SQLGetDiagRec( nHandleType, h, nRec, szSQLState, &nNative, szMessage, MAX_STR_LEN, &nMessage ) ) ) { szSQLState[5] = '\0'; szMessage[MAX_STR_LEN - 1] = '\0'; fprintf( stderr, "[%s] %d %s\n", szSQLState, nNative, szMessage ); nRec++; *szSQLState = '\0'; *szMessage = '\0'; } } if ( !SQL_SUCCEEDED( nReturn ) ) assert( "test failed" ); } void do_init() { SQLRETURN nReturn; SQLCHAR szConnStrOut[MAX_STR_LEN]; SQLSMALLINT nConnStrOut; nReturn = SQLAllocHandle( SQL_HANDLE_ENV, SQL_NULL_HENV, &hEnv ); do_errors( nReturn, SQL_HANDLE_ENV, hEnv ); nReturn = SQLSetEnvAttr( hEnv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0 ); do_errors( nReturn, SQL_HANDLE_ENV, hEnv ); nReturn = SQLAllocHandle( SQL_HANDLE_DBC, hEnv, &hDbc ); do_errors( nReturn, SQL_HANDLE_ENV, hEnv ); nReturn = SQLDriverConnect( hDbc, NULL, szConnStrIn, MAX_STR_LEN, szConnStrOut, MAX_STR_LEN, &nConnStrOut, SQL_DRIVER_NOPROMPT ); do_errors( nReturn, SQL_HANDLE_DBC, hDbc ); nReturn = SQLSetConnectAttr( hDbc, SQL_ATTR_AUTOCOMMIT, (SQLPOINTER)SQL_AUTOCOMMIT_ON, 0 ); do_errors( nReturn, SQL_HANDLE_DBC, hDbc ); } void do_fini() { SQLRETURN nReturn; nReturn = SQLDisconnect( hDbc ); do_errors( nReturn, SQL_HANDLE_DBC, hDbc ); if ( hDbc ) { nReturn = SQLFreeHandle( SQL_HANDLE_DBC, hDbc ); hDbc = SQL_NULL_HDBC; } if ( hEnv ) { nReturn = SQLFreeHandle( SQL_HANDLE_ENV, hEnv ); hEnv = SQL_NULL_HENV; } } int main(int argc, char **argv) { do_init(); do_fini(); }