From 35b1755295eafc813b8fe515a1bf013bb4b11fc1 Mon Sep 17 00:00:00 2001 From: Philippe Villiers Date: Wed, 18 Apr 2012 09:22:04 +0200 Subject: [PATCH 1/2] Fix bug #54379 PDO_OCI: UTF-8 output gets truncated --- ext/pdo_oci/oci_statement.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/pdo_oci/oci_statement.c b/ext/pdo_oci/oci_statement.c index da3542559fdb9..373c903aa5888 100755 --- a/ext/pdo_oci/oci_statement.c +++ b/ext/pdo_oci/oci_statement.c @@ -529,7 +529,7 @@ static int oci_stmt_describe(pdo_stmt_t *stmt, int colno TSRMLS_DC) /* {{{ */ (param, OCI_DTYPE_PARAM, &colname, &namelen, OCI_ATTR_NAME, S->err)); col->precision = scale; - col->maxlen = data_size; + col->maxlen = ( data_size + 1 ) * sizeof(utext); col->namelen = namelen; col->name = estrndup((char *)colname, namelen); From c119f1374fe5dea8d7b62368b2473d2106a04ffb Mon Sep 17 00:00:00 2001 From: Philippe Villiers Date: Sat, 5 May 2012 20:13:33 +0200 Subject: [PATCH 2/2] Add test for bug #54379 It will probably need fixes/tweaks, especially with the given DSN at line 12 --- ext/pdo_oci/tests/bug54379.phpt | 48 +++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 ext/pdo_oci/tests/bug54379.phpt diff --git a/ext/pdo_oci/tests/bug54379.phpt b/ext/pdo_oci/tests/bug54379.phpt new file mode 100644 index 0000000000000..692a48da5259a --- /dev/null +++ b/ext/pdo_oci/tests/bug54379.phpt @@ -0,0 +1,48 @@ +--TEST-- +Bug #54379 (PDO_OCI: UTF-8 output gets truncated) +--SKIPIF-- + +--FILE-- +setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + + +try { + $db->exec("DROP TABLE test_utf8_trunc"); +} catch (Exception $e) { +} + + +$db->exec("CREATE TABLE test_utf8_trunc (col1 NVARCHAR2(20))"); +$db->exec("INSERT INTO test_utf8_trunc VALUES('12345678901234567890')"); +$db->exec("INSERT INTO test_utf8_trunc VALUES('あいうえおかきくけこさしすせそたちつてと')"); + +$stmt = $db->prepare("SELECT * FROM test_utf8_trunc"); + +$stmt->execute(); +var_dump($stmt->fetchAll(PDO::FETCH_ASSOC)); + +$db->exec("DROP TABLE test_utf8_trunc"); + +?> +--EXPECTF-- +array(2) { + [0]=> + array(1) { + ["COL1"]=> + string(20) "12345678901234567890" + } + [1]=> + array(1) { + ["COL1"]=> + string(40) "あいうえおかきくけこさしすせそたちつてと" + } +}