From a2f3932fd11c1a288b2e30fb9da1a012e10a3cec Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Thu, 19 Mar 2009 00:16:43 +0000 Subject: [PATCH] 2009-03-19 01:14 UTC+0100 Viktor Szakats (harbour.01 syenar hu) * contrib/hbmysql/mysql.c * contrib/hbmysql/tmysql.prg * Renamed all functions to standard mysql equivalents. Please update your code and turn off old function names with -DHB_MYSQL_LEGACY_LEVEL_OFF to test for success. Legacy function names will be removed from Harbour in the next release. This move allows to use hbmysql and hbodbc in the same app. SQLAND() has to be replaced with HB_BITAND(), be aware that latter will RTE when non-numeric var is passed, while SQLAND() was silently ignoring it. Changed functions names: SQLVERSION() => mysql_get_server_version() SQLCONNECT() => mysql_real_connect() SQLCLOSE() => mysql_close() SQLCOMMIT() => mysql_commit() SQLROLLBACK() => mysql_rollback() SQLSELECTD() => mysql_select_db() SQLQUERY() => mysql_query() SQLSTORER() => mysql_store_result() SQLUSERES() => mysql_use_result() SQLFREER() => mysql_free_result() SQLFETCHR() => mysql_fetch_row() SQLDATAS() => mysql_data_seek() SQLNROWS() => mysql_num_rows() SQLFETCHF() => mysql_fetch_field() SQLFSEEK() => mysql_field_seek() SQLNUMFI() => mysql_num_fields() SQLFICOU() => mysql_field_count() SQLLISTF() => mysql_list_fields() SQLGETERR() => mysql_error() SQLLISTDB() => mysql_list_dbs() SQLLISTTBL() => mysql_list_tables() SQLAFFROWS() => mysql_affected_rows() SQLHOSTINFO() => mysql_get_host_info() SQLSRVINFO() => mysql_get_server_info() DATATOSQL() => mysql_escape_string() FILETOSQLBINARY() => mysql_escape_string_from_file() SQLAND() => hb_bitAnd() * source/vm/maindll.c * source/vm/maindllh.c * source/vm/maindllp.c * contrib/hbodbc/odbc.c * Minor formatting. --- harbour/ChangeLog | 47 +++++++++++++ harbour/contrib/hbmysql/mysql.c | 103 +++++++++++++++++++---------- harbour/contrib/hbmysql/tmysql.prg | 102 ++++++++++++++-------------- harbour/contrib/hbodbc/odbc.c | 2 +- harbour/source/vm/maindll.c | 10 +-- harbour/source/vm/maindllh.c | 4 +- harbour/source/vm/maindllp.c | 4 +- 7 files changed, 176 insertions(+), 96 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 998605038a..84e873d4a7 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,53 @@ 2009-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org) */ +2009-03-19 01:14 UTC+0100 Viktor Szakats (harbour.01 syenar hu) + * contrib/hbmysql/mysql.c + * contrib/hbmysql/tmysql.prg + * Renamed all functions to standard mysql equivalents. + Please update your code and turn off old function + names with -DHB_MYSQL_LEGACY_LEVEL_OFF to test for + success. Legacy function names will be removed from + Harbour in the next release. This move allows to use + hbmysql and hbodbc in the same app. + SQLAND() has to be replaced with HB_BITAND(), be aware + that latter will RTE when non-numeric var is passed, + while SQLAND() was silently ignoring it. + Changed functions names: + SQLVERSION() => mysql_get_server_version() + SQLCONNECT() => mysql_real_connect() + SQLCLOSE() => mysql_close() + SQLCOMMIT() => mysql_commit() + SQLROLLBACK() => mysql_rollback() + SQLSELECTD() => mysql_select_db() + SQLQUERY() => mysql_query() + SQLSTORER() => mysql_store_result() + SQLUSERES() => mysql_use_result() + SQLFREER() => mysql_free_result() + SQLFETCHR() => mysql_fetch_row() + SQLDATAS() => mysql_data_seek() + SQLNROWS() => mysql_num_rows() + SQLFETCHF() => mysql_fetch_field() + SQLFSEEK() => mysql_field_seek() + SQLNUMFI() => mysql_num_fields() + SQLFICOU() => mysql_field_count() + SQLLISTF() => mysql_list_fields() + SQLGETERR() => mysql_error() + SQLLISTDB() => mysql_list_dbs() + SQLLISTTBL() => mysql_list_tables() + SQLAFFROWS() => mysql_affected_rows() + SQLHOSTINFO() => mysql_get_host_info() + SQLSRVINFO() => mysql_get_server_info() + DATATOSQL() => mysql_escape_string() + FILETOSQLBINARY() => mysql_escape_string_from_file() + SQLAND() => hb_bitAnd() + + * source/vm/maindll.c + * source/vm/maindllh.c + * source/vm/maindllp.c + * contrib/hbodbc/odbc.c + * Minor formatting. + 2009-03-18 20:17 UTC+0100 Viktor Szakats (harbour.01 syenar hu) * source/vm/Makefile + source/vm/maindllp diff --git a/harbour/contrib/hbmysql/mysql.c b/harbour/contrib/hbmysql/mysql.c index bd35256e01..f0ba068bcd 100644 --- a/harbour/contrib/hbmysql/mysql.c +++ b/harbour/contrib/hbmysql/mysql.c @@ -70,7 +70,7 @@ #include "mysql.h" /* NOTE: OS/2 EMX port of MySQL needs libmysqlclient.a from 3.21.33b build which has st and mt - versions of client library. I'm using ST version since harbour is single threaded. + versions of client library. I'm using ST version since harbour is single threaded. You need also .h files from same distribution. */ /* TODO: Use hb_retptrGC() */ @@ -78,7 +78,7 @@ #define HB_PARPTR( n ) hb_parptr( n ) #define HB_RETPTR( n ) hb_retptr( n ) -HB_FUNC( SQLVERSION ) /* long mysql_get_server_version( MYSQL * ) */ +HB_FUNC( MYSQL_GET_SERVER_VERSION ) /* long mysql_get_server_version( MYSQL * ) */ { #if MYSQL_VERSION_ID > 32399 hb_retnl( ( long ) mysql_get_server_version( ( MYSQL * ) HB_PARPTR( 1 ) ) ); @@ -96,7 +96,7 @@ HB_FUNC( SQLVERSION ) /* long mysql_get_server_version( MYSQL * ) */ #endif } -HB_FUNC( SQLCONNECT ) /* MYSQL *mysql_real_connect(MYSQL*, char * host, char * user, char * password, char * db, uint port, char *, uint flags) */ +HB_FUNC( MYSQL_REAL_CONNECT ) /* MYSQL * mysql_real_connect( MYSQL *, char * host, char * user, char * password, char * db, uint port, char *, uint flags ) */ { const char * szHost = hb_parc( 1 ); const char * szUser = hb_parc( 2 ); @@ -126,12 +126,12 @@ HB_FUNC( SQLCONNECT ) /* MYSQL *mysql_real_connect(MYSQL*, char * host, char * u #endif } -HB_FUNC( SQLCLOSE ) /* void mysql_close(MYSQL *mysql) */ +HB_FUNC( MYSQL_CLOSE ) /* void mysql_close( MYSQL * mysql ) */ { mysql_close( ( MYSQL * ) HB_PARPTR( 1 ) ); } -HB_FUNC( SQLCOMMIT ) /* bool mysql_commit(MYSQL *mysql) */ +HB_FUNC( MYSQL_COMMIT ) /* bool mysql_commit( MYSQL * mysql ) */ { #if MYSQL_VERSION_ID >= 40100 hb_retnl( ( long ) mysql_commit( ( MYSQL * ) HB_PARPTR( 1 ) ) ); @@ -140,7 +140,7 @@ HB_FUNC( SQLCOMMIT ) /* bool mysql_commit(MYSQL *mysql) */ #endif } -HB_FUNC( SQLROLLBACK ) /* bool mysql_rollback(MYSQL *mysql) */ +HB_FUNC( MYSQL_ROLLBACK ) /* bool mysql_rollback( MYSQL * mysql ) */ { #if MYSQL_VERSION_ID >= 40100 hb_retnl( ( long ) mysql_rollback( ( MYSQL * ) HB_PARPTR( 1 ) ) ); @@ -149,32 +149,32 @@ HB_FUNC( SQLROLLBACK ) /* bool mysql_rollback(MYSQL *mysql) */ #endif } -HB_FUNC( SQLSELECTD ) /* int mysql_select_db(MYSQL *, char *) */ +HB_FUNC( MYSQL_SELECT_DB ) /* int mysql_select_db( MYSQL *, char * ) */ { hb_retnl( ( long ) mysql_select_db( ( MYSQL * ) HB_PARPTR( 1 ), ( const char * ) hb_parc( 2 ) ) ); } -HB_FUNC( SQLQUERY ) /* int mysql_query(MYSQL *, char *) */ +HB_FUNC( MYSQL_QUERY ) /* int mysql_query( MYSQL *, char * ) */ { hb_retnl( ( long ) mysql_query( ( MYSQL * ) HB_PARPTR( 1 ), hb_parc( 2 ) ) ); } -HB_FUNC( SQLSTORER ) /* MYSQL_RES *mysql_store_result( MYSQL * ) */ +HB_FUNC( MYSQL_STORE_RESULT ) /* MYSQL_RES * mysql_store_result( MYSQL * ) */ { HB_RETPTR( ( void * ) mysql_store_result( ( MYSQL * ) HB_PARPTR( 1 ) ) ); } -HB_FUNC( SQLUSERES ) /* MYSQL_RES *mysql_use_result( MYSQL * ) */ +HB_FUNC( MYSQL_USE_RESULT ) /* MYSQL_RES * mysql_use_result( MYSQL * ) */ { HB_RETPTR( ( void * ) mysql_use_result( ( MYSQL * ) HB_PARPTR( 1 ) ) ); } -HB_FUNC( SQLFREER ) /* void mysql_free_result(MYSQL_RES *) */ +HB_FUNC( MYSQL_FREE_RESULT ) /* void mysql_free_result( MYSQL_RES * ) */ { mysql_free_result( ( MYSQL_RES * ) HB_PARPTR( 1 ) ); } -HB_FUNC( SQLFETCHR ) /* MYSQL_ROW *mysql_fetch_row(MYSQL_RES *) */ +HB_FUNC( MYSQL_FETCH_ROW ) /* MYSQL_ROW * mysql_fetch_row( MYSQL_RES * ) */ { MYSQL_RES * mresult = ( MYSQL_RES * ) HB_PARPTR( 1 ); int num_fields = mysql_num_fields( mresult ); @@ -192,17 +192,17 @@ HB_FUNC( SQLFETCHR ) /* MYSQL_ROW *mysql_fetch_row(MYSQL_RES *) */ hb_itemReturnRelease( aRow ); } -HB_FUNC( SQLDATAS ) /* void mysql_data_seek(MYSQL_RES *, unsigned int) */ +HB_FUNC( MYSQL_DATA_SEEK ) /* void mysql_data_seek( MYSQL_RES *, unsigned int ) */ { mysql_data_seek( ( MYSQL_RES * ) HB_PARPTR( 1 ), ( unsigned int ) hb_parni( 2 ) ); } -HB_FUNC( SQLNROWS ) /* my_ulongulong mysql_num_rows(MYSQL_RES *) */ +HB_FUNC( MYSQL_NUM_ROWS ) /* my_ulongulong mysql_num_rows( MYSQL_RES * ) */ { hb_retnint( mysql_num_rows( ( ( MYSQL_RES * ) HB_PARPTR( 1 ) ) ) ); } -HB_FUNC( SQLFETCHF ) /* MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *) */ +HB_FUNC( MYSQL_FETCH_FIELD ) /* MYSQL_FIELD * mysql_fetch_field( MYSQL_RES * ) */ { /* NOTE: field structure of MySQL has 8 members as of MySQL 3.22.x */ PHB_ITEM aField = hb_itemArrayNew( 8 ); @@ -223,36 +223,36 @@ HB_FUNC( SQLFETCHF ) /* MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *) */ hb_itemReturnRelease( aField ); } -HB_FUNC( SQLFSEEK ) /* MYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES *, MYSQL_FIELD_OFFSET) */ +HB_FUNC( MYSQL_FIELD_SEEK ) /* MYSQL_FIELD_OFFSET mysql_field_seek( MYSQL_RES *, MYSQL_FIELD_OFFSET ) */ { mysql_field_seek( ( MYSQL_RES * ) HB_PARPTR( 1 ), ( MYSQL_FIELD_OFFSET ) hb_parni( 2 ) ); } -HB_FUNC( SQLNUMFI ) /* unsigned int mysql_num_fields(MYSQL_RES *) */ +HB_FUNC( MYSQL_NUM_FIELDS ) /* unsigned int mysql_num_fields( MYSQL_RES * ) */ { hb_retnl( mysql_num_fields( ( ( MYSQL_RES * ) HB_PARPTR( 1 ) ) ) ); } #if MYSQL_VERSION_ID > 32200 -HB_FUNC( SQLFICOU ) /* unsigned int mysql_field_count( MYSQL * ) */ +HB_FUNC( MYSQL_FIELD_COUNT ) /* unsigned int mysql_field_count( MYSQL * ) */ { hb_retnl( mysql_field_count( ( ( MYSQL * ) HB_PARPTR( 1 ) ) ) ); } #endif -HB_FUNC( SQLLISTF ) /* MYSQL_RES *mysql_list_fields(MYSQL *, char *); */ +HB_FUNC( MYSQL_LIST_FIELDS ) /* MYSQL_RES * mysql_list_fields( MYSQL *, char * ); */ { hb_retptr( mysql_list_fields( ( MYSQL * ) HB_PARPTR( 1 ), hb_parc( 2 ), NULL ) ); } -HB_FUNC( SQLGETERR ) /* char *mysql_error( MYSQL * ); */ +HB_FUNC( MYSQL_ERROR ) /* char * mysql_error( MYSQL * ); */ { hb_retc( mysql_error( ( MYSQL * ) HB_PARPTR( 1 ) ) ); } -HB_FUNC( SQLLISTDB ) /* MYSQL_RES * mysql_list_dbs(MYSQL *, char * wild); */ +HB_FUNC( MYSQL_LIST_DBS ) /* MYSQL_RES * mysql_list_dbs( MYSQL *, char * wild ); */ { MYSQL * mysql = ( MYSQL * ) HB_PARPTR( 1 ); MYSQL_RES * mresult = mysql_list_dbs( mysql, NULL ); @@ -271,7 +271,7 @@ HB_FUNC( SQLLISTDB ) /* MYSQL_RES * mysql_list_dbs(MYSQL *, char * wild); */ hb_itemReturnRelease( aDBs ); } -HB_FUNC( SQLLISTTBL ) /* MYSQL_RES * mysql_list_tables(MYSQL *, char * wild); */ +HB_FUNC( MYSQL_LIST_TABLES ) /* MYSQL_RES * mysql_list_tables( MYSQL *, char * wild ); */ { MYSQL * mysql = ( MYSQL * ) HB_PARPTR( 1 ); char * cWild = hb_parc( 2 ); @@ -290,30 +290,24 @@ HB_FUNC( SQLLISTTBL ) /* MYSQL_RES * mysql_list_tables(MYSQL *, char * wild); */ hb_itemReturnRelease( aTables ); } -/* returns bitwise and of first parameter with second */ -HB_FUNC( SQLAND ) -{ - hb_retnl( hb_parnl( 1 ) & hb_parnl( 2 ) ); -} - -HB_FUNC( SQLAFFROWS ) +HB_FUNC( MYSQL_AFFECTED_ROWS ) { hb_retnl( ( long ) mysql_affected_rows( ( MYSQL * ) HB_PARPTR( 1 ) ) ); } -HB_FUNC( SQLHOSTINFO ) +HB_FUNC( MYSQL_GET_HOST_INFO ) { hb_retc( mysql_get_host_info( ( MYSQL * ) HB_PARPTR( 1 ) ) ); } -HB_FUNC( SQLSRVINFO ) +HB_FUNC( MYSQL_GET_SERVER_INFO ) { hb_retc( mysql_get_server_info( ( MYSQL * ) HB_PARPTR( 1 ) ) ); } -HB_FUNC( DATATOSQL ) +HB_FUNC( MYSQL_ESCAPE_STRING ) { - const char * from = hb_parc( 1 ); + const char * from = hb_parcx( 1 ); int iSize = hb_parclen( 1 ); char * buffer = ( char * ) hb_xgrab( iSize * 2 + 1 ); iSize = mysql_escape_string( buffer, from, iSize ); @@ -328,8 +322,8 @@ static char * filetoBuff( char * fname, int * size ) if( handle != FS_ERROR ) { *size = ( int ) hb_fsSeek( handle, 0, FS_END ); - *size -= ( int ) hb_fsSeek( handle, 0, FS_SET ); - buffer = ( char * ) hb_xgrab( * size + 1 ); + hb_fsSeek( handle, 0, FS_SET ); + buffer = ( char * ) hb_xgrab( *size + 1 ); *size = hb_fsReadLarge( handle, ( BYTE * ) buffer, *size ); buffer[ *size ] = '\0'; hb_fsClose( handle ); @@ -340,7 +334,7 @@ static char * filetoBuff( char * fname, int * size ) return buffer; } -HB_FUNC( FILETOSQLBINARY ) +HB_FUNC( MYSQL_ESCAPE_STRING_FROM_FILE ) { int iSize; char * from = filetoBuff( hb_parc( 1 ), &iSize ); @@ -353,3 +347,40 @@ HB_FUNC( FILETOSQLBINARY ) hb_xfree( from ); } } + +#if !defined(HB_MYSQL_LEGACY_LEVEL_OFF) + +HB_FUNC_EXTERN( MYSQL_GET_SERVER_VERSION ); HB_FUNC( SQLVERSION ) { HB_FUNC_EXEC( MYSQL_GET_SERVER_VERSION ); } +HB_FUNC_EXTERN( MYSQL_REAL_CONNECT ); HB_FUNC( SQLCONNECT ) { HB_FUNC_EXEC( MYSQL_REAL_CONNECT ); } +HB_FUNC_EXTERN( MYSQL_CLOSE ); HB_FUNC( SQLCLOSE ) { HB_FUNC_EXEC( MYSQL_CLOSE ); } +HB_FUNC_EXTERN( MYSQL_COMMIT ); HB_FUNC( SQLCOMMIT ) { HB_FUNC_EXEC( MYSQL_COMMIT ); } +HB_FUNC_EXTERN( MYSQL_ROLLBACK ); HB_FUNC( SQLROLLBACK ) { HB_FUNC_EXEC( MYSQL_ROLLBACK ); } +HB_FUNC_EXTERN( MYSQL_SELECT_DB ); HB_FUNC( SQLSELECTD ) { HB_FUNC_EXEC( MYSQL_SELECT_DB ); } +HB_FUNC_EXTERN( MYSQL_QUERY ); HB_FUNC( SQLQUERY ) { HB_FUNC_EXEC( MYSQL_QUERY ); } +HB_FUNC_EXTERN( MYSQL_STORE_RESULT ); HB_FUNC( SQLSTORER ) { HB_FUNC_EXEC( MYSQL_STORE_RESULT ); } +HB_FUNC_EXTERN( MYSQL_USE_RESULT ); HB_FUNC( SQLUSERES ) { HB_FUNC_EXEC( MYSQL_USE_RESULT ); } +HB_FUNC_EXTERN( MYSQL_FREE_RESULT ); HB_FUNC( SQLFREER ) { HB_FUNC_EXEC( MYSQL_FREE_RESULT ); } +HB_FUNC_EXTERN( MYSQL_FETCH_ROW ); HB_FUNC( SQLFETCHR ) { HB_FUNC_EXEC( MYSQL_FETCH_ROW ); } +HB_FUNC_EXTERN( MYSQL_DATA_SEEK ); HB_FUNC( SQLDATAS ) { HB_FUNC_EXEC( MYSQL_DATA_SEEK ); } +HB_FUNC_EXTERN( MYSQL_NUM_ROWS ); HB_FUNC( SQLNROWS ) { HB_FUNC_EXEC( MYSQL_NUM_ROWS ); } +HB_FUNC_EXTERN( MYSQL_FETCH_FIELD ); HB_FUNC( SQLFETCHF ) { HB_FUNC_EXEC( MYSQL_FETCH_FIELD ); } +HB_FUNC_EXTERN( MYSQL_FIELD_SEEK ); HB_FUNC( SQLFSEEK ) { HB_FUNC_EXEC( MYSQL_FIELD_SEEK ); } +HB_FUNC_EXTERN( MYSQL_NUM_FIELDS ); HB_FUNC( SQLNUMFI ) { HB_FUNC_EXEC( MYSQL_NUM_FIELDS ); } +HB_FUNC_EXTERN( MYSQL_FIELD_COUNT ); HB_FUNC( SQLFICOU ) { HB_FUNC_EXEC( MYSQL_FIELD_COUNT ); } +HB_FUNC_EXTERN( MYSQL_LIST_FIELDS ); HB_FUNC( SQLLISTF ) { HB_FUNC_EXEC( MYSQL_LIST_FIELDS ); } +HB_FUNC_EXTERN( MYSQL_ERROR ); HB_FUNC( SQLGETERR ) { HB_FUNC_EXEC( MYSQL_ERROR ); } +HB_FUNC_EXTERN( MYSQL_LIST_DBS ); HB_FUNC( SQLLISTDB ) { HB_FUNC_EXEC( MYSQL_LIST_DBS ); } +HB_FUNC_EXTERN( MYSQL_LIST_TABLES ); HB_FUNC( SQLLISTTBL ) { HB_FUNC_EXEC( MYSQL_LIST_TABLES ); } +HB_FUNC_EXTERN( MYSQL_AFFECTED_ROWS ); HB_FUNC( SQLAFFROWS ) { HB_FUNC_EXEC( MYSQL_AFFECTED_ROWS ); } +HB_FUNC_EXTERN( MYSQL_GET_HOST_INFO ); HB_FUNC( SQLHOSTINFO ) { HB_FUNC_EXEC( MYSQL_GET_HOST_INFO ); } +HB_FUNC_EXTERN( MYSQL_GET_SERVER_INFO ); HB_FUNC( SQLSRVINFO ) { HB_FUNC_EXEC( MYSQL_GET_SERVER_INFO ); } +HB_FUNC_EXTERN( MYSQL_ESCAPE_STRING ); HB_FUNC( DATATOSQL ) { HB_FUNC_EXEC( MYSQL_ESCAPE_STRING ); } +HB_FUNC_EXTERN( MYSQL_ESCAPE_STRING_FROM_FILE ); HB_FUNC( FILETOSQLBINARY ) { HB_FUNC_EXEC( MYSQL_ESCAPE_STRING_FROM_FILE ); } + +/* NOTE: Use hb_bitAnd() instead. Notice that latter will RTE on wrong arguments. */ +HB_FUNC( SQLAND ) +{ + hb_retnl( hb_parnl( 1 ) & hb_parnl( 2 ) ); +} + +#endif diff --git a/harbour/contrib/hbmysql/tmysql.prg b/harbour/contrib/hbmysql/tmysql.prg index aa23f3d084..9573042ab2 100644 --- a/harbour/contrib/hbmysql/tmysql.prg +++ b/harbour/contrib/hbmysql/tmysql.prg @@ -244,8 +244,8 @@ METHOD MakePrimaryKeyWhere() CLASS TMySQLRow for nI := 1 to Len(::aFieldStruct) // search for fields part of a primary key - if (sqlAND(::aFieldStruct[nI][MYSQL_FS_FLAGS], PRI_KEY_FLAG) == PRI_KEY_FLAG) .OR.; - (sqlAND(::aFieldStruct[nI][MYSQL_FS_FLAGS], MULTIPLE_KEY_FLAG) == MULTIPLE_KEY_FLAG) + if (hb_bitAnd(::aFieldStruct[nI][MYSQL_FS_FLAGS], PRI_KEY_FLAG) == PRI_KEY_FLAG) .OR.; + (hb_bitAnd(::aFieldStruct[nI][MYSQL_FS_FLAGS], MULTIPLE_KEY_FLAG) == MULTIPLE_KEY_FLAG) cWhere += ::aFieldStruct[nI][MYSQL_FS_NAME] + "=" @@ -347,19 +347,19 @@ METHOD New(nSocket, cQuery) CLASS TMySQLQuery ::lFieldAsData := .T. //Use fields as object DATA. For compatibility ::aRow := {} //Values of fields of current row - if sqlQuery(nSocket, cQuery) == 0 + if mysql_query(nSocket, cQuery) == 0 // save result set - if !Empty(::nResultHandle := sqlStoreR(nSocket)) + if !Empty(::nResultHandle := mysql_store_result(nSocket)) - ::nNumRows := sqlNRows(::nResultHandle) - ::nNumFields := sqlNumFi(::nResultHandle) + ::nNumRows := mysql_num_rows(::nResultHandle) + ::nNumFields := mysql_num_fields(::nResultHandle) //DAVID: ::aRow := Array( ::nNumFields ) for nI := 1 to ::nNumFields - aField := sqlFetchF(::nResultHandle) + aField := mysql_fetch_field(::nResultHandle) AAdd(::aFieldStruct, aField) //DAVID: if ::lFieldAsData @@ -373,9 +373,9 @@ METHOD New(nSocket, cQuery) CLASS TMySQLQuery else // Should query have returned rows? (Was it a SELECT like query?) - if (::nNumFields := sqlNumFi(nSocket)) == 0 + if (::nNumFields := mysql_num_fields(nSocket)) == 0 - // Was not a SELECT so reset ResultHandle changed by previous sqlStoreR() + // Was not a SELECT so reset ResultHandle changed by previous mysql_store_result() ::nResultHandle := nil else @@ -394,15 +394,15 @@ return Self METHOD Refresh() CLASS TMySQLQuery // free present result handle - sqlFreeR(::nResultHandle) + mysql_free_result(::nResultHandle) ::lError := .F. - if sqlQuery(::nSocket, ::cQuery) == 0 + if mysql_query(::nSocket, ::cQuery) == 0 // save result set - ::nResultHandle := sqlStoreR(::nSocket) - ::nNumRows := sqlNRows(::nResultHandle) + ::nResultHandle := mysql_store_result(::nSocket) + ::nNumRows := mysql_num_rows(::nResultHandle) // NOTE: I presume that number of fields doesn't change (that is nobody alters this table) between // successive refreshes of the same @@ -465,7 +465,7 @@ METHOD Skip(nRows) CLASS TMySQLQuery //Clipper: only SKIP movement can set BOF() to .T. lbof := ::bof() -// sqlDataS(::nResultHandle, ::nCurRow - 1) +// mysql_data_seek(::nResultHandle, ::nCurRow - 1) ::getRow(::nCurrow) if lbof @@ -512,7 +512,7 @@ METHOD GetRow(nRow) CLASS TMySQLQuery if nRow >= 1 .AND. nRow <= ::nNumRows // NOTE: row count starts from 0 - sqlDataS(::nResultHandle, nRow - 1) + mysql_data_seek(::nResultHandle, nRow - 1) ::nCurRow := nRow //DAVID: else //DAVID: use current row ::nCurRow++ @@ -528,7 +528,7 @@ METHOD GetRow(nRow) CLASS TMySQLQuery Afill( ::aRow, "" ) else - ::aRow := sqlFetchR(::nResultHandle) + ::aRow := mysql_fetch_row(::nResultHandle) endif if ::aRow != NIL @@ -607,7 +607,7 @@ return iif(::aRow == NIL, NIL, oRow) // Free result handle and associated resources METHOD Destroy() CLASS TMySQLQuery - sqlFreeR(::nResultHandle) + mysql_free_result(::nResultHandle) return Self @@ -621,7 +621,7 @@ METHOD Error() CLASS TMySQLQuery ::lError := .F. -return sqlGetErr(::nSocket) +return mysql_error(::nSocket) // Given a field name returns it's position METHOD FieldPos(cFieldName) CLASS TMySQLQuery @@ -889,7 +889,7 @@ METHOD Update(oRow, lOldRecord, lRefresh ) CLASS TMySQLTable cUpdateQuery += ::MakePrimaryKeyWhere() endif - if sqlQuery(::nSocket, cUpdateQuery) == 0 + if mysql_query(::nSocket, cUpdateQuery) == 0 //DAVID: Clipper maintain same record pointer //DAVID: after refresh(), position of current record is often unpredictable @@ -940,7 +940,7 @@ METHOD Update(oRow, lOldRecord, lRefresh ) CLASS TMySQLTable cUpdateQuery += oRow:MakePrimaryKeyWhere() endif - if sqlQuery(::nSocket, cUpdateQuery) == 0 + if mysql_query(::nSocket, cUpdateQuery) == 0 // All values are commited Afill(oRow:aDirty, .F.) @@ -1002,7 +1002,7 @@ METHOD Delete(oRow, lOldRecord, lRefresh) CLASS TMySQLTable cDeleteQuery += ::MakePrimaryKeyWhere() endif - if sqlQuery(::nSocket, cDeleteQuery) == 0 + if mysql_query(::nSocket, cDeleteQuery) == 0 ::lError := .F. //DAVID: Clipper maintain same record pointer //DAVID: ::nCurRow-- @@ -1045,7 +1045,7 @@ METHOD Delete(oRow, lOldRecord, lRefresh) CLASS TMySQLTable cDeleteQuery += oRow:MakePrimaryKeyWhere() endif - if sqlQuery(::nSocket, cDeleteQuery) == 0 + if mysql_query(::nSocket, cDeleteQuery) == 0 ::lError := .F. //DAVID: after refresh(), position of current record is often unpredictable @@ -1096,7 +1096,7 @@ METHOD Append(oRow, lRefresh) CLASS TMySQLTable // remove last comma from list of values and add closing parenthesis cInsertQuery := Left(cInsertQuery, Len(cInsertQuery) -1) + ")" - if sqlQuery(::nSocket, cInsertQuery) == 0 + if mysql_query(::nSocket, cInsertQuery) == 0 ::lError := .F. //DAVID: Clipper add record at end ::nCurRow := ::lastrec() + 1 @@ -1141,7 +1141,7 @@ METHOD Append(oRow, lRefresh) CLASS TMySQLTable // remove last comma from list of values and add closing parenthesis cInsertQuery := Left(cInsertQuery, Len(cInsertQuery) -1) + ")" - if sqlQuery(::nSocket, cInsertQuery) == 0 + if mysql_query(::nSocket, cInsertQuery) == 0 //DAVID: ::lError := .F. @@ -1261,15 +1261,15 @@ return nil METHOD Refresh() CLASS TMySQLTABLE // free present result handle - sqlFreeR(::nResultHandle) + mysql_free_result(::nResultHandle) ::lError := .F. - if sqlQuery(::nSocket, ::cQuery) == 0 + if mysql_query(::nSocket, ::cQuery) == 0 // save result set - ::nResultHandle := sqlStoreR(::nSocket) - ::nNumRows := sqlNRows(::nResultHandle) + ::nResultHandle := mysql_store_result(::nSocket) + ::nNumRows := mysql_num_rows(::nResultHandle) // NOTE: I presume that number of fields doesn't change (that is nobody alters this table) between // successive refreshes of the same @@ -1303,8 +1303,8 @@ METHOD MakePrimaryKeyWhere() CLASS TMySQLTable for nI := 1 to Len(::aFieldStruct) // search for fields part of a primary key - if (sqlAND(::aFieldStruct[nI][MYSQL_FS_FLAGS], PRI_KEY_FLAG) == PRI_KEY_FLAG) .OR.; - (sqlAND(::aFieldStruct[nI][MYSQL_FS_FLAGS], MULTIPLE_KEY_FLAG) == MULTIPLE_KEY_FLAG) + if (hb_bitAnd(::aFieldStruct[nI][MYSQL_FS_FLAGS], PRI_KEY_FLAG) == PRI_KEY_FLAG) .OR.; + (hb_bitAnd(::aFieldStruct[nI][MYSQL_FS_FLAGS], MULTIPLE_KEY_FLAG) == MULTIPLE_KEY_FLAG) cWhere += ::aFieldStruct[nI][MYSQL_FS_NAME] + "=" @@ -1369,7 +1369,7 @@ METHOD New(cServer, cUser, cPassword) CLASS TMySQLServer ::cServer := cServer ::cUser := cUser ::cPassword := cPassword - ::nSocket := sqlConnect(cServer, cUser, cPassword) + ::nSocket := mysql_real_connect(cServer, cUser, cPassword) ::lError := .F. if Empty( ::nSocket ) @@ -1381,13 +1381,13 @@ return Self METHOD Destroy() CLASS TMySQLServer - sqlClose(::nSocket) + mysql_close(::nSocket) return Self METHOD sql_commit() CLASS TMySQLServer - if sqlCommit(::nSocket) == 0 + if mysql_commit(::nSocket) == 0 Return .T. endif return .F. @@ -1395,7 +1395,7 @@ return .F. METHOD sql_rollback() CLASS TMySQLServer - if sqlRollback(::nSocket) == 0 + if mysql_rollback(::nSocket) == 0 Return .T. endif return .F. @@ -1403,14 +1403,14 @@ return .F. METHOD sql_version() CLASS TMySQLServer local nVer - nVer:=sqlversion(::nSocket) + nVer:=mysql_get_server_version(::nSocket) return nVer *METHOD SelectDB(cDBName) CLASS TMySQLServer * -* if sqlSelectD(::nSocket, cDBName) == 0 +* if mysql_select_db(::nSocket, cDBName) == 0 * ::cDBName := cDBName * return .T. * else @@ -1425,7 +1425,7 @@ METHOD SelectDB(cDBName) CLASS TMySQLServer ::lError := .F. - if sqlSelectD(::nSocket, cDBName) != 0 /* tabela nao existe */ + if mysql_select_db(::nSocket, cDBName) != 0 /* tabela nao existe */ ::cDBName :="" ::lError := .T. else /* tabela existe */ @@ -1440,7 +1440,7 @@ return .F. METHOD CreateDatabase ( cDataBase ) CLASS TMySQLServer local cCreateQuery := "CREATE DATABASE "+ lower(cDatabase) - if sqlQuery(::nSocket, cCreateQuery) == 0 + if mysql_query(::nSocket, cCreateQuery) == 0 return .T. endif @@ -1517,7 +1517,7 @@ METHOD CreateTable(cTable, aStruct,cPrimaryKey,cUniqueKey,cAuto) CLASS TMySQLSer // remove last comma from list ::cCreateQuery := Left(::cCreateQuery, Len(::cCreateQuery) -1) + ");" - if sqlQuery(::nSocket, ::cCreateQuery) == 0 + if mysql_query(::nSocket, ::cCreateQuery) == 0 return .T. else ::lError := .T. @@ -1548,7 +1548,7 @@ METHOD CreateIndex(cName, cTable, aFNames, lUnique) CLASS TMySQLServer // remove last comma from list cCreateQuery := Left(cCreateQuery, Len(cCreateQuery) -1) + ")" - if sqlQuery(::nSocket, cCreateQuery) == 0 + if mysql_query(::nSocket, cCreateQuery) == 0 return .T. endif @@ -1560,7 +1560,7 @@ METHOD DeleteIndex(cName, cTable) CLASS TMySQLServer local cDropQuery := "DROP INDEX " + cName + " FROM " + Lower(cTable) - if sqlQuery(::nSocket, cDropQuery) == 0 + if mysql_query(::nSocket, cDropQuery) == 0 return .T. endif @@ -1571,7 +1571,7 @@ METHOD DeleteTable(cTable) CLASS TMySQLServer local cDropQuery := "DROP TABLE " + Lower(cTable) - if sqlQuery(::nSocket, cDropQuery) == 0 + if mysql_query(::nSocket, cDropQuery) == 0 return .T. endif @@ -1607,7 +1607,7 @@ METHOD Query(cQuery) CLASS TMySQLServer if nNumTables == 1 oQuery := TMySQLTable():New(::nSocket, cQuery, cTableName) else - oQuery := TMySQLQuery():New(::nSocket, cQuery) + oQuery := TMymysql_query():New(::nSocket, cQuery) endif if oQuery:NetErr() @@ -1621,14 +1621,14 @@ METHOD Error() CLASS TMySQLServer ::lError := .F. -return iif(Empty( ::nSocket ), "No connection to server", sqlGetErr(::nSocket)) +return iif(Empty( ::nSocket ), "No connection to server", mysql_error(::nSocket)) METHOD ListDBs() CLASS TMySQLServer local aList - aList := sqlListDB(::nSocket) + aList := mysql_list_dbs(::nSocket) return aList @@ -1637,7 +1637,7 @@ METHOD ListTables() CLASS TMySQLServer local aList - aList := sqlListTbl(::nSocket) + aList := mysql_list_tables(::nSocket) return aList @@ -1653,12 +1653,12 @@ METHOD TableStruct(cTable) CLASS TMySQLServer local nRes, aField, aStruct, aSField, i aStruct := {} - nRes := sqlListF(::nSocket, cTable) + nRes := mysql_list_fields(::nSocket, cTable) if !Empty( nRes ) - for i := 1 to sqlNumFi(nRes) + for i := 1 to mysql_num_fields(nRes) - aField := sqlFetchF(nRes) + aField := mysql_fetch_field(nRes) aSField := Array(DBS_DEC) // don't count indexes as real fields @@ -1705,7 +1705,7 @@ METHOD TableStruct(cTable) CLASS TMySQLServer endif next - sqlFreeR(nRes) + mysql_free_result(nRes) endif*/ @@ -1734,7 +1734,7 @@ static function ClipValue2SQL(Value) cValue="''" ELSE cValue := "'" - Value:=DATATOSQL(value) + Value:=mysql_escape_string(value) cValue+= value+ "'" ENDIF diff --git a/harbour/contrib/hbodbc/odbc.c b/harbour/contrib/hbodbc/odbc.c index 6f9e5ac300..ca4178485c 100644 --- a/harbour/contrib/hbodbc/odbc.c +++ b/harbour/contrib/hbodbc/odbc.c @@ -643,7 +643,7 @@ HB_FUNC( SQLSTOD ) if( hb_parclen( 1 ) >= 10 ) { char * szSqlDate = hb_parc( 1 ); /* YYYY-MM-DD */ - char szHrbDate[9]; /* YYYYMMDD */ + char szHrbDate[ 9 ]; /* YYYYMMDD */ szHrbDate[ 0 ] = szSqlDate[ 0 ]; szHrbDate[ 1 ] = szSqlDate[ 1 ]; diff --git a/harbour/source/vm/maindll.c b/harbour/source/vm/maindll.c index f6e46e4958..5ade1a4023 100644 --- a/harbour/source/vm/maindll.c +++ b/harbour/source/vm/maindll.c @@ -62,6 +62,8 @@ #if defined(HB_OS_WIN) +BOOL WINAPI HB_EXPORT DllEntryPoint( HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved ); + BOOL WINAPI DllEntryPoint( HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved ) { HB_TRACE( HB_TR_DEBUG, ("DllEntryPoint(%p, %p, %p)", hInstance, fdwReason, @@ -74,12 +76,12 @@ BOOL WINAPI DllEntryPoint( HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserve switch( fdwReason ) { case DLL_PROCESS_ATTACH: - hb_vmInit( FALSE ); /* Don't execute first linked symbol */ - break; + hb_vmInit( FALSE ); /* Don't execute first linked symbol */ + break; case DLL_PROCESS_DETACH: - hb_vmQuit(); - break; + hb_vmQuit(); + break; } return TRUE; diff --git a/harbour/source/vm/maindllh.c b/harbour/source/vm/maindllh.c index d1472dc46d..e4a0f3de97 100644 --- a/harbour/source/vm/maindllh.c +++ b/harbour/source/vm/maindllh.c @@ -74,10 +74,10 @@ BOOL WINAPI DllEntryPoint( HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserve switch( fdwReason ) { case DLL_PROCESS_ATTACH: - break; + break; case DLL_PROCESS_DETACH: - break; + break; } return TRUE; diff --git a/harbour/source/vm/maindllp.c b/harbour/source/vm/maindllp.c index 0d38f2e169..3a14a690e8 100644 --- a/harbour/source/vm/maindllp.c +++ b/harbour/source/vm/maindllp.c @@ -78,8 +78,6 @@ #if defined(HB_OS_WIN) HB_EXTERN_BEGIN -BOOL WINAPI HB_EXPORT DllEntryPoint( HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved ); - static FARPROC hb_getProcAddress( LPCSTR szProcName ) { static HMODULE s_hModule = NULL; @@ -111,6 +109,8 @@ static FARPROC hb_getProcAddress( LPCSTR szProcName ) return pProcAddr; } +BOOL WINAPI HB_EXPORT DllEntryPoint( HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved ); + BOOL WINAPI DllEntryPoint( HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved ) { HB_TRACE( HB_TR_DEBUG, ("DllEntryPoint(%p, %p, %d)", hInstance, fdwReason,