tony2001 Wed Apr 12 19:22:12 2006 UTC Modified files: /php-src/ext/oci8 oci8.c oci8_statement.c /php-src/ext/oci8/tests bind_long.phpt bind_long_raw.phpt bind_raw.phpt test.gif Log: MF51: fix #37059 (oci_bind_by_name() doesn't support RAW and LONG RAW fields) add tests http://cvs.php.net/viewcvs.cgi/php-src/ext/oci8/oci8.c?r1=1.296&r2=1.297&diff_format=u Index: php-src/ext/oci8/oci8.c diff -u php-src/ext/oci8/oci8.c:1.296 php-src/ext/oci8/oci8.c:1.297 --- php-src/ext/oci8/oci8.c:1.296 Wed Apr 12 17:59:57 2006 +++ php-src/ext/oci8/oci8.c Wed Apr 12 19:22:12 2006 @@ -26,7 +26,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: oci8.c,v 1.296 2006/04/12 17:59:57 tony2001 Exp $ */ +/* $Id: oci8.c,v 1.297 2006/04/12 19:22:12 tony2001 Exp $ */ /* TODO * * file://localhost/www/docs/oci10/ociaahan.htm#423823 - implement lob_empty() with OCI_ATTR_LOBEMPTY @@ -541,6 +541,8 @@ REGISTER_LONG_CONSTANT("SQLT_FLT",SQLT_FLT, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("SQLT_UIN",SQLT_UIN, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("SQLT_LNG",SQLT_LNG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLT_LBI",SQLT_LBI, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLT_BIN",SQLT_BIN, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("SQLT_ODT",SQLT_ODT, CONST_CS | CONST_PERSISTENT); #if defined(HAVE_OCI_INSTANT_CLIENT) || (defined(OCI_MAJOR_VERSION) && OCI_MAJOR_VERSION > 10) REGISTER_LONG_CONSTANT("SQLT_BDOUBLE",SQLT_BDOUBLE, CONST_CS | CONST_PERSISTENT); @@ -645,7 +647,7 @@ php_info_print_table_start(); php_info_print_table_row(2, "OCI8 Support", "enabled"); - php_info_print_table_row(2, "Revision", "$Revision: 1.296 $"); + php_info_print_table_row(2, "Revision", "$Revision: 1.297 $"); sprintf(buf, "%ld", OCI_G(num_persistent)); php_info_print_table_row(2, "Active Persistent Connections", buf); http://cvs.php.net/viewcvs.cgi/php-src/ext/oci8/oci8_statement.c?r1=1.18&r2=1.19&diff_format=u Index: php-src/ext/oci8/oci8_statement.c diff -u php-src/ext/oci8/oci8_statement.c:1.18 php-src/ext/oci8/oci8_statement.c:1.19 --- php-src/ext/oci8/oci8_statement.c:1.18 Sat Mar 18 22:06:45 2006 +++ php-src/ext/oci8/oci8_statement.c Wed Apr 12 19:22:12 2006 @@ -25,7 +25,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: oci8_statement.c,v 1.18 2006/03/18 22:06:45 tony2001 Exp $ */ +/* $Id: oci8_statement.c,v 1.19 2006/04/12 19:22:12 tony2001 Exp $ */ #ifdef HAVE_CONFIG_H @@ -493,6 +493,9 @@ case SQLT_BIN: default: define_type = SQLT_CHR; + if (outcol->data_type == SQLT_BIN) { + define_type = SQLT_BIN; + } if ((outcol->data_type == SQLT_DAT) || (outcol->data_type == SQLT_NUM) #ifdef SQLT_TIMESTAMP || (outcol->data_type == SQLT_TIMESTAMP) @@ -813,6 +816,9 @@ mode = OCI_DEFAULT; break; + case SQLT_LBI: + case SQLT_BIN: + case SQLT_LNG: case SQLT_CHR: /* this is the default case when type was not specified */ convert_to_string(var); http://cvs.php.net/viewcvs.cgi/php-src/ext/oci8/tests/bind_long.phpt?r1=1.1&r2=1.2&diff_format=u Index: php-src/ext/oci8/tests/bind_long.phpt diff -u /dev/null php-src/ext/oci8/tests/bind_long.phpt:1.2 --- /dev/null Wed Apr 12 19:22:12 2006 +++ php-src/ext/oci8/tests/bind_long.phpt Wed Apr 12 19:22:12 2006 @@ -0,0 +1,38 @@ +--TEST-- +bind LONG field +--SKIPIF-- +<?php if (!extension_loaded('oci8')) die("skip no oci8 extension"); ?> +--FILE-- +<?php + +require dirname(__FILE__)."/connect.inc"; + +$stmt = oci_parse($c, "create table phptestlng( id number(10), fileimage long)"); +oci_execute($stmt); + +$stmt = oci_parse ($c, "insert into phptestlng (id, fileimage) values (:id, :fileimage)"); +$i=1; +$fileimage = file_get_contents( dirname(__FILE__)."/test.gif"); + +oci_bind_by_name( $stmt, ":id", $i, -1); +oci_bind_by_name( $stmt, ":fileimage", $fileimage, -1, SQLT_LNG); +oci_execute($stmt, OCI_DEFAULT); +oci_commit($c); + +$stmt = oci_parse($c, "SELECT fileimage FROM phptestlng"); +oci_execute($stmt); + +$row = oci_fetch_row($stmt); +var_dump(md5($row[0])); +var_dump(strlen($row[0])); + +$stmt = oci_parse($c, "drop table phptestlng"); +oci_execute($stmt); + +echo "Done\n"; + +?> +--EXPECT-- +string(32) "d04e7036e2f4221abc88fd14e960a45b" +int(2523) +Done http://cvs.php.net/viewcvs.cgi/php-src/ext/oci8/tests/bind_long_raw.phpt?r1=1.1&r2=1.2&diff_format=u Index: php-src/ext/oci8/tests/bind_long_raw.phpt diff -u /dev/null php-src/ext/oci8/tests/bind_long_raw.phpt:1.2 --- /dev/null Wed Apr 12 19:22:12 2006 +++ php-src/ext/oci8/tests/bind_long_raw.phpt Wed Apr 12 19:22:12 2006 @@ -0,0 +1,38 @@ +--TEST-- +bind LONG RAW field +--SKIPIF-- +<?php if (!extension_loaded('oci8')) die("skip no oci8 extension"); ?> +--FILE-- +<?php + +require dirname(__FILE__)."/connect.inc"; + +$stmt = oci_parse($c, "create table phptestlngraw( id number(10), fileimage long raw)"); +oci_execute($stmt); + +$stmt = oci_parse ($c, "insert into phptestlngraw (id, fileimage) values (:id, :fileimage)"); +$i=1; +$fileimage = file_get_contents( dirname(__FILE__)."/test.gif"); + +oci_bind_by_name( $stmt, ":id", $i, -1); +oci_bind_by_name( $stmt, ":fileimage", $fileimage, -1, SQLT_LBI); +oci_execute($stmt, OCI_DEFAULT); +oci_commit($c); + +$stmt = oci_parse($c, "SELECT fileimage FROM phptestlngraw"); +oci_execute($stmt); + +$row = oci_fetch_row($stmt); +var_dump(md5($row[0])); +var_dump(strlen($row[0])); + +$stmt = oci_parse($c, "drop table phptestlngraw"); +oci_execute($stmt); + +echo "Done\n"; + +?> +--EXPECT-- +string(32) "614fcbba1effb7caa27ef0ef25c27fcf" +int(2523) +Done http://cvs.php.net/viewcvs.cgi/php-src/ext/oci8/tests/bind_raw.phpt?r1=1.1&r2=1.2&diff_format=u Index: php-src/ext/oci8/tests/bind_raw.phpt diff -u /dev/null php-src/ext/oci8/tests/bind_raw.phpt:1.2 --- /dev/null Wed Apr 12 19:22:12 2006 +++ php-src/ext/oci8/tests/bind_raw.phpt Wed Apr 12 19:22:12 2006 @@ -0,0 +1,39 @@ +--TEST-- +bind RAW field +--SKIPIF-- +<?php if (!extension_loaded('oci8')) die("skip no oci8 extension"); ?> +--FILE-- +<?php + +require dirname(__FILE__)."/connect.inc"; + +$stmt = oci_parse($c, "create table phptestrawtable( id number(10), fileimage raw(1000))"); +oci_execute($stmt); + +$stmt = oci_parse ($c, "insert into phptestrawtable (id, fileimage) values (:id, :fileimage)"); +$i=1; +$fileimage = file_get_contents( dirname(__FILE__)."/test.gif"); +$fileimage = substr($fileimage, 0, 300); + +oci_bind_by_name( $stmt, ":id", $i, -1); +oci_bind_by_name( $stmt, ":fileimage", $fileimage, -1, SQLT_BIN); +oci_execute($stmt, OCI_DEFAULT); +oci_commit($c); + +$stmt = oci_parse($c, "SELECT fileimage FROM phptestrawtable"); +oci_execute($stmt); + +$row = oci_fetch_row($stmt); +var_dump(md5($row[0])); +var_dump(strlen($row[0])); + +$stmt = oci_parse($c, "drop table phptestrawtable"); +oci_execute($stmt); + +echo "Done\n"; + +?> +--EXPECT-- +string(32) "88b274d7a257ac6f70435b83abd4e26e" +int(300) +Done http://cvs.php.net/viewcvs.cgi/php-src/ext/oci8/tests/test.gif?r1=1.1&r2=1.2&diff_format=u Index: php-src/ext/oci8/tests/test.gif
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php