diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 4a1404151d..4a733c8656 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,17 @@ past entries belonging to author(s): Viktor Szakats. */ +2009-06-30 18:10 UTC+0300 Mindaugas Kavaliauskas (dbtopas/at/dbtopas.lt) + * harbour/contrib/rddsql/sddmy/mysqldd.c + + added support for MySQL TIMESTAMP, DATETIME and TIME types. These + types are mapped to @,8 and T,4 field types, and native harbour + timestamp type. + + * harbour/include/hbextern.ch + + added a dozen of Harbour functions + ; NOTE: about 120 functions are still not included into this .ch: + SX_*(), USRRDD_*(), __DBG*(), __CLS*(), HB_COMPILE*(), etc. + 2009-06-30 13:32 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/source/rtl/datec.c * added workaround for CodeGuard false bug report covered by diff --git a/harbour/contrib/rddsql/sddmy/mysqldd.c b/harbour/contrib/rddsql/sddmy/mysqldd.c index 25a867d113..bb47d4c739 100644 --- a/harbour/contrib/rddsql/sddmy/mysqldd.c +++ b/harbour/contrib/rddsql/sddmy/mysqldd.c @@ -317,7 +317,6 @@ static HB_ERRCODE mysqlOpen( SQLBASEAREAP pArea ) case MYSQL_TYPE_STRING: case MYSQL_TYPE_VAR_STRING: case MYSQL_TYPE_ENUM: - case MYSQL_TYPE_DATETIME: pFieldInfo.uiType = HB_FT_STRING; break; @@ -332,10 +331,18 @@ static HB_ERRCODE mysqlOpen( SQLBASEAREAP pArea ) pFieldInfo.uiType = HB_FT_MEMO; break; -/* case MYSQL_TYPE_TIMESTAMP: - case MYSQL_TYPE_TIME: case MYSQL_TYPE_DATETIME: + pFieldInfo.uiType = HB_FT_TIMESTAMP; + pFieldInfo.uiLen = 8; + break; + + case MYSQL_TYPE_TIME: + pFieldInfo.uiType = HB_FT_TIME; + pFieldInfo.uiLen = 4; + break; + +/* case MYSQL_TYPE_YEAR: case MYSQL_TYPE_NEWDATE: case MYSQL_TYPE_ENUM: @@ -386,6 +393,11 @@ static HB_ERRCODE mysqlOpen( SQLBASEAREAP pArea ) pItem = hb_itemPutDS( NULL, NULL ); break; + case HB_FT_TIMESTAMP: + case HB_FT_TIME: + pItem = hb_itemPutTDT( NULL, 0, 0 ); + break; + default: pItem = hb_itemNew( NULL ); bError = TRUE; @@ -509,7 +521,7 @@ static HB_ERRCODE mysqlGetValue( SQLBASEAREAP pArea, USHORT uiIndex, PHB_ITEM pI #if 0 char* pStr; - /* Do NOT trim strings */ + /* Expand strings to field length */ pStr = (char*) hb_xgrab( pField->uiLen + 1 ); if ( pValue ) memcpy( pStr, pValue, ulLen ); @@ -520,7 +532,7 @@ static HB_ERRCODE mysqlGetValue( SQLBASEAREAP pArea, USHORT uiIndex, PHB_ITEM pI pStr[ pField->uiLen ] = '\0'; hb_itemPutCRaw( pItem, pStr, pField->uiLen ); #else - /* Trim strings */ + /* Do not expand strings */ if ( pValue ) hb_itemPutCL( pItem, pValue, ulLen ); else @@ -582,6 +594,54 @@ static HB_ERRCODE mysqlGetValue( SQLBASEAREAP pArea, USHORT uiIndex, PHB_ITEM pI break; } + case HB_FT_TIMESTAMP: + { + char szTimeStamp[ 15 ]; + + szTimeStamp[ 0 ] = pValue[ 0 ]; + szTimeStamp[ 1 ] = pValue[ 1 ]; + szTimeStamp[ 2 ] = pValue[ 2 ]; + szTimeStamp[ 3 ] = pValue[ 3 ]; + szTimeStamp[ 4 ] = pValue[ 5 ]; + szTimeStamp[ 5 ] = pValue[ 6 ]; + szTimeStamp[ 6 ] = pValue[ 8 ]; + szTimeStamp[ 7 ] = pValue[ 9 ]; + + szTimeStamp[ 8 ] = pValue[ 11 ]; + szTimeStamp[ 9 ] = pValue[ 12 ]; + szTimeStamp[ 10 ] = pValue[ 14 ]; + szTimeStamp[ 11 ] = pValue[ 15 ]; + szTimeStamp[ 12 ] = pValue[ 17 ]; + szTimeStamp[ 13 ] = pValue[ 18 ]; + szTimeStamp[ 14 ] = '\0'; + hb_itemPutTS( pItem, szTimeStamp ); + break; + } + + case HB_FT_TIME: + { + char szTimeStamp[ 15 ]; + + szTimeStamp[ 0 ] = '0'; + szTimeStamp[ 1 ] = '0'; + szTimeStamp[ 2 ] = '0'; + szTimeStamp[ 3 ] = '0'; + szTimeStamp[ 4 ] = '0'; + szTimeStamp[ 5 ] = '0'; + szTimeStamp[ 6 ] = '0'; + szTimeStamp[ 7 ] = '0'; + + szTimeStamp[ 8 ] = pValue[ 0 ]; + szTimeStamp[ 9 ] = pValue[ 1 ]; + szTimeStamp[ 10 ] = pValue[ 3 ]; + szTimeStamp[ 11 ] = pValue[ 4 ]; + szTimeStamp[ 12 ] = pValue[ 6 ]; + szTimeStamp[ 13 ] = pValue[ 7 ]; + szTimeStamp[ 14 ] = '\0'; + hb_itemPutTS( pItem, szTimeStamp ); + break; + } + default: bError = TRUE; break; diff --git a/harbour/include/hbextern.ch b/harbour/include/hbextern.ch index 842f5bebab..134ad8508b 100644 --- a/harbour/include/hbextern.ch +++ b/harbour/include/hbextern.ch @@ -589,10 +589,12 @@ EXTERNAL _DBF, DBF_GETFUNCTABLE EXTERNAL DBFFPT, DBFFPT_GETFUNCTABLE EXTERNAL DBFNTX, DBFNTX_GETFUNCTABLE EXTERNAL DBFCDX, DBFCDX_GETFUNCTABLE +EXTERNAL DBFNSX, DBFNSX_GETFUNCTABLE +EXTERNAL SIXCDX, SIXCDX_GETFUNCTABLE EXTERNAL DELIM, DELIM_GETFUNCTABLE EXTERNAL SDF, SDF_GETFUNCTABLE EXTERNAL DBFBLOB, DBFBLOB_GETFUNCTABLE -EXTERNAL DBFSMT +EXTERNAL DBFDBT, DBFSMT EXTERNAL RDDSYS @@ -715,6 +717,7 @@ EXTERNAL ORDKEYNO EXTERNAL ORDKEYVAL EXTERNAL ORDSETRELATION EXTERNAL ORDSKIPUNIQUE +EXTERNAL ORDSKIPRAW EXTERNAL ORDCOUNT EXTERNAL ORDCUSTOM EXTERNAL ORDFINDREC @@ -780,6 +783,8 @@ EXTERNAL XPP_TBROWSE EXTERNAL XPP_TBCOLUMN EXTERNAL XPP_SLEEP EXTERNAL BIN2U +EXTERNAL BIN2F +EXTERNAL F2BIN EXTERNAL DBPACK EXTERNAL DBZAP EXTERNAL DBCOPYEXTSTRUCT @@ -843,6 +848,7 @@ EXTERNAL HB_UTF8POKE EXTERNAL HB_UTF8STUFF EXTERNAL HB_UTF8SUBSTR EXTERNAL HB_UTF8STRTRAN +EXTERNAL HB_UTF8CHR #endif EXTERNAL HB_ISARRAY EXTERNAL HB_ISBLOCK @@ -993,6 +999,8 @@ EXTERNAL HB_FIELDLEN EXTERNAL HB_FIELDDEC EXTERNAL HB_FIELDTYPE EXTERNAL HB_WAEVAL +EXTERNAL HB_DBDETACH +EXTERNAL HB_DBREQUEST EXTERNAL HB_SCRMAXROW EXTERNAL HB_SCRMAXCOL @@ -1010,6 +1018,8 @@ EXTERNAL HB_THREADQUITREQUEST EXTERNAL HB_THREADWAIT EXTERNAL HB_THREADWAITFORALL EXTERNAL HB_THREADTERMINATEALL +EXTERNAL HB_THREADSELF +EXTERNAL HB_THREADID EXTERNAL HB_MUTEXCREATE EXTERNAL HB_MUTEXLOCK