@@ -2122,6 +2122,15 @@ static int _php_db2_bind_column_helper(stmt_handle *stmt_res)
2122
2122
}
2123
2123
break ;
2124
2124
2125
+ case SQL_BOOLEAN :
2126
+ rc = SQLBindCol ((SQLHSTMT )stmt_res -> hstmt , (SQLUSMALLINT )(i + 1 ),
2127
+ SQL_C_LONG , & row_data -> i_val , sizeof (row_data -> i_val ),
2128
+ (SQLINTEGER * )(& stmt_res -> row_data [i ].out_length ));
2129
+ if ( rc == SQL_ERROR ) {
2130
+ _php_db2_check_sql_errors ((SQLHSTMT )stmt_res -> hstmt , SQL_HANDLE_STMT , rc , 1 , NULL , -1 , 1 );
2131
+ }
2132
+ break ;
2133
+
2125
2134
case SQL_SMALLINT :
2126
2135
rc = SQLBindCol ((SQLHSTMT )stmt_res -> hstmt , (SQLUSMALLINT )(i + 1 ),
2127
2136
SQL_C_DEFAULT , & row_data -> s_val , sizeof (row_data -> s_val ),
@@ -4444,6 +4453,7 @@ static int _php_db2_bind_data( stmt_handle *stmt_res, param_node *curr, zval **b
4444
4453
}
4445
4454
4446
4455
switch ( curr -> data_type ) {
4456
+ case SQL_BOOLEAN :
4447
4457
case SQL_SMALLINT :
4448
4458
case SQL_INTEGER :
4449
4459
case SQL_REAL :
@@ -5481,6 +5491,9 @@ PHP_FUNCTION(db2_field_type)
5481
5491
RETURN_FALSE ;
5482
5492
}
5483
5493
switch (stmt_res -> column_info [col ].type ) {
5494
+ case SQL_BOOLEAN :
5495
+ str_val = "boolean" ;
5496
+ break ;
5484
5497
case SQL_SMALLINT :
5485
5498
case SQL_INTEGER :
5486
5499
case SQL_BIGINT :
@@ -5931,6 +5944,8 @@ PHP_FUNCTION(db2_result)
5931
5944
}
5932
5945
break ;
5933
5946
5947
+ /* BOOLEAN can't be represented as true/false because false is considered an error */
5948
+ case SQL_BOOLEAN :
5934
5949
case SQL_SMALLINT :
5935
5950
case SQL_INTEGER :
5936
5951
rc = _php_db2_get_data (stmt_res , col_num + 1 , SQL_C_LONG , (SQLPOINTER )& long_val , sizeof (long_val ), & out_length );
@@ -6290,6 +6305,14 @@ static void _php_db2_bind_fetch_helper(INTERNAL_FUNCTION_PARAMETERS, int op)
6290
6305
strlen ((char * )row_data -> str_val ));
6291
6306
}
6292
6307
break ;
6308
+ case SQL_BOOLEAN :
6309
+ if ( op & DB2_FETCH_ASSOC ) {
6310
+ add_assoc_bool (return_value , (char * )stmt_res -> column_info [i ].name , row_data -> i_val );
6311
+ }
6312
+ if ( op & DB2_FETCH_INDEX ) {
6313
+ add_index_bool (return_value , i , row_data -> i_val );
6314
+ }
6315
+ break ;
6293
6316
case SQL_SMALLINT :
6294
6317
if ( op & DB2_FETCH_ASSOC ) {
6295
6318
add_assoc_long (return_value , (char * )stmt_res -> column_info [i ].name , row_data -> s_val );
0 commit comments