Bug->Req #47588 [Fbk->Opn]: PDO_DBLIB: barfs on quoted field names

From: Date: Tue, 22 Jun 2010 02:52:25 +0000
Subject: Bug->Req #47588 [Fbk->Opn]: PDO_DBLIB: barfs on quoted field names
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-151752@lists.php.net to get a copy of this message
Edit report at http://bugs.php.net/bug.php?id=47588&edit=1

 ID:               47588
 Updated by:       ssufficool@php.net
 Reported by:      ssufficool at roadrunner dot com
 Summary:          PDO_DBLIB: barfs on quoted field names
-Status:           Feedback
+Status:           Open
-Type:             Bug
+Type:             Feature/Change Request
 Package:          PDO related
 Operating System: Linux Gentoo 2.6.x
 PHP Version:      5.3-svn
-Assigned To:      
+Assigned To:      ssufficool



Previous Comments:
------------------------------------------------------------------------
[2010-04-24 01:03:18] felipe@php.net

But this patch has a side effect, when using for example... 'where foo =
"bar"', the "bar" will be identified as an identifier, not a literal.
Right?

------------------------------------------------------------------------
[2010-03-20 00:50:02] ssufficool at roadrunner dot com

Set quoted identifiers to allow "FIELD NAME" quoting style.

Index: ext/pdo_dblib/dblib_driver.c
===================================================================
--- ext/pdo_dblib/dblib_driver.c        (revision 296453)
+++ ext/pdo_dblib/dblib_driver.c        (working copy)
@@ -236,6 +236,9 @@
        /* limit text/image from network */
        DBSETOPT(H->link, DBTEXTSIZE, "2147483647");

+       /* Allow double quoted field and table names */
+       DBSETOPT(H->link, DBQUOTEDIDENT, NULL);
+
        if (vars[3].optval && FAIL == dbuse(H->link, vars[3].optval)) {
                goto cleanup;
        }

------------------------------------------------------------------------
[2009-05-15 19:43:17] ssufficool at roadrunner dot com

Solution:

tsql from freetds package set the following where PDO does not:
set quoted_identifier on
set ansi_warnings on
set ansi_padding on
set ansi_nulls on
set concat_null_yields_null on

Since this is default behavior of FreeTDS (tsql) and NT DBLIB (isql), I
assume it should be for PDO dblib as well.

------------------------------------------------------------------------
[2009-03-06 16:13:33] ssufficool at roadrunner dot com

Description:
------------
When passing a query containing double quoted field names, the query
fails. 

Reproduce code:
---------------
$pdo_ms = new PDO('dblib:host=db01;dbname=database',
$_SESSION['user'], $_SESSION['pass'], array(PDO::ATTR_ERRMODE =>
PDO::ERRMODE_EXCEPTION ) );

$rs = $pdo_ms->prepare('SELECT "myView"."FieldName" from
"myView" order
by "Some Field"')


Expected result:
----------------
A valid handle to a stmt in $rs


Actual result:
--------------
SQLSTATE[HY000]: General error: 20018 Incorrect syntax near 'FieldName'.
[20018] (severity 5) [(null)]



------------------------------------------------------------------------



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=47588&edit=1


Thread (6 messages)

« previous php.bugs (#151752) next »