-/* Generated by re2c 0.9.8 on Fri Jul 8 22:33:49 2005 */
-#line 1 "ext/pdo/pdo_sql_parser.re"
+/* Generated by re2c 0.9.3 on Mon Jul 11 23:09:09 2005 */
+#line 1 "../pdo/pdo_sql_parser.re"
/*
+----------------------------------------------------------------------+
| PHP Version 5 |
char *cursor = s->cur;
s->tok = cursor;
- #line 55 "ext/pdo/pdo_sql_parser.re"
+ #line 55 "../pdo/pdo_sql_parser.re"
-#line 54 "ext/pdo/pdo_sql_parser.c"
+#line 7 "<stdout>"
{
YYCTYPE yych;
unsigned int yyaccept;
goto yy0;
- ++YYCURSOR;
+yy1: ++YYCURSOR;
yy0:
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
switch(yych){
- case 0x00: goto yy11;
+ case '\000': goto yy11;
case '"': goto yy2;
case '\'': goto yy4;
case ':': goto yy5;
}
yy2: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych >= 0x01) goto yy24;
+ if(yych >= '\001') goto yy24;
goto yy3;
yy3:
-#line 62 "ext/pdo/pdo_sql_parser.re"
+#line 62 "../pdo/pdo_sql_parser.re"
{ RET(PDO_PARSER_TEXT); }
-#line 78 "ext/pdo/pdo_sql_parser.c"
+#line 31 "<stdout>"
yy4: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
switch(yych){
- case 0x00: case '"': goto yy3;
+ case '\000': case '"': goto yy3;
default: goto yy17;
}
yy5: yych = *++YYCURSOR;
yy6: ++YYCURSOR;
goto yy7;
yy7:
-#line 61 "ext/pdo/pdo_sql_parser.re"
+#line 61 "../pdo/pdo_sql_parser.re"
{ RET(PDO_PARSER_BIND_POS); }
-#line 154 "ext/pdo/pdo_sql_parser.c"
+#line 107 "<stdout>"
yy8: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy9;
yy9: switch(yych){
- case 0x00: case '"': case '\'': case ':': case '?': goto yy10;
+ case '\000': case '"': case '\'': case ':': case '?': goto yy10;
default: goto yy8;
}
yy10:
-#line 63 "ext/pdo/pdo_sql_parser.re"
+#line 63 "../pdo/pdo_sql_parser.re"
{ RET(PDO_PARSER_TEXT); }
-#line 166 "ext/pdo/pdo_sql_parser.c"
+#line 120 "<stdout>"
yy11: ++YYCURSOR;
goto yy12;
yy12:
-#line 64 "ext/pdo/pdo_sql_parser.re"
+#line 64 "../pdo/pdo_sql_parser.re"
{ RET(PDO_PARSER_EOI); }
-#line 172 "ext/pdo/pdo_sql_parser.c"
+#line 126 "<stdout>"
yy13: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
default: goto yy15;
}
yy15:
-#line 60 "ext/pdo/pdo_sql_parser.re"
+#line 60 "../pdo/pdo_sql_parser.re"
{ RET(PDO_PARSER_BIND); }
-#line 243 "ext/pdo/pdo_sql_parser.c"
+#line 198 "<stdout>"
yy16: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy17;
yy17: switch(yych){
- case 0x00: case '"': goto yy18;
+ case '\000': case '"': goto yy18;
case '\'': goto yy19;
case '\\': goto yy22;
default: goto yy16;
yych = *YYCURSOR;
goto yy20;
yy20: switch(yych){
- case 0x00: case '"': goto yy21;
+ case '\000': case '"': goto yy21;
case '\'': goto yy19;
case '\\': goto yy22;
default: goto yy16;
}
yy21:
-#line 59 "ext/pdo/pdo_sql_parser.re"
+#line 59 "../pdo/pdo_sql_parser.re"
{ RET(PDO_PARSER_TEXT); }
-#line 273 "ext/pdo/pdo_sql_parser.c"
+#line 229 "<stdout>"
yy22: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yych = *YYCURSOR;
goto yy24;
yy24: switch(yych){
- case 0x00: goto yy18;
+ case '\000': goto yy18;
case '"': goto yy26;
case '\\': goto yy25;
default: goto yy23;
yy26: ++YYCURSOR;
goto yy27;
yy27:
-#line 58 "ext/pdo/pdo_sql_parser.re"
+#line 58 "../pdo/pdo_sql_parser.re"
{ RET(PDO_PARSER_TEXT); }
-#line 303 "ext/pdo/pdo_sql_parser.c"
+#line 262 "<stdout>"
}
-#line 65 "ext/pdo/pdo_sql_parser.re"
+#line 65 "../pdo/pdo_sql_parser.re"
}
/* rewrite ? to :pdoX */
char idxbuf[32];
const char *tmpl = stmt->named_rewrite_template ? stmt->named_rewrite_template : ":pdo%d";
+ char *name;
newbuffer_len = inquery_len;
+ if (stmt->bound_param_map == NULL) {
+ ALLOC_HASHTABLE(stmt->bound_param_map);
+ zend_hash_init(stmt->bound_param_map, 13, NULL, NULL, 0);
+ }
+
for (plc = placeholders; plc; plc = plc->next) {
snprintf(idxbuf, sizeof(idxbuf), tmpl, plc->bindno + 1);
plc->quoted = estrdup(idxbuf);
plc->freeq = 1;
newbuffer_len += plc->qlen;
+ name = estrndup(plc->pos, plc->len);
+
if (stmt->named_rewrite_template) {
/* create a mapping */
- char *name = estrndup(plc->pos, plc->len);
- if (stmt->bound_param_map == NULL) {
- ALLOC_HASHTABLE(stmt->bound_param_map);
- zend_hash_init(stmt->bound_param_map, 13, NULL, NULL, 0);
- }
-
zend_hash_update(stmt->bound_param_map, name, plc->len + 1, idxbuf, plc->qlen + 1, NULL);
- efree(name);
}
+
+ /* map number to name */
+ zend_hash_index_update(stmt->bound_param_map, plc->bindno, idxbuf, plc->qlen + 1, NULL);
+
+ efree(name);
}
goto rewrite;