diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 651ecbc6a7..e1bd836834 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,18 @@ +2000-07-24 13:59 GMT+3 Alexander Kresin + * include/hbapirdd.h + * uncommented relational methods in functions table + * source/rdd/dbcmd.c + * source/rdd/dbf1.c + * source/rdd/dbfcdx/dbfcdx1.c + * source/rdd/dbfntx/dbfntx1.c + * added relational methods definitions to func table + * contrib/rdd_ads/ads1.c + * added relational methods definitions to func table + * fixed adsOrderCreate - now + * INDEX ON expression TAG tag TO indexFileName + * creates a compound CDX index, if indexFileName is the same, as + * current dbf name + 2000-07-04 04:05 UTC+0100 Victor Szakats * contrib/odbc/bld_b32.bat diff --git a/harbour/contrib/rdd_ads/ads1.c b/harbour/contrib/rdd_ads/ads1.c index d31d999e72..4718f9fa99 100644 --- a/harbour/contrib/rdd_ads/ads1.c +++ b/harbour/contrib/rdd_ads/ads1.c @@ -205,6 +205,20 @@ static ERRCODE hb_adsCheckBofEof( ADSAREAP pArea ) return SUPER_SKIPFILTER( (AREAP)pArea, 1 ); } +static BOOL strcmpNoCase( char* s1, char* s2, int n ) +{ + int i = 0; + while( *s1 && *s2 && ( !n || i++ < n ) ) + { + if( tolower( *s1 ) != tolower( *s2 ) ) + return 0; + s1++; + s2++; + } + return ( !*s1 && !*s2 ) || ( n && i == n ); + +} + /* * -- ADS METHODS -- */ @@ -858,6 +872,17 @@ static ERRCODE adsZap( ADSAREAP pArea ) return adsGoTop( pArea ); } +#define adschildEnd NULL +#define adschildStart NULL +#define adschildSync NULL +#define adssyncChildren NULL +#define adsclearRel NULL +#define adsforceRel NULL +#define adsrelArea NULL +#define adsrelEval NULL +#define adsrelText NULL +#define adssetRel NULL + static ERRCODE adsOrderListAdd( ADSAREAP pArea, LPDBORDERINFO pOrderInfo ) { ADSHANDLE ahIndex[50]; @@ -944,7 +969,17 @@ static ERRCODE adsOrderCreate( ADSAREAP pArea, LPDBORDERCREATEINFO pOrderInfo ) PHB_ITEM pItem = pOrderInfo->abExpr; HB_TRACE(HB_TR_DEBUG, ("adsOrderCreate(%p, %p)", pArea, pOrderInfo)); - if( !pOrderInfo->abBagName || *(pOrderInfo->abBagName) == '\0' ) ulOptions = ADS_COMPOUND; + if( !pOrderInfo->abBagName || *(pOrderInfo->abBagName) == '\0' ) + ulOptions = ADS_COMPOUND; + else + { + int slen = strlen( pArea->lpDataInfo->szFileName ); + char *ptr = pArea->lpDataInfo->szFileName + slen - 4; + if( strcmpNoCase( pOrderInfo->abBagName, pArea->lpDataInfo->szFileName, + ( slen >= 4 && strcmpNoCase( ".dbf",ptr,0 ) )? slen-4:0 ) ) + ulOptions = ADS_COMPOUND; + } + ulRetVal = AdsCreateIndex( pArea->hTable, pOrderInfo->abBagName, pOrderInfo->atomBagName, (UCHAR*)hb_itemGetCPtr( pItem ), (UCHAR*)"", (UCHAR*)"", ulOptions, &phIndex); @@ -1296,6 +1331,16 @@ static RDDFUNCS adsTable = { adsBof, adsEval, ( DBENTRYP_V ) adsPack, ( DBENTRYP_V ) adsZap, + ( DBENTRYP_VP ) adschildEnd, + ( DBENTRYP_VP ) adschildStart, + ( DBENTRYP_VP ) adschildSync, + ( DBENTRYP_V ) adssyncChildren, + ( DBENTRYP_V ) adsclearRel, + ( DBENTRYP_V ) adsforceRel, + ( DBENTRYP_SVP ) adsrelArea, + ( DBENTRYP_VP ) adsrelEval, + ( DBENTRYP_SVP ) adsrelText, + ( DBENTRYP_VP ) adssetRel, ( DBENTRYP_OI ) adsOrderListAdd, ( DBENTRYP_V ) adsOrderListClear, ( DBENTRYP_OI ) adsOrderListFocus, diff --git a/harbour/include/hbapirdd.h b/harbour/include/hbapirdd.h index 8055192b1e..9a3cef1fb0 100644 --- a/harbour/include/hbapirdd.h +++ b/harbour/include/hbapirdd.h @@ -785,7 +785,6 @@ typedef struct _RDDFUNCS /* Relational Methods */ -#if 0 DBENTRYP_VP childEnd; DBENTRYP_VP childStart; DBENTRYP_VP childSync; @@ -796,7 +795,6 @@ typedef struct _RDDFUNCS DBENTRYP_VP relEval; DBENTRYP_SVP relText; DBENTRYP_VP setRel; -#endif /* Order Management */ diff --git a/harbour/source/rdd/dbcmd.c b/harbour/source/rdd/dbcmd.c index 680c6562b4..6a4041a867 100644 --- a/harbour/source/rdd/dbcmd.c +++ b/harbour/source/rdd/dbcmd.c @@ -812,6 +812,16 @@ static RDDFUNCS defTable = { defBof, defEval, defUnSupported, defUnSupported, + ( DBENTRYP_VP ) defUnSupported, + ( DBENTRYP_VP ) defUnSupported, + ( DBENTRYP_VP ) defUnSupported, + ( DBENTRYP_V ) defUnSupported, + ( DBENTRYP_V ) defUnSupported, + ( DBENTRYP_V ) defUnSupported, + ( DBENTRYP_SVP ) defUnSupported, + ( DBENTRYP_VP ) defUnSupported, + ( DBENTRYP_SVP ) defUnSupported, + ( DBENTRYP_VP ) defUnSupported, ( DBENTRYP_OI ) defUnSupported, defUnSupported, ( DBENTRYP_OI ) defUnSupported, diff --git a/harbour/source/rdd/dbf1.c b/harbour/source/rdd/dbf1.c index 8875369d94..863a7ab310 100644 --- a/harbour/source/rdd/dbf1.c +++ b/harbour/source/rdd/dbf1.c @@ -662,6 +662,16 @@ static RDDFUNCS dbfSuper = { 0 }; #define dbfStructSize NULL #define dbfSysName NULL #define dbfEval NULL +#define dbfchildEnd NULL +#define dbfchildStart NULL +#define dbfchildSync NULL +#define dbfsyncChildren NULL +#define dbfclearRel NULL +#define dbfforceRel NULL +#define dbfrelArea NULL +#define dbfrelEval NULL +#define dbfrelText NULL +#define dbfsetRel NULL #define dbfOrderListAdd NULL #define dbfOrderListClear NULL #define dbfOrderListFocus NULL @@ -2070,6 +2080,16 @@ static RDDFUNCS dbfTable = { dbfBof, dbfEval, dbfPack, dbfZap, + dbfchildEnd, + dbfchildStart, + dbfchildSync, + dbfsyncChildren, + dbfclearRel, + dbfforceRel, + dbfrelArea, + dbfrelEval, + dbfrelText, + dbfsetRel, dbfOrderListAdd, dbfOrderListClear, dbfOrderListFocus, diff --git a/harbour/source/rdd/dbfcdx/dbfcdx1.c b/harbour/source/rdd/dbfcdx/dbfcdx1.c index a442060912..1a4faf61e2 100644 --- a/harbour/source/rdd/dbfcdx/dbfcdx1.c +++ b/harbour/source/rdd/dbfcdx/dbfcdx1.c @@ -2546,6 +2546,16 @@ static void hb_cdxSortAddInternal( LPSORTINFO pSort, USHORT Lvl, LONG Tag, LONG #define cdxEval NULL #define cdxPack NULL #define cdxZap NULL +#define cdxchildEnd NULL +#define cdxchildStart NULL +#define cdxchildSync NULL +#define cdxsyncChildren NULL +#define cdxclearRel NULL +#define cdxforceRel NULL +#define cdxrelArea NULL +#define cdxrelEval NULL +#define cdxrelText NULL +#define cdxsetRel NULL #define cdxOrderCondition NULL #define cdxClearFilter NULL #define cdxClearLocate NULL @@ -3269,6 +3279,16 @@ static RDDFUNCS cdxTable = { cdxBof, cdxEval, cdxPack, cdxZap, + cdxchildEnd, + cdxchildStart, + cdxchildSync, + cdxsyncChildren, + cdxclearRel, + cdxforceRel, + cdxrelArea, + cdxrelEval, + cdxrelText, + cdxsetRel, cdxOrderListAdd, cdxOrderListClear, cdxOrderListFocus, diff --git a/harbour/source/rdd/dbfntx/dbfntx1.c b/harbour/source/rdd/dbfntx/dbfntx1.c index 8f5d45e65e..01b3d07537 100644 --- a/harbour/source/rdd/dbfntx/dbfntx1.c +++ b/harbour/source/rdd/dbfntx/dbfntx1.c @@ -1190,6 +1190,16 @@ static ERRCODE ntxClose( AREAP pArea ) #define ntxEval NULL #define ntxPack NULL #define ntxZap NULL +#define ntxchildEnd NULL +#define ntxchildStart NULL +#define ntxchildSync NULL +#define ntxsyncChildren NULL +#define ntxclearRel NULL +#define ntxforceRel NULL +#define ntxrelArea NULL +#define ntxrelEval NULL +#define ntxrelText NULL +#define ntxsetRel NULL #define ntxOrderListFocus NULL #define ntxOrderListRebuild NULL #define ntxOrderCondition NULL @@ -1265,6 +1275,16 @@ static RDDFUNCS ntxTable = { ntxBof, ntxEval, ntxPack, ntxZap, + ntxchildEnd, + ntxchildStart, + ntxchildSync, + ntxsyncChildren, + ntxclearRel, + ntxforceRel, + ntxrelArea, + ntxrelEval, + ntxrelText, + ntxsetRel, ntxOrderListAdd, ntxOrderListClear, ntxOrderListFocus,