2014-09-25 00:04 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)

* contrib/sddsqlt3/core.c
    + map columns with SQLITE_NULL values as HB_FT_ANY fields
This commit is contained in:
Przemysław Czerpak
2014-09-25 00:04:42 +02:00
parent 2dff2df00e
commit 66f3f44a4e
2 changed files with 33 additions and 1 deletions

View File

@@ -10,6 +10,10 @@
* Change, ! Fix, % Optimization, + Addition, - Removal, ; Comment
*/
2014-09-25 00:04 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* contrib/sddsqlt3/core.c
+ map columns with SQLITE_NULL values as HB_FT_ANY fields
2014-09-23 13:18 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* contrib/hbcurl/core.c
! added protection against operation on NULL pointers borrowed from

View File

@@ -334,6 +334,10 @@ static HB_ERRCODE sqlite3Open( SQLBASEAREAP pArea )
pFieldInfo.uiType = HB_FT_BLOB;
break;
case SQLITE_NULL:
pFieldInfo.uiType = HB_FT_ANY;
break;
default:
#if 0
HB_TRACE( HB_TR_ALWAYS, ( "new sql type=%d", iDataType ) );
@@ -369,6 +373,10 @@ static HB_ERRCODE sqlite3Open( SQLBASEAREAP pArea )
pItem = hb_itemPutNDLen( NULL, 0.0, pFieldInfo.uiLen, pFieldInfo.uiDec );
break;
case HB_FT_ANY:
pItem = hb_itemNew( NULL );
break;
default:
pItem = hb_itemNew( NULL );
bError = HB_TRUE;
@@ -442,8 +450,28 @@ static HB_ERRCODE sqlite3GoTo( SQLBASEAREAP pArea, HB_ULONG ulRecNo )
{
PHB_ITEM pItem = NULL;
LPFIELD pField = pArea->area.lpFields + ui;
HB_USHORT uiType = pField->uiType;
switch( pField->uiType )
if( uiType == HB_FT_ANY )
{
switch( sqlite3_column_type( st, ui ) )
{
case SQLITE_TEXT:
uiType = HB_FT_STRING;
break;
case SQLITE_FLOAT:
case SQLITE_INTEGER:
uiType = HB_FT_LONG;
break;
case SQLITE_BLOB:
uiType = HB_FT_BLOB;
break;
}
}
switch( uiType )
{
case HB_FT_STRING:
pItem = S_HB_ITEMPUTSTR( NULL, ( const char * ) sqlite3_column_text( st, ui ) );