@@ -1894,8 +1894,19 @@ static void _php_ibase_field_info(zval *return_value, ibase_query *ib_query, int
18941894
18951895 array_init (return_value );
18961896
1897- if (is_outvar ) {
1898- // TODO: use newer API for long names
1897+ // AFAIK describe bind does not set sqlname, aliasname, relname?
1898+ // Confirmation needed so I leave this as is. After that we can check
1899+ // is_outvar
1900+
1901+ #if FB_API_VER >= 40
1902+ if (IBG (fb_get_master_interface ) && IBG (fb_get_statement_interface )) {
1903+ if (fb_insert_field_info (IB_STATUS , ib_query , is_outvar , num , return_value )){
1904+ _php_ibase_error ();
1905+ RETURN_FALSE ;
1906+ }
1907+ } else {
1908+ #endif
1909+ // Old API
18991910 add_index_stringl (return_value , 0 , var -> sqlname , MIN (31 , var -> sqlname_length ));
19001911 add_assoc_stringl (return_value , "name" , var -> sqlname , MIN (31 , var -> sqlname_length ));
19011912
@@ -1904,15 +1915,9 @@ static void _php_ibase_field_info(zval *return_value, ibase_query *ib_query, int
19041915
19051916 add_index_stringl (return_value , 2 , var -> relname , MIN (31 , var -> relname_length ));
19061917 add_assoc_stringl (return_value , "relation" , var -> relname , MIN (31 , var -> relname_length ));
1907- } else {
1908- // AFAIK describe bind does not set these. Confirmation pending.
1909- add_index_stringl (return_value , 0 , "" , 0 );
1910- add_assoc_stringl (return_value , "name" , "" , 0 );
1911- add_index_stringl (return_value , 1 , "" , 0 );
1912- add_assoc_stringl (return_value , "alias" , "" , 0 );
1913- add_index_stringl (return_value , 2 , "" , 0 );
1914- add_assoc_stringl (return_value , "relation" , "" , 0 );
1918+ #if FB_API_VER >= 40
19151919 }
1920+ #endif
19161921
19171922 len = slprintf (buf , 16 , "%d" , var -> sqllen );
19181923 add_index_stringl (return_value , 3 , buf , len );
0 commit comments