summaryrefslogtreecommitdiff
path: root/ext/pdo/pdo_sql_parser.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/pdo/pdo_sql_parser.c')
-rw-r--r--ext/pdo/pdo_sql_parser.c94
1 files changed, 38 insertions, 56 deletions
diff --git a/ext/pdo/pdo_sql_parser.c b/ext/pdo/pdo_sql_parser.c
index c34b8adf3d..2b97de9c53 100644
--- a/ext/pdo/pdo_sql_parser.c
+++ b/ext/pdo/pdo_sql_parser.c
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.6.dev on Thu Nov 13 14:47:06 2008 */
+/* Generated by re2c 0.11.0 on Mon Nov 26 15:18:37 2007 */
#line 1 "ext/pdo/pdo_sql_parser.re"
/*
+----------------------------------------------------------------------+
@@ -55,9 +55,9 @@ static int scan(Scanner *s)
{
YYCTYPE yych;
- if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
- switch (yych) {
+ switch(yych) {
case 0x00: goto yy11;
case '"': goto yy2;
case '\'': goto yy4;
@@ -66,19 +66,18 @@ static int scan(Scanner *s)
default: goto yy8;
}
yy2:
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych >= 0x01) goto yy26;
+ yych = *++YYCURSOR;
+ goto yy24;
yy3:
#line 63 "ext/pdo/pdo_sql_parser.re"
{ SKIP_ONE(PDO_PARSER_TEXT); }
#line 75 "ext/pdo/pdo_sql_parser.c"
yy4:
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 0x00) goto yy3;
+ yych = *++YYCURSOR;
goto yy20;
yy5:
yych = *++YYCURSOR;
- switch (yych) {
+ switch(yych) {
case '0':
case '1':
case '2':
@@ -148,7 +147,7 @@ yy5:
}
yy6:
++YYCURSOR;
- switch ((yych = *YYCURSOR)) {
+ switch((yych = *YYCURSOR)) {
case ':':
case '?': goto yy13;
default: goto yy7;
@@ -156,12 +155,12 @@ yy6:
yy7:
#line 62 "ext/pdo/pdo_sql_parser.re"
{ RET(PDO_PARSER_BIND_POS); }
-#line 160 "ext/pdo/pdo_sql_parser.c"
+#line 159 "ext/pdo/pdo_sql_parser.c"
yy8:
++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- switch (yych) {
+ switch(yych) {
case 0x00:
case '"':
case '\'':
@@ -172,17 +171,17 @@ yy8:
yy10:
#line 64 "ext/pdo/pdo_sql_parser.re"
{ RET(PDO_PARSER_TEXT); }
-#line 176 "ext/pdo/pdo_sql_parser.c"
+#line 175 "ext/pdo/pdo_sql_parser.c"
yy11:
++YYCURSOR;
#line 65 "ext/pdo/pdo_sql_parser.re"
{ RET(PDO_PARSER_EOI); }
-#line 181 "ext/pdo/pdo_sql_parser.c"
+#line 180 "ext/pdo/pdo_sql_parser.c"
yy13:
++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- switch (yych) {
+ switch(yych) {
case ':':
case '?': goto yy13;
default: goto yy15;
@@ -190,12 +189,12 @@ yy13:
yy15:
#line 60 "ext/pdo/pdo_sql_parser.re"
{ RET(PDO_PARSER_TEXT); }
-#line 194 "ext/pdo/pdo_sql_parser.c"
+#line 193 "ext/pdo/pdo_sql_parser.c"
yy16:
++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- switch (yych) {
+ switch(yych) {
case '0':
case '1':
case '2':
@@ -264,54 +263,35 @@ yy16:
yy18:
#line 61 "ext/pdo/pdo_sql_parser.re"
{ RET(PDO_PARSER_BIND); }
-#line 268 "ext/pdo/pdo_sql_parser.c"
+#line 267 "ext/pdo/pdo_sql_parser.c"
yy19:
++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy20:
- switch (yych) {
- case 0x00: goto yy21;
- case '\'': goto yy23;
- case '\\': goto yy22;
+ switch(yych) {
+ case '\'': goto yy21;
default: goto yy19;
}
yy21:
- YYCURSOR = YYMARKER;
- goto yy3;
-yy22:
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- if (yych <= 0x00) goto yy21;
- goto yy19;
-yy23:
++YYCURSOR;
#line 59 "ext/pdo/pdo_sql_parser.re"
{ RET(PDO_PARSER_TEXT); }
-#line 293 "ext/pdo/pdo_sql_parser.c"
-yy25:
+#line 281 "ext/pdo/pdo_sql_parser.c"
+yy23:
++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
-yy26:
- switch (yych) {
- case 0x00: goto yy21;
- case '"': goto yy28;
- case '\\': goto yy27;
- default: goto yy25;
+yy24:
+ switch(yych) {
+ case '"': goto yy25;
+ default: goto yy23;
}
-yy27:
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- if (yych <= 0x00) goto yy21;
- goto yy25;
-yy28:
+yy25:
++YYCURSOR;
#line 58 "ext/pdo/pdo_sql_parser.re"
{ RET(PDO_PARSER_TEXT); }
-#line 315 "ext/pdo/pdo_sql_parser.c"
+#line 295 "ext/pdo/pdo_sql_parser.c"
}
#line 66 "ext/pdo/pdo_sql_parser.re"
@@ -550,9 +530,9 @@ rewrite:
} else if (query_type == PDO_PLACEHOLDER_POSITIONAL) {
/* rewrite ? to :pdoX */
- char *name, *idxbuf;
+ char idxbuf[32];
const char *tmpl = stmt->named_rewrite_template ? stmt->named_rewrite_template : ":pdo%d";
- int bind_no = 1;
+ char *name;
newbuffer_len = inquery_len;
@@ -568,19 +548,21 @@ rewrite:
/* check if bound parameter is already available */
if (!strcmp(name, "?") || zend_hash_find(stmt->bound_param_map, name, plc->len + 1, (void**) &p) == FAILURE) {
- spprintf(&idxbuf, 0, tmpl, bind_no++);
+ snprintf(idxbuf, sizeof(idxbuf), tmpl, plc->bindno + 1);
} else {
- idxbuf = estrdup(p);
+ memset(idxbuf, 0, sizeof(idxbuf));
+ memcpy(idxbuf, p, sizeof(idxbuf));
skip_map = 1;
}
- plc->quoted = idxbuf;
+ plc->quoted = estrdup(idxbuf);
plc->qlen = strlen(plc->quoted);
plc->freeq = 1;
newbuffer_len += plc->qlen;
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);
}