[PHP-CVS] cvs: php-src(PHP_5_1) /ext/pdo pdo_sql_parser.c pdo_sql_parser.re

2006-01-25 Thread Ilia Alshanetsky
iliaa   Wed Jan 25 16:35:23 2006 UTC

  Modified files:  (Branch: PHP_5_1)
/php-src/ext/pdopdo_sql_parser.re pdo_sql_parser.c 
  Log:
  Properly rewrite queries where a bound parameter appears more then once.
  
  
http://cvs.php.net/viewcvs.cgi/php-src/ext/pdo/pdo_sql_parser.re?r1=1.28.2.3&r2=1.28.2.4&diff_format=u
Index: php-src/ext/pdo/pdo_sql_parser.re
diff -u php-src/ext/pdo/pdo_sql_parser.re:1.28.2.3 
php-src/ext/pdo/pdo_sql_parser.re:1.28.2.4
--- php-src/ext/pdo/pdo_sql_parser.re:1.28.2.3  Sun Jan  1 12:26:08 2006
+++ php-src/ext/pdo/pdo_sql_parser.re   Wed Jan 25 16:35:23 2006
@@ -16,7 +16,7 @@
   +--+
 */
 
-/* $Id: pdo_sql_parser.re,v 1.28.2.3 2006/01/01 12:26:08 sniper Exp $ */
+/* $Id: pdo_sql_parser.re,v 1.28.2.4 2006/01/25 16:35:23 iliaa Exp $ */
 
 #include "php.h"
 #include "php_pdo_driver.h"
@@ -287,15 +287,25 @@
}
 
for (plc = placeholders; plc; plc = plc->next) {
-   snprintf(idxbuf, sizeof(idxbuf), tmpl, plc->bindno + 1);
+   int skip_map = 0;
+   char *p;
+   name = estrndup(plc->pos, plc->len);
+
+   /* check if bound parameter is already available */
+   if (!strcmp(name, "?") || 
zend_hash_find(stmt->bound_param_map, name, plc->len + 1, (void**) &p) == 
FAILURE) {
+   snprintf(idxbuf, sizeof(idxbuf), tmpl, 
plc->bindno + 1);
+   } else {
+   memset(idxbuf, 0, sizeof(idxbuf));
+   memcpy(idxbuf, p, sizeof(idxbuf));
+   skip_map = 1;
+   }
+
plc->quoted = estrdup(idxbuf);
plc->qlen = strlen(plc->quoted);
plc->freeq = 1;
newbuffer_len += plc->qlen;
 
-   name = estrndup(plc->pos, plc->len);
-
-   if (stmt->named_rewrite_template) {
+   if (!skip_map && stmt->named_rewrite_template) {
/* create a mapping */

zend_hash_update(stmt->bound_param_map, name, 
plc->len + 1, idxbuf, plc->qlen + 1, NULL);
http://cvs.php.net/viewcvs.cgi/php-src/ext/pdo/pdo_sql_parser.c?r1=1.35.2.5&r2=1.35.2.6&diff_format=u
Index: php-src/ext/pdo/pdo_sql_parser.c
diff -u php-src/ext/pdo/pdo_sql_parser.c:1.35.2.5 
php-src/ext/pdo/pdo_sql_parser.c:1.35.2.6
--- php-src/ext/pdo/pdo_sql_parser.c:1.35.2.5   Sun Jan  1 12:50:11 2006
+++ php-src/ext/pdo/pdo_sql_parser.cWed Jan 25 16:35:23 2006
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.9.11 on Sun Jan  1 14:38:30 2006 */
+/* Generated by re2c 0.9.11 on Wed Jan 25 11:31:13 2006 */
 #line 1 "ext/pdo/pdo_sql_parser.re"
 /*
   +--+
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_sql_parser.c,v 1.35.2.5 2006/01/01 12:50:11 sniper Exp $ */
+/* $Id: pdo_sql_parser.c,v 1.35.2.6 2006/01/25 16:35:23 iliaa Exp $ */
 
 #include "php.h"
 #include "php_pdo_driver.h"
@@ -512,15 +512,25 @@
}
 
for (plc = placeholders; plc; plc = plc->next) {
-   snprintf(idxbuf, sizeof(idxbuf), tmpl, plc->bindno + 1);
+   int skip_map = 0;
+   char *p;
+   name = estrndup(plc->pos, plc->len);
+
+   /* check if bound parameter is already available */
+   if (!strcmp(name, "?") || 
zend_hash_find(stmt->bound_param_map, name, plc->len + 1, (void**) &p) == 
FAILURE) {
+   snprintf(idxbuf, sizeof(idxbuf), tmpl, 
plc->bindno + 1);
+   } else {
+   memset(idxbuf, 0, sizeof(idxbuf));
+   memcpy(idxbuf, p, sizeof(idxbuf));
+   skip_map = 1;
+   }
+
plc->quoted = estrdup(idxbuf);
plc->qlen = strlen(plc->quoted);
plc->freeq = 1;
newbuffer_len += plc->qlen;
 
-   name = estrndup(plc->pos, plc->len);
-
-   if (stmt->named_rewrite_template) {
+   if (!skip_map && stmt->named_rewrite_template) {
/* create a mapping */

zend_hash_update(stmt->bound_param_map, name, 
plc->len + 1, idxbuf, plc->qlen + 1, NULL);

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src(PHP_5_1) /ext/pdo pdo_sql_parser.c

2005-12-01 Thread Jani Taskinen
sniper  Thu Dec  1 15:28:27 2005 EDT

  Modified files:  (Branch: PHP_5_1)
/php-src/ext/pdopdo_sql_parser.c 
  Log:
  - Fix paths for --enable-gcov usage
  # re2c -b -o ext/pdo/pdo_sql_parser.c ext/pdo/pdo_sql_parser.re
  
  
http://cvs.php.net/diff.php/php-src/ext/pdo/pdo_sql_parser.c?r1=1.35.2.2&r2=1.35.2.3&ty=u
Index: php-src/ext/pdo/pdo_sql_parser.c
diff -u php-src/ext/pdo/pdo_sql_parser.c:1.35.2.2 
php-src/ext/pdo/pdo_sql_parser.c:1.35.2.3
--- php-src/ext/pdo/pdo_sql_parser.c:1.35.2.2   Sat Sep 10 16:58:57 2005
+++ php-src/ext/pdo/pdo_sql_parser.cThu Dec  1 15:28:27 2005
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.9.9.rc1 on Sat Sep 10 15:53:03 2005 */
+/* Generated by re2c 0.9.10 on Thu Dec  1 22:27:35 2005 */
 #line 1 "ext/pdo/pdo_sql_parser.re"
 /*
   +--+
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_sql_parser.c,v 1.35.2.2 2005/09/10 20:58:57 wez Exp $ */
+/* $Id: pdo_sql_parser.c,v 1.35.2.3 2005/12/01 20:28:27 sniper Exp $ */
 
 #include "php.h"
 #include "php_pdo_driver.h"
@@ -85,7 +85,7 @@
162, 162, 162, 162, 162, 162, 162, 162, 
};
 
-#line 89 ""
+#line 89 "ext/pdo/pdo_sql_parser.c"
 {
YYCTYPE yych;
unsigned int yyaccept;
@@ -113,7 +113,7 @@
 yy3:
 #line 63 "ext/pdo/pdo_sql_parser.re"
 { RET(PDO_PARSER_TEXT); }
-#line 117 ""
+#line 117 "ext/pdo/pdo_sql_parser.c"
 yy4:   yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yybm[0+yych] & 16) {
@@ -150,7 +150,7 @@
 yy7:
 #line 62 "ext/pdo/pdo_sql_parser.re"
 { RET(PDO_PARSER_BIND_POS); }
-#line 154 ""
+#line 154 "ext/pdo/pdo_sql_parser.c"
 yy8:   ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
@@ -162,13 +162,13 @@
 yy10:
 #line 64 "ext/pdo/pdo_sql_parser.re"
 { RET(PDO_PARSER_TEXT); }
-#line 166 ""
+#line 166 "ext/pdo/pdo_sql_parser.c"
 yy11:  ++YYCURSOR;
goto yy12;
 yy12:
 #line 65 "ext/pdo/pdo_sql_parser.re"
 { RET(PDO_PARSER_EOI); }
-#line 172 ""
+#line 172 "ext/pdo/pdo_sql_parser.c"
 yy13:  ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
@@ -180,7 +180,7 @@
 yy15:
 #line 60 "ext/pdo/pdo_sql_parser.re"
 { RET(PDO_PARSER_TEXT); }
-#line 184 ""
+#line 184 "ext/pdo/pdo_sql_parser.c"
 yy16:  ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
@@ -192,7 +192,7 @@
 yy18:
 #line 61 "ext/pdo/pdo_sql_parser.re"
 { RET(PDO_PARSER_BIND); }
-#line 196 ""
+#line 196 "ext/pdo/pdo_sql_parser.c"
 yy19:  yyaccept = 1;
YYMARKER = ++YYCURSOR;
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
@@ -218,7 +218,7 @@
 yy22:
 #line 59 "ext/pdo/pdo_sql_parser.re"
 { RET(PDO_PARSER_TEXT); }
-#line 222 ""
+#line 222 "ext/pdo/pdo_sql_parser.c"
 yy23:  ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
@@ -250,7 +250,7 @@
 yy29:
 #line 58 "ext/pdo/pdo_sql_parser.re"
 { RET(PDO_PARSER_TEXT); }
-#line 254 ""
+#line 254 "ext/pdo/pdo_sql_parser.c"
 yy30:  yyaccept = 1;
YYMARKER = ++YYCURSOR;
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src(PHP_5_1) /ext/pdo pdo_sql_parser.c

2005-09-10 Thread Wez Furlong
wez Sat Sep 10 16:58:57 2005 EDT

  Modified files:  (Branch: PHP_5_1)
/php-src/ext/pdopdo_sql_parser.c 
  Log:
  and touch the generated file
  
  
http://cvs.php.net/diff.php/php-src/ext/pdo/pdo_sql_parser.c?r1=1.35.2.1&r2=1.35.2.2&ty=u
Index: php-src/ext/pdo/pdo_sql_parser.c
diff -u php-src/ext/pdo/pdo_sql_parser.c:1.35.2.1 
php-src/ext/pdo/pdo_sql_parser.c:1.35.2.2
--- php-src/ext/pdo/pdo_sql_parser.c:1.35.2.1   Sat Sep  3 20:48:59 2005
+++ php-src/ext/pdo/pdo_sql_parser.cSat Sep 10 16:58:57 2005
@@ -1,5 +1,5 @@
-/* Generated by re2c 0.9.9 on Sun Sep  4 02:48:16 2005 */
-#line 1 "pdo_sql_parser.re"
+/* Generated by re2c 0.9.9.rc1 on Sat Sep 10 15:53:03 2005 */
+#line 1 "ext/pdo/pdo_sql_parser.re"
 /*
   +--+
   | PHP Version 5|
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_sql_parser.c,v 1.35.2.1 2005/09/04 00:48:59 edink Exp $ */
+/* $Id: pdo_sql_parser.c,v 1.35.2.2 2005/09/10 20:58:57 wez Exp $ */
 
 #include "php.h"
 #include "php_pdo_driver.h"
@@ -46,7 +46,7 @@
char *cursor = s->cur;
 
s->tok = cursor;
-   #line 55 "pdo_sql_parser.re"
+   #line 55 "ext/pdo/pdo_sql_parser.re"
 
 
{
@@ -85,7 +85,7 @@
162, 162, 162, 162, 162, 162, 162, 162, 
};
 
-#line 89 "pdo_sql_parser.c"
+#line 89 ""
 {
YYCTYPE yych;
unsigned int yyaccept;
@@ -111,9 +111,9 @@
if(yych == '"') goto yy28;
goto yy33;
 yy3:
-#line 63 "pdo_sql_parser.re"
+#line 63 "ext/pdo/pdo_sql_parser.re"
 { RET(PDO_PARSER_TEXT); }
-#line 117 "pdo_sql_parser.c"
+#line 117 ""
 yy4:   yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yybm[0+yych] & 16) {
@@ -148,9 +148,9 @@
}
goto yy7;
 yy7:
-#line 62 "pdo_sql_parser.re"
+#line 62 "ext/pdo/pdo_sql_parser.re"
 { RET(PDO_PARSER_BIND_POS); }
-#line 154 "pdo_sql_parser.c"
+#line 154 ""
 yy8:   ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
@@ -160,15 +160,15 @@
}
goto yy10;
 yy10:
-#line 64 "pdo_sql_parser.re"
+#line 64 "ext/pdo/pdo_sql_parser.re"
 { RET(PDO_PARSER_TEXT); }
-#line 166 "pdo_sql_parser.c"
+#line 166 ""
 yy11:  ++YYCURSOR;
goto yy12;
 yy12:
-#line 65 "pdo_sql_parser.re"
+#line 65 "ext/pdo/pdo_sql_parser.re"
 { RET(PDO_PARSER_EOI); }
-#line 172 "pdo_sql_parser.c"
+#line 172 ""
 yy13:  ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
@@ -178,9 +178,9 @@
}
goto yy15;
 yy15:
-#line 60 "pdo_sql_parser.re"
+#line 60 "ext/pdo/pdo_sql_parser.re"
 { RET(PDO_PARSER_TEXT); }
-#line 184 "pdo_sql_parser.c"
+#line 184 ""
 yy16:  ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
@@ -190,9 +190,9 @@
}
goto yy18;
 yy18:
-#line 61 "pdo_sql_parser.re"
+#line 61 "ext/pdo/pdo_sql_parser.re"
 { RET(PDO_PARSER_BIND); }
-#line 196 "pdo_sql_parser.c"
+#line 196 ""
 yy19:  yyaccept = 1;
YYMARKER = ++YYCURSOR;
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
@@ -216,9 +216,9 @@
}
goto yy22;
 yy22:
-#line 59 "pdo_sql_parser.re"
+#line 59 "ext/pdo/pdo_sql_parser.re"
 { RET(PDO_PARSER_TEXT); }
-#line 222 "pdo_sql_parser.c"
+#line 222 ""
 yy23:  ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
@@ -248,9 +248,9 @@
}
goto yy29;
 yy29:
-#line 58 "pdo_sql_parser.re"
+#line 58 "ext/pdo/pdo_sql_parser.re"
 { RET(PDO_PARSER_TEXT); }
-#line 254 "pdo_sql_parser.c"
+#line 254 ""
 yy30:  yyaccept = 1;
YYMARKER = ++YYCURSOR;
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
@@ -287,7 +287,7 @@
goto yy29;
 }
 }
-#line 66 "pdo_sql_parser.re"
+#line 66 "ext/pdo/pdo_sql_parser.re"

 }
 
@@ -435,8 +435,6 @@
plc->freeq = 0;
break;
 
-   case IS_BOOL:
-   
convert_to_long(param->parameter);
case IS_LONG:
case IS_DOUBLE:

convert_to_string(param->parameter);
@@ -445,6 +443,8 @@
plc->freeq = 0;
break;
 
+   case IS_BOOL:
+   
convert_to_long(param->parameter);
default:

convert_to_string(param->parameter);
if 
(!stmt->dbh->methods->quoter(stmt->dbh, Z_STRV

[PHP-CVS] cvs: php-src(PHP_5_1) /ext/pdo pdo_sql_parser.c

2005-09-03 Thread Edin Kadribasic
edink   Sat Sep  3 20:48:59 2005 EDT

  Modified files:  (Branch: PHP_5_1)
/php-src/ext/pdopdo_sql_parser.c 
  Log:
  touch
  http://cvs.php.net/diff.php/php-src/ext/pdo/pdo_sql_parser.c?r1=1.35&r2=1.35.2.1&ty=u
Index: php-src/ext/pdo/pdo_sql_parser.c
diff -u php-src/ext/pdo/pdo_sql_parser.c:1.35 
php-src/ext/pdo/pdo_sql_parser.c:1.35.2.1
--- php-src/ext/pdo/pdo_sql_parser.c:1.35   Wed Aug  3 10:07:38 2005
+++ php-src/ext/pdo/pdo_sql_parser.cSat Sep  3 20:48:59 2005
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.9.8 on Mon Jul 18 19:08:15 2005 */
+/* Generated by re2c 0.9.9 on Sun Sep  4 02:48:16 2005 */
 #line 1 "pdo_sql_parser.re"
 /*
   +--+
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_sql_parser.c,v 1.35 2005/08/03 14:07:38 sniper Exp $ */
+/* $Id: pdo_sql_parser.c,v 1.35.2.1 2005/09/04 00:48:59 edink Exp $ */
 
 #include "php.h"
 #include "php_pdo_driver.h"
@@ -51,41 +51,41 @@
 
{
static unsigned char yybm[] = {
- 0, 161, 161, 161, 161, 161, 161, 161, 
-   161, 161, 161, 161, 161, 161, 161, 161, 
-   161, 161, 161, 161, 161, 161, 161, 161, 
-   161, 161, 161, 161, 161, 161, 161, 161, 
-   161, 161,   2, 161, 161, 161, 161, 202, 
-   161, 161, 161, 161, 161, 161, 161, 161, 
-   165, 165, 165, 165, 165, 165, 165, 165, 
-   165, 165, 242, 161, 161, 161, 161, 242, 
-   161, 165, 165, 165, 165, 165, 165, 165, 
-   165, 165, 165, 165, 165, 165, 165, 165, 
-   165, 165, 165, 165, 165, 165, 165, 165, 
-   165, 165, 165, 161,   1, 161, 161, 165, 
-   161, 165, 165, 165, 165, 165, 165, 165, 
-   165, 165, 165, 165, 165, 165, 165, 165, 
-   165, 165, 165, 165, 165, 165, 165, 165, 
-   165, 165, 165, 161, 161, 161, 161, 161, 
-   161, 161, 161, 161, 161, 161, 161, 161, 
-   161, 161, 161, 161, 161, 161, 161, 161, 
-   161, 161, 161, 161, 161, 161, 161, 161, 
-   161, 161, 161, 161, 161, 161, 161, 161, 
-   161, 161, 161, 161, 161, 161, 161, 161, 
-   161, 161, 161, 161, 161, 161, 161, 161, 
-   161, 161, 161, 161, 161, 161, 161, 161, 
-   161, 161, 161, 161, 161, 161, 161, 161, 
-   161, 161, 161, 161, 161, 161, 161, 161, 
-   161, 161, 161, 161, 161, 161, 161, 161, 
-   161, 161, 161, 161, 161, 161, 161, 161, 
-   161, 161, 161, 161, 161, 161, 161, 161, 
-   161, 161, 161, 161, 161, 161, 161, 161, 
-   161, 161, 161, 161, 161, 161, 161, 161, 
-   161, 161, 161, 161, 161, 161, 161, 161, 
-   161, 161, 161, 161, 161, 161, 161, 161, 
+ 0, 162, 162, 162, 162, 162, 162, 162, 
+   162, 162, 162, 162, 162, 162, 162, 162, 
+   162, 162, 162, 162, 162, 162, 162, 162, 
+   162, 162, 162, 162, 162, 162, 162, 162, 
+   162, 162,  52, 162, 162, 162, 162, 196, 
+   162, 162, 162, 162, 162, 162, 162, 162, 
+   170, 170, 170, 170, 170, 170, 170, 170, 
+   170, 170, 244, 162, 162, 162, 162, 244, 
+   162, 170, 170, 170, 170, 170, 170, 170, 
+   170, 170, 170, 170, 170, 170, 170, 170, 
+   170, 170, 170, 170, 170, 170, 170, 170, 
+   170, 170, 170, 162,   2, 162, 162, 170, 
+   162, 170, 170, 170, 170, 170, 170, 170, 
+   170, 170, 170, 170, 170, 170, 170, 170, 
+   170, 170, 170, 170, 170, 170, 170, 170, 
+   170, 170, 170, 162, 162, 162, 162, 162, 
+   162, 162, 162, 162, 162, 162, 162, 162, 
+   162, 162, 162, 162, 162, 162, 162, 162, 
+   162, 162, 162, 162, 162, 162, 162, 162, 
+   162, 162, 162, 162, 162, 162, 162, 162, 
+   162, 162, 162, 162, 162, 162, 162, 162, 
+   162, 162, 162, 162, 162, 162, 162, 162, 
+   162, 162, 162, 162, 162, 162, 162, 162, 
+   162, 162, 162, 162, 162, 162, 162, 162, 
+   162, 162, 162, 162, 162, 162, 162, 162, 
+   162, 162, 162, 162, 162, 162, 162, 162, 
+   162, 162, 162, 162, 162, 162, 162, 162, 
+   162, 162, 162, 162, 162, 162, 162, 162, 
+   162, 162, 162, 162, 162, 162, 162, 162, 
+   162, 162, 162, 162, 162, 162, 162, 162, 
+   162, 162, 162, 162, 162, 162, 162, 162, 
+   162, 162, 162, 162, 162, 162, 162, 162, 
};
 
-#line 89 ""
+#line 89 "pdo_sql_parser.c"
 {
YYCTYPE yych;
unsigned int yyaccept;
@@ -94,7 +94,7 @@
 yy0:
if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
yych = *YYCURSOR;
-   if(yybm[0+yych] & 1) {
+   if(yybm[0+yych] & 2) {
goto yy8;
}
if(yych <= 0x00)goto yy11;
@@ -105,31 +105,25 @@
 yy2:   yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yybm[0+yych] & 64) {
-   goto yy32;
+   goto yy30;
}
if(yych <= 0x00)goto yy3;
-   if(yych == '"') goto yy30;
-   goto yy35;
+   if(yych == '"') goto yy28;
+   goto yy33;
 yy3:
 #line 63 "pdo_sql_parser.re"
 { RET(PDO_PARSER_TEXT); }
-#line