diff options
Diffstat (limited to 'ext/sybase_ct')
| -rw-r--r-- | ext/sybase_ct/php_sybase_ct.c | 100 | ||||
| -rw-r--r-- | ext/sybase_ct/php_sybase_ct.h | 4 | ||||
| -rw-r--r-- | ext/sybase_ct/tests/bug30312.phpt | 6 | ||||
| -rw-r--r-- | ext/sybase_ct/tests/test.inc | 7 | ||||
| -rw-r--r-- | ext/sybase_ct/tests/test_fetch_object.phpt | 50 | ||||
| -rw-r--r-- | ext/sybase_ct/tests/test_fields.phpt | 72 | ||||
| -rw-r--r-- | ext/sybase_ct/tests/test_msghandler_handled.phpt | 5 |
7 files changed, 124 insertions, 120 deletions
diff --git a/ext/sybase_ct/php_sybase_ct.c b/ext/sybase_ct/php_sybase_ct.c index 9b922129e..4479336a9 100644 --- a/ext/sybase_ct/php_sybase_ct.c +++ b/ext/sybase_ct/php_sybase_ct.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2006 The PHP Group | + | Copyright (c) 1997-2007 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_sybase_ct.c,v 1.103.2.5.2.6 2006/07/25 09:20:32 thetaphi Exp $ */ +/* $Id: php_sybase_ct.c,v 1.103.2.5.2.13 2007/04/10 15:56:31 helly Exp $ */ #ifdef HAVE_CONFIG_H @@ -135,6 +135,9 @@ static int _clean_invalid_results(zend_rsrc_list_entry *le TSRMLS_DC) return 0; } +#define efree_n(x) { efree(x); x = NULL; } +#define efree_if(x) if (x) efree_n(x) + static void _free_sybase_result(sybase_result *result) { int i, j; @@ -157,6 +160,19 @@ static void _free_sybase_result(sybase_result *result) efree(result->fields); } + if (result->tmp_buffer) { + for (i=0; i<result->num_fields; i++) { + efree(result->tmp_buffer[i]); + } + efree(result->tmp_buffer); + } + + efree_if(result->lengths); + efree_if(result->indicators); + efree_if(result->datafmt); + efree_if(result->numerics); + efree_if(result->types); + efree(result); } @@ -246,7 +262,7 @@ static CS_RETCODE CS_PUBLIC _client_message_handler(CS_CONTEXT *context, CS_CONN TSRMLS_FETCH(); if (CS_SEVERITY(errmsg->msgnumber) >= SybCtG(min_client_severity)) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Sybase: Client message: %s (severity %d)", errmsg->msgstring, CS_SEVERITY(errmsg->msgnumber)); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Sybase: Client message: %s (severity %ld)", errmsg->msgstring, CS_SEVERITY(errmsg->msgnumber)); } STR_FREE(SybCtG(server_message)); SybCtG(server_message) = estrdup(errmsg->msgstring); @@ -351,8 +367,8 @@ static CS_RETCODE CS_PUBLIC _server_message_handler(CS_CONTEXT *context, CS_CONN /* Spit out a warning if neither of them has handled this message */ if (!handled) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Sybase: Server message: %s (severity %d, procedure %s)", - srvmsg->text, srvmsg->severity, ((srvmsg->proclen>0) ? srvmsg->proc : "N/A")); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Sybase: Server message: %s (severity %ld, procedure %s)", + srvmsg->text, (long)srvmsg->severity, ((srvmsg->proclen>0) ? srvmsg->proc : "N/A")); } return CS_SUCCEED; @@ -512,16 +528,16 @@ static int php_sybase_do_connect_internal(sybase_link *sybase, char *host, char if (charset) { if (cs_loc_alloc(SybCtG(context), &tmp_locale)!=CS_SUCCEED) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Sybase: Unable to allocate locale information."); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Sybase: Unable to allocate locale information"); } else { if (cs_locale(SybCtG(context), CS_SET, tmp_locale, CS_LC_ALL, NULL, CS_NULLTERM, NULL)!=CS_SUCCEED) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Sybase: Unable to load default locale data."); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Sybase: Unable to load default locale data"); } else { if (cs_locale(SybCtG(context), CS_SET, tmp_locale, CS_SYB_CHARSET, charset, CS_NULLTERM, NULL)!=CS_SUCCEED) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Sybase: Unable to update character set."); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Sybase: Unable to update character set"); } else { if (ct_con_props(sybase->connection, CS_SET, CS_LOC_PROP, tmp_locale, CS_UNUSED, NULL)!=CS_SUCCEED) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Sybase: Unable to update connection properties."); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Sybase: Unable to update connection properties"); } } } @@ -530,7 +546,7 @@ static int php_sybase_do_connect_internal(sybase_link *sybase, char *host, char if (cfg_get_long("sybct.packet_size", &packetsize) == SUCCESS) { if (ct_con_props(sybase->connection, CS_SET, CS_PACKETSIZE, (CS_VOID *)&packetsize, CS_UNUSED, NULL) != CS_SUCCEED) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Sybase: Unable to update connection packetsize."); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Sybase: Unable to update connection packetsize"); } } @@ -599,9 +615,7 @@ static void php_sybase_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) convert_to_string_ex(yyhost); host = Z_STRVAL_PP(yyhost); user=passwd=charset=appname=NULL; - hashed_details_length = Z_STRLEN_PP(yyhost)+6+5; - hashed_details = (char *) emalloc(hashed_details_length+1); - sprintf(hashed_details, "sybase_%s____", Z_STRVAL_PP(yyhost)); + hashed_details_length = spprintf(&hashed_details, 0, "sybase_%s____", Z_STRVAL_PP(yyhost)); } break; case 2: { @@ -615,9 +629,7 @@ static void php_sybase_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) host = Z_STRVAL_PP(yyhost); user = Z_STRVAL_PP(yyuser); passwd=charset=appname=NULL; - hashed_details_length = Z_STRLEN_PP(yyhost)+Z_STRLEN_PP(yyuser)+6+5; - hashed_details = (char *) emalloc(hashed_details_length+1); - sprintf(hashed_details, "sybase_%s_%s___", Z_STRVAL_PP(yyhost), Z_STRVAL_PP(yyuser)); + hashed_details_length = spprintf(&hashed_details, 0, "sybase_%s_%s___", Z_STRVAL_PP(yyhost), Z_STRVAL_PP(yyuser)); } break; case 3: { @@ -633,9 +645,7 @@ static void php_sybase_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) user = Z_STRVAL_PP(yyuser); passwd = Z_STRVAL_PP(yypasswd); charset=appname=NULL; - hashed_details_length = Z_STRLEN_PP(yyhost)+Z_STRLEN_PP(yyuser)+Z_STRLEN_PP(yypasswd)+6+5; - hashed_details = (char *) emalloc(hashed_details_length+1); - sprintf(hashed_details, "sybase_%s_%s_%s__", Z_STRVAL_PP(yyhost), Z_STRVAL_PP(yyuser), Z_STRVAL_PP(yypasswd)); + hashed_details_length = spprintf(&hashed_details, 0, "sybase_%s_%s_%s__", Z_STRVAL_PP(yyhost), Z_STRVAL_PP(yyuser), Z_STRVAL_PP(yypasswd)); } break; case 4: { @@ -653,9 +663,7 @@ static void php_sybase_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) passwd = Z_STRVAL_PP(yypasswd); charset = Z_STRVAL_PP(yycharset); appname=NULL; - hashed_details_length = Z_STRLEN_PP(yyhost)+Z_STRLEN_PP(yyuser)+Z_STRLEN_PP(yypasswd)+Z_STRLEN_PP(yycharset)+6+5; - hashed_details = (char *) emalloc(hashed_details_length+1); - sprintf(hashed_details, "sybase_%s_%s_%s_%s_", Z_STRVAL_PP(yyhost), Z_STRVAL_PP(yyuser), Z_STRVAL_PP(yypasswd), Z_STRVAL_PP(yycharset)); + hashed_details_length = spprintf(&hashed_details, 0, "sybase_%s_%s_%s_%s_", Z_STRVAL_PP(yyhost), Z_STRVAL_PP(yyuser), Z_STRVAL_PP(yypasswd), Z_STRVAL_PP(yycharset)); } break; case 5: { @@ -674,9 +682,7 @@ static void php_sybase_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) passwd = Z_STRVAL_PP(yypasswd); charset = Z_STRVAL_PP(yycharset); appname = Z_STRVAL_PP(yyappname); - hashed_details_length = Z_STRLEN_PP(yyhost)+Z_STRLEN_PP(yyuser)+Z_STRLEN_PP(yypasswd)+Z_STRLEN_PP(yycharset)+Z_STRLEN_PP(yyappname)+6+5; - hashed_details = (char *) emalloc(hashed_details_length+1); - sprintf(hashed_details, "sybase_%s_%s_%s_%s_%s", Z_STRVAL_PP(yyhost), Z_STRVAL_PP(yyuser), Z_STRVAL_PP(yypasswd), Z_STRVAL_PP(yycharset), Z_STRVAL_PP(yyappname)); + hashed_details_length = spprintf(&hashed_details, 0, "sybase_%s_%s_%s_%s_%s", Z_STRVAL_PP(yyhost), Z_STRVAL_PP(yyuser), Z_STRVAL_PP(yypasswd), Z_STRVAL_PP(yycharset), Z_STRVAL_PP(yyappname)); } break; default: @@ -1006,8 +1012,7 @@ PHP_FUNCTION(sybase_select_db) ZEND_FETCH_RESOURCE2(sybase_ptr, sybase_link *, sybase_link_index, id, "Sybase-Link", le_link, le_plink); convert_to_string_ex(db); - cmdbuf = (char *) emalloc(sizeof("use ")+Z_STRLEN_PP(db)+1); - sprintf(cmdbuf, "use %s", Z_STRVAL_PP(db)); /* SAFE */ + spprintf(&cmdbuf, 0, "use %s", Z_STRVAL_PP(db)); /* SAFE */ if (exec_cmd(sybase_ptr, cmdbuf)==FAILURE) { efree(cmdbuf); @@ -1026,15 +1031,15 @@ static int php_sybase_finish_results(sybase_result *result TSRMLS_DC) CS_RETCODE retcode; CS_INT restype; - efree(result->datafmt); - efree(result->lengths); - efree(result->indicators); - efree(result->numerics); - efree(result->types); + efree_n(result->datafmt); + efree_n(result->lengths); + efree_n(result->indicators); + efree_n(result->numerics); + efree_n(result->types); for (i=0; i<result->num_fields; i++) { efree(result->tmp_buffer[i]); } - efree(result->tmp_buffer); + efree_n(result->tmp_buffer); /* Indicate we have read all rows */ result->sybase_ptr->active_result_index= 0; @@ -1116,7 +1121,7 @@ static int php_sybase_finish_results(sybase_result *result TSRMLS_DC) #define RETURN_DOUBLE_VAL(result, buf, length) \ if ((length - 1) <= EG(precision)) { \ errno = 0; \ - Z_DVAL(result) = strtod(buf, NULL); \ + Z_DVAL(result) = zend_strtod(buf, NULL); \ if (errno != ERANGE) { \ Z_TYPE(result) = IS_DOUBLE; \ } else { \ @@ -1138,18 +1143,11 @@ static int php_sybase_fetch_result_row (sybase_result *result, int numrows) } if (numrows!=-1) numrows+= result->num_rows; - while ((retcode=ct_fetch(result->sybase_ptr->cmd, CS_UNUSED, CS_UNUSED, CS_UNUSED, NULL))==CS_SUCCEED - || retcode==CS_ROW_FAIL) { - /* - if (retcode==CS_ROW_FAIL) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Sybase: Error reading row %d", result->num_rows); - } - */ - + while ((retcode=ct_fetch(result->sybase_ptr->cmd, CS_UNUSED, CS_UNUSED, CS_UNUSED, NULL))==CS_SUCCEED) { result->num_rows++; i= result->store ? result->num_rows- 1 : 0; if (i >= result->blocks_initialized*SYBASE_ROWS_BLOCK) { - result->data = (zval **) erealloc(result->data, sizeof(zval *)*SYBASE_ROWS_BLOCK*(++result->blocks_initialized)); + result->data = (zval **) safe_erealloc(result->data, SYBASE_ROWS_BLOCK*(++result->blocks_initialized), sizeof(zval *), 0); } if (result->store || 1 == result->num_rows) { result->data[i] = (zval *) safe_emalloc(sizeof(zval), result->num_fields, 0); @@ -1202,7 +1200,11 @@ static int php_sybase_fetch_result_row (sybase_result *result, int numrows) } if (numrows!=-1 && result->num_rows>=numrows) break; } - + + if (retcode==CS_ROW_FAIL) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Sybase: Error reading row %d", result->num_rows); + return retcode; + } result->last_retcode= retcode; switch (retcode) { case CS_END_DATA: @@ -2125,16 +2127,16 @@ PHP_MINFO_FUNCTION(sybase) php_info_print_table_start(); php_info_print_table_header(2, "Sybase_CT Support", "enabled" ); - sprintf(buf, "%ld", SybCtG(num_persistent)); + snprintf(buf, sizeof(buf), "%ld", SybCtG(num_persistent)); php_info_print_table_row(2, "Active Persistent Links", buf); - sprintf(buf, "%ld", SybCtG(num_links)); + snprintf(buf, sizeof(buf), "%ld", SybCtG(num_links)); php_info_print_table_row(2, "Active Links", buf); - sprintf(buf, "%ld", SybCtG(min_server_severity)); + snprintf(buf, sizeof(buf), "%ld", SybCtG(min_server_severity)); php_info_print_table_row(2, "Min server severity", buf); - sprintf(buf, "%ld", SybCtG(min_client_severity)); + snprintf(buf, sizeof(buf), "%ld", SybCtG(min_client_severity)); php_info_print_table_row(2, "Min client severity", buf); php_info_print_table_row(2, "Application Name", SybCtG(appname)); - sprintf(buf, "%ld", SybCtG(deadlock_retry_count)); + snprintf(buf, sizeof(buf), "%ld", SybCtG(deadlock_retry_count)); php_info_print_table_row(2, "Deadlock retry count", buf); php_info_print_table_end(); diff --git a/ext/sybase_ct/php_sybase_ct.h b/ext/sybase_ct/php_sybase_ct.h index c4749c65d..9bebb2077 100644 --- a/ext/sybase_ct/php_sybase_ct.h +++ b/ext/sybase_ct/php_sybase_ct.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2006 The PHP Group | + | Copyright (c) 1997-2007 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_sybase_ct.h,v 1.19.2.2 2006/01/01 12:50:16 sniper Exp $ */ +/* $Id: php_sybase_ct.h,v 1.19.2.2.2.1 2007/01/01 09:36:09 sebastian Exp $ */ #ifndef PHP_SYBASE_CT_H #define PHP_SYBASE_CT_H diff --git a/ext/sybase_ct/tests/bug30312.phpt b/ext/sybase_ct/tests/bug30312.phpt index a7b02a622..c71a39e86 100644 --- a/ext/sybase_ct/tests/bug30312.phpt +++ b/ext/sybase_ct/tests/bug30312.phpt @@ -6,7 +6,7 @@ Sybase-CT bug #30312 (sybase_unbuffered_query calls) <?php /* This file is part of PHP test framework for ext/sybase_ct * - * $Id: bug30312.phpt,v 1.1 2005/02/06 11:58:53 thekid Exp $ + * $Id: bug30312.phpt,v 1.1.4.1 2007/03/14 11:46:06 thekid Exp $ */ require('test.inc'); @@ -23,5 +23,5 @@ Sybase-CT bug #30312 (sybase_unbuffered_query calls) var_dump($array[0]); ?> --EXPECTF-- -string(%d) "%s %d %d %d:%d%s" -string(%d) "%s %d %d %d:%d%s" +string(%d) "%s %d %d %d:%d%s" +string(%d) "%s %d %d %d:%d%s" diff --git a/ext/sybase_ct/tests/test.inc b/ext/sybase_ct/tests/test.inc index daf33007a..ebd399a25 100644 --- a/ext/sybase_ct/tests/test.inc +++ b/ext/sybase_ct/tests/test.inc @@ -1,7 +1,7 @@ <?php /* This file is part of PHP test framework for ext/sybase_ct * - * $Id: test.inc,v 1.4 2004/02/10 20:39:08 thekid Exp $ + * $Id: test.inc,v 1.4.6.2 2007/03/11 12:56:44 tony2001 Exp $ */ // Change if needed @@ -28,7 +28,7 @@ // {{{ public static bool static_handler(int msgnumber, int severity, int state, int line, string text) // Handles server messages - function static_handler($msgnumber, $severity, $state, $line, $text) { + static function static_handler($msgnumber, $severity, $state, $line, $text) { return sybase_msg_handler($msgnumber, $severity, $state, $line, $text); } // }}} @@ -78,7 +78,8 @@ // {{{ mixed sybase_select_single(resource dbh, string query) // Fires an SQL query and returns the first value from the first row function sybase_select_single($dbh, $query) { - return array_shift(sybase_fetch_row(sybase_query($query, $dbh))); + $a = sybase_fetch_row(sybase_query($query, $dbh)); + return array_shift($a); } // }}} ?> diff --git a/ext/sybase_ct/tests/test_fetch_object.phpt b/ext/sybase_ct/tests/test_fetch_object.phpt index 0393967b9..a3255b33d 100644 --- a/ext/sybase_ct/tests/test_fetch_object.phpt +++ b/ext/sybase_ct/tests/test_fetch_object.phpt @@ -8,7 +8,7 @@ Sybase-CT sybase_fetch_object <?php /* This file is part of PHP test framework for ext/sybase_ct * - * $Id: test_fetch_object.phpt,v 1.1 2004/07/11 16:10:03 thekid Exp $ + * $Id: test_fetch_object.phpt,v 1.1.6.1 2007/03/14 11:44:24 thekid Exp $ */ require('test.inc'); @@ -46,29 +46,29 @@ Sybase-CT sybase_fetch_object sybase_close($db); ?> --EXPECTF-- -class stdClass { - %s $id = 1; - %s $caption = 'Hello'; - %s $author = 'timm'; - %s $lastchange = '%s'; -} -class article { - %s $id = 1; - %s $caption = 'Hello'; - %s $author = 'timm'; - %s $lastchange = '%s'; -} -class article { - %s $id = 1; - %s $caption = 'Hello'; - %s $author = 'timm'; - %s $lastchange = '%s'; -} +stdClass::__set_state(array( + 'id' => 1, + 'caption' => 'Hello', + 'author' => 'timm', + 'lastchange' => '%s', +)) +article::__set_state(array( + 'id' => 1, + 'caption' => 'Hello', + 'author' => 'timm', + 'lastchange' => '%s', +)) +article::__set_state(array( + 'id' => 1, + 'caption' => 'Hello', + 'author' => 'timm', + 'lastchange' => '%s', +)) Notice: sybase_fetch_object(): Sybase: Class *** has not been declared in %s/test_fetch_object.php on line %d -class stdClass { - %s $id = 1; - %s $caption = 'Hello'; - %s $author = 'timm'; - %s $lastchange = '%s'; -} +stdClass::__set_state(array( + 'id' => 1, + 'caption' => 'Hello', + 'author' => 'timm', + 'lastchange' => '%s', +)) diff --git a/ext/sybase_ct/tests/test_fields.phpt b/ext/sybase_ct/tests/test_fields.phpt index 5356751c2..eef941148 100644 --- a/ext/sybase_ct/tests/test_fields.phpt +++ b/ext/sybase_ct/tests/test_fields.phpt @@ -6,7 +6,7 @@ Sybase-CT sybase_field_* functions <?php /* This file is part of PHP test framework for ext/sybase_ct * - * $Id: test_fields.phpt,v 1.1 2004/07/12 20:26:53 thekid Exp $ + * $Id: test_fields.phpt,v 1.1.6.1 2007/03/14 11:44:24 thekid Exp $ */ require('test.inc'); @@ -38,39 +38,39 @@ Sybase-CT sybase_field_* functions --EXPECTF-- resource(%d) of type (sybase-ct result) int(4) -class stdClass { - %s $name = 'id'; - %s $max_length = 11; - %s $column_source = ''; - %s $numeric = 1; - %s $type = 'int'; -} -class stdClass { - %s $name = 'caption'; - %s $max_length = 5; - %s $column_source = ''; - %s $numeric = 0; - %s $type = 'string'; -} -class stdClass { - %s $name = 'author'; - %s $max_length = 4; - %s $column_source = ''; - %s $numeric = 0; - %s $type = 'string'; -} -class stdClass { - %s $name = 'lastchange'; - %s $max_length = 29; - %s $column_source = ''; - %s $numeric = 0; - %s $type = 'datetime'; -} +stdClass::__set_state(array( + 'name' => 'id', + 'max_length' => 11, + 'column_source' => '', + 'numeric' => 1, + 'type' => 'int', +)) +stdClass::__set_state(array( + 'name' => 'caption', + 'max_length' => 5, + 'column_source' => '', + 'numeric' => 0, + 'type' => 'string', +)) +stdClass::__set_state(array( + 'name' => 'author', + 'max_length' => 4, + 'column_source' => '', + 'numeric' => 0, + 'type' => 'string', +)) +stdClass::__set_state(array( + 'name' => 'lastchange', + 'max_length' => 29, + 'column_source' => '', + 'numeric' => 0, + 'type' => 'datetime', +)) bool(true) -class stdClass { - %s $name = 'caption'; - %s $max_length = 5; - %s $column_source = ''; - %s $numeric = 0; - %s $type = 'string'; -} +stdClass::__set_state(array( + 'name' => 'caption', + 'max_length' => 5, + 'column_source' => '', + 'numeric' => 0, + 'type' => 'string', +)) diff --git a/ext/sybase_ct/tests/test_msghandler_handled.phpt b/ext/sybase_ct/tests/test_msghandler_handled.phpt index 67d1c1293..70aa75d14 100644 --- a/ext/sybase_ct/tests/test_msghandler_handled.phpt +++ b/ext/sybase_ct/tests/test_msghandler_handled.phpt @@ -6,7 +6,7 @@ Sybase-CT server message handler <?php /* This file is part of PHP test framework for ext/sybase_ct * - * $Id: test_msghandler_handled.phpt,v 1.1 2004/07/11 16:07:07 thekid Exp $ + * $Id: test_msghandler_handled.phpt,v 1.1.6.1 2007/03/14 11:57:45 thekid Exp $ */ require('test.inc'); @@ -20,6 +20,7 @@ Sybase-CT server message handler return; case 174: // The function 'GETDATE' requires 0 arguments. + case 11021: // Function GETDATE invoked with wrong number or type of argument(s) printf("*** Caught '%s'\n", trim($text)); return; } @@ -45,7 +46,7 @@ Sybase-CT server message handler --EXPECTF-- bool(true) >>> Query: select getdate(NULL) -*** Caught 'The function 'GETDATE' requires 0 arguments.' +*** Caught '%s' <<< Return: boolean bool(false) >>> Query: print "Hi" |
