Skip to content

Commit ad8150b

Browse files
committed
Fixing return value from fbsql_query after a DELETE FROM with success.
1 parent 2bf0a0e commit ad8150b

File tree

2 files changed

+65
-1
lines changed

2 files changed

+65
-1
lines changed

ext/fbsql/php_fbsql.c

Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,10 @@ void fbcInitialize();
108108
void fbaRelease();
109109
unsigned int fbaCount();
110110

111+
struct FBCAutoStartInfo {
112+
FBArray* infoLines;
113+
};
114+
111115

112116

113117
struct PHPFBResult
@@ -206,6 +210,9 @@ function_entry fbsql_functions[] = {
206210
PHP_FE(fbsql_password, NULL)
207211
PHP_FE(fbsql_warnings, NULL)
208212

213+
PHP_FE(fbsql_get_autostart_info, NULL)
214+
// PHP_FE(fbsql_set_autostart_info, NULL)
215+
209216
/* Aliases: */
210217
PHP_FALIAS(fbsql, fbsql_db_query, NULL)
211218

@@ -1538,7 +1545,7 @@ static void phpfbQuery(INTERNAL_FUNCTION_PARAMETERS, char* sql, PHPFBLink* link)
15381545
return_value->type = IS_LONG;
15391546
if (sR == 1 && md) fbcmdRelease(md);
15401547
}
1541-
else if (tp[0] == 'I' || tp[0] == 'U')
1548+
else if (tp[0] == 'I' || tp[0] == 'U' || tp[0] == 'A')
15421549
{
15431550
if (tp[0] == 'I') link->insert_id = fbcmdRowIndex(md);
15441551
return_value->value.lval = 1;
@@ -3020,6 +3027,60 @@ PHP_FUNCTION(fbsql_free_result)
30203027
}
30213028
/* }}} */
30223029

3030+
/* {{{ proto array fbsql_get_autostart_info([resource link_identifier])
3031+
*/
3032+
PHP_FUNCTION(fbsql_get_autostart_info)
3033+
{
3034+
PHPFBLink* phpLink = NULL;
3035+
zval **fbsql_link_index = NULL;
3036+
int id;
3037+
FBCAutoStartInfo* asInfo;
3038+
FBSQLLS_FETCH();
3039+
3040+
switch (ZEND_NUM_ARGS()) {
3041+
case 0:
3042+
id = php_fbsql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU FBSQLLS_CC);
3043+
CHECK_LINK(id);
3044+
break;
3045+
case 1:
3046+
if (zend_get_parameters_ex(1, &fbsql_link_index)==FAILURE) {
3047+
RETURN_FALSE;
3048+
}
3049+
id = -1;
3050+
break;
3051+
default:
3052+
WRONG_PARAM_COUNT;
3053+
break;
3054+
}
3055+
ZEND_FETCH_RESOURCE2(phpLink, PHPFBLink *, fbsql_link_index, id, "FrontBase-Link", le_link, le_plink);
3056+
3057+
if (phpLink->execHandler == NULL) {
3058+
if (FB_SQL_G(generateWarnings)) php_error(E_WARNING, "No valid Exec handler available for this connection");
3059+
RETURN_FALSE;
3060+
}
3061+
else {
3062+
array_init(return_value);
3063+
asInfo = fbcehGetAutoStartInfo(phpLink->execHandler);
3064+
if (asInfo != NULL) {
3065+
unsigned i;
3066+
3067+
for (i=0; i<fbaCount(asInfo->infoLines); i++) {
3068+
FBArray* infoLine = fbaObjectAtIndex(asInfo->infoLines, i);
3069+
// if (fbaCount(infoLine) == 2) {
3070+
// fbaObjectAtIndex(infoLine, 0);
3071+
// fbaObjectAtIndex(infoLine, 1);
3072+
// }
3073+
// else {
3074+
add_index_string(return_value, i, fbaObjectAtIndex(infoLine, 0), 1);
3075+
// }
3076+
3077+
}
3078+
}
3079+
}
3080+
}
3081+
/* }}} */
3082+
3083+
30233084
#endif
30243085

30253086
/*

ext/fbsql/php_fbsql.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,9 @@ PHP_FUNCTION(fbsql_username);
8686
PHP_FUNCTION(fbsql_password);
8787
PHP_FUNCTION(fbsql_warnings);
8888

89+
PHP_FUNCTION(fbsql_get_autostart_info);
90+
//PHP_FUNCTION(fbsql_set_autostart_info);
91+
8992
static void php_fbsql_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type);
9093
static void php_fbsql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistant);
9194

0 commit comments

Comments
 (0)