Skip to content

Commit

Permalink
Addition for implementation of ODBC-152. Boolean type support for Fir…
Browse files Browse the repository at this point in the history
…ebird 3
  • Loading branch information
alexpotapchenko committed Jan 7, 2014
1 parent 8f3fbc4 commit 312f2af
Show file tree
Hide file tree
Showing 6 changed files with 18 additions and 8 deletions.
4 changes: 4 additions & 0 deletions IscDbc/IscArray.cpp
Expand Up @@ -150,6 +150,10 @@ JString CAttrArray::getFbSqlType()

switch ( arrTypeElement )
{
case blr_bool:
ch = "BOOLEAN";
break;

case blr_short:
if ( arrSubTypeElement == 1 )
sprintf (temp, "NUMERIC(%d,%d)", MAX_NUMERIC_SHORT_LENGTH, -sqlscale);
Expand Down
5 changes: 5 additions & 0 deletions IscDbc/IscDbc.h
Expand Up @@ -38,6 +38,10 @@
#define SQL_BOOLEAN 32764
#endif

#ifndef blr_bool
#define blr_bool (unsigned char)23
#endif

#ifndef NULL
#define NULL 0
#endif
Expand Down Expand Up @@ -139,6 +143,7 @@ typedef unsigned __int64 UQUAD;
#define MAX_DECIMAL_LONG_LENGTH 9
#define MAX_DECIMAL_DOUBLE_LENGTH 15
#define MAX_DECIMAL_LENGTH 18
#define MAX_BOOLEAN_LENGTH 1
#define MAX_TINYINT_LENGTH 3
#define MAX_SMALLINT_LENGTH 5
#define MAX_INT_LENGTH 10
Expand Down
8 changes: 4 additions & 4 deletions IscDbc/IscSqlType.cpp
Expand Up @@ -74,18 +74,18 @@ void IscSqlType::buildType ()
}
}
break;
/*
case blr_boolean:

case blr_bool:
{
type = JDBC_BOOLEAN;
typeName = "BOOLEAN";
length = MAX_BOOLEAN_LENGTH;
bufferLength = sizeof(short);
bufferLength = sizeof(bool);
if ( !precision ) // for calculate fields
precision = length;
}
break;
*/

case blr_short:
{
type = JDBC_SMALLINT;
Expand Down
4 changes: 2 additions & 2 deletions IscDbc/Sqlda.cpp
Expand Up @@ -671,7 +671,7 @@ int Sqlda::getColumnDisplaySize(int index)
return var->sqllen;

case SQL_BOOLEAN:
return sizeof(TYPE_BOOLEAN) + 2;
return MAX_BOOLEAN_LENGTH;

case SQL_SHORT:
return SET_INFO_FROM_SUBTYPE( MAX_NUMERIC_SHORT_LENGTH + 2,
Expand Down Expand Up @@ -752,7 +752,7 @@ int Sqlda::getPrecision(int index)
return var->sqllen;

case SQL_BOOLEAN:
return sizeof(TYPE_BOOLEAN);
return MAX_BOOLEAN_LENGTH;

case SQL_SHORT:
return SET_INFO_FROM_SUBTYPE( MAX_NUMERIC_SHORT_LENGTH,
Expand Down
3 changes: 2 additions & 1 deletion IscDbc/TypesResultSet.cpp
Expand Up @@ -119,13 +119,14 @@ static Types types [] =
BLOB ("BLOB SUB_TYPE 0", JDBC_BINARY, MAX_BLOB_LENGTH, "","",CASE_INSENSITIVE),
NUMERIC ("NUMERIC", JDBC_NUMERIC, MAX_NUMERIC_LENGTH, "precision,scale", 0, MAX_NUMERIC_LENGTH, 10),
NUMERIC ("DECIMAL", JDBC_DECIMAL, MAX_DECIMAL_LENGTH, "precision,scale", 0, MAX_DECIMAL_LENGTH, 10),
NUMERIC ("INTEGER", JDBC_INTEGER, MAX_INT_LENGTH, "", 0, 0, 10),
NUMERIC ("INTEGER", JDBC_INTEGER, MAX_INT_LENGTH, "", 0, 0, 10),
NUMERIC ("SMALLINT", JDBC_TINYINT, MAX_SMALLINT_LENGTH, "", 0, 0, 10),
NUMERIC ("SMALLINT", JDBC_SMALLINT, MAX_SMALLINT_LENGTH, "", 0, 0, 10),
NUMERIC ("DOUBLE PRECISION", JDBC_FLOAT, MAX_DOUBLE_DIGIT_LENGTH, "", UNSCALED, UNSCALED, 2),
NUMERIC ("FLOAT", JDBC_REAL, MAX_FLOAT_DIGIT_LENGTH, "", UNSCALED, UNSCALED, 2),
NUMERIC ("DOUBLE PRECISION", JDBC_DOUBLE, MAX_DOUBLE_DIGIT_LENGTH, "", UNSCALED, UNSCALED, 2),
NUMERIC ("BIGINT", JDBC_BIGINT, MAX_QUAD_LENGTH,"", 0, MAX_QUAD_LENGTH, 10),
NUMERIC ("BOOLEAN", JDBC_BOOLEAN, MAX_BOOLEAN_LENGTH, "", UNSCALED, UNSCALED, NOT_NUMERIC),
DATE("DATE",JDBC_DATE,MAX_DATE_LENGTH,"{d'","'}",1),
DATETIME("TIME",JDBC_TIME,MAX_TIME_LENGTH,"{t'","'}",2),
DATETIME("TIMESTAMP",JDBC_TIMESTAMP,MAX_TIMESTAMP_LENGTH,"{ts'","'}",3)
Expand Down
2 changes: 1 addition & 1 deletion OdbcStatement.cpp
Expand Up @@ -2071,6 +2071,7 @@ SQLRETURN OdbcStatement::sqlBindParameter(int parameter, int type, int cType,
cType = SQL_C_WCHAR;
break;
case SQL_BIT:
case SQL_BOOLEAN:
cType = SQL_C_BIT;
break;
case SQL_TINYINT:
Expand All @@ -2079,7 +2080,6 @@ SQLRETURN OdbcStatement::sqlBindParameter(int parameter, int type, int cType,
case SQL_SMALLINT:
cType = SQL_C_SSHORT;
break;
case SQL_BOOLEAN:
case SQL_INTEGER:
cType = SQL_C_SLONG;
break;
Expand Down

0 comments on commit 312f2af

Please sign in to comment.