abies Fri May 21 10:24:34 2004 EDT Modified files: /php-src/ext/interbase ibase_query.c /php-src/ext/interbase/tests 003.phpt Log: Removed strcpy() call from most common case Added test for hash index generation http://cvs.php.net/diff.php/php-src/ext/interbase/ibase_query.c?r1=1.7&r2=1.8&ty=u Index: php-src/ext/interbase/ibase_query.c diff -u php-src/ext/interbase/ibase_query.c:1.7 php-src/ext/interbase/ibase_query.c:1.8 --- php-src/ext/interbase/ibase_query.c:1.7 Fri May 21 09:46:04 2004 +++ php-src/ext/interbase/ibase_query.c Fri May 21 10:24:34 2004 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: ibase_query.c,v 1.7 2004/05/21 13:46:04 abies Exp $ */ +/* $Id: ibase_query.c,v 1.8 2004/05/21 14:24:34 abies Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -1504,8 +1504,8 @@ array_init(return_value); for (i = 0; i < ib_result->out_sqlda->sqld; ++i) { - char alias[METADATALENGTH+4]; XSQLVAR *var = &ib_result->out_sqlda->sqlvar[i]; + char buf[METADATALENGTH+4], *alias = var->aliasname; if (! (fetch_type & FETCH_ROW)) { int i = 0; @@ -1515,17 +1515,18 @@ * Ensure no two columns have identical names: * keep generating new names until we find one that is unique. */ - switch (*var->aliasname) { + switch (*alias) { void *p; default: i = 1; - strcpy(alias, base = var->aliasname); + base = alias; - while (SUCCESS == zend_symtable_find(Z_ARRVAL_P(return_value),alias,strlen(alias)+1,&p)) { + while (SUCCESS == zend_symtable_find( + Z_ARRVAL_P(return_value),alias,strlen(alias)+1,&p)) { case '\0': - sprintf(alias, "%s_%02d", base, i++); + sprintf(alias = buf, "%s_%02d", base, i++); } } } http://cvs.php.net/diff.php/php-src/ext/interbase/tests/003.phpt?r1=1.8&r2=1.9&ty=u Index: php-src/ext/interbase/tests/003.phpt diff -u php-src/ext/interbase/tests/003.phpt:1.8 php-src/ext/interbase/tests/003.phpt:1.9 --- php-src/ext/interbase/tests/003.phpt:1.8 Wed May 19 04:54:52 2004 +++ php-src/ext/interbase/tests/003.phpt Fri May 21 10:24:34 2004 @@ -3,7 +3,7 @@ --SKIPIF-- <?php include("skipif.inc"); ?> --FILE-- -<?php /* $Id: 003.phpt,v 1.8 2004/05/19 08:54:52 helly Exp $ */ +<?php /* $Id: 003.phpt,v 1.9 2004/05/21 14:24:34 abies Exp $ */ require("interbase.inc"); ibase_connect($test_base); @@ -125,8 +125,59 @@ ibase_free_result($sel); } /* for($iter) */ + /* check for correct handling of duplicate field names */ + $q = ibase_query('SELECT 1 AS id, 2 AS id, 3 AS id, 4 AS id, 5 AS id, 6 AS id, 7 AS id, 8 AS id, 9 AS id, + 10 AS id, 11 AS id, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 FROM rdb$database'); + var_dump(ibase_fetch_assoc($q)); + ibase_close(); echo "end of test\n"; ?> --EXPECT-- +array(22) { + ["ID"]=> + int(1) + ["ID_01"]=> + int(2) + ["ID_02"]=> + int(3) + ["ID_03"]=> + int(4) + ["ID_04"]=> + int(5) + ["ID_05"]=> + int(6) + ["ID_06"]=> + int(7) + ["ID_07"]=> + int(8) + ["ID_08"]=> + int(9) + ["ID_09"]=> + int(10) + ["ID_10"]=> + int(11) + ["FIELD_00"]=> + int(12) + ["FIELD_01"]=> + int(13) + ["FIELD_02"]=> + int(14) + ["FIELD_03"]=> + int(15) + ["FIELD_04"]=> + int(16) + ["FIELD_05"]=> + int(17) + ["FIELD_06"]=> + int(18) + ["FIELD_07"]=> + int(19) + ["FIELD_08"]=> + int(20) + ["FIELD_09"]=> + int(21) + ["FIELD_10"]=> + int(22) +} end of test
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php