-/* Generated by re2c 0.5 on Tue May 18 10:23:55 2004 */
+/* Generated by re2c 0.5 on Tue May 18 12:42:13 2004 */
#line 1 "/home/george/src/pecl/pdo/pdo_sql_parser.re"
+/*
+ +----------------------------------------------------------------------+
+ | PHP Version 5 |
+ +----------------------------------------------------------------------+
+ | Copyright (c) 1997-2004 The PHP Group |
+ +----------------------------------------------------------------------+
+ | This source file is subject to version 3.0 of the PHP license, |
+ | that is bundled with this package in the file LICENSE, and is |
+ | available through the world-wide-web at the following url: |
+ | http://www.php.net/license/3_0.txt. |
+ | If you did not receive a copy of the PHP license and are unable to |
+ | obtain it through the world-wide-web, please send a note to |
+ | license@php.net so we can mail you a copy immediately. |
+ +----------------------------------------------------------------------+
+ | Author: George Schlossnagle <george@omniti.com> |
+ +----------------------------------------------------------------------+
+*/
+
+/* $Id$ */
+
#include "php.h"
#include "php_pdo_driver.h"
char *cursor = s->cur;
std:
s->tok = cursor;
- #line 31
+ #line 51
{
yych = *(YYMARKER = ++YYCURSOR);
if(yych >= '\001') goto yy14;
yy3:
-#line 36
+#line 56
{ RET(PDO_PARSER_TEXT); }
yy4: yych = *++YYCURSOR;
if(yybm[0+yych] & 64) goto yy10;
yych = *YYCURSOR;
yy6: if(yybm[0+yych] & 32) goto yy5;
yy7:
-#line 37
+#line 57
{ RET(PDO_PARSER_TEXT); }
yy8: yych = *++YYCURSOR;
yy9:
-#line 38
+#line 58
{ RET(PDO_PARSER_EOI); }
yy10: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy11: if(yybm[0+yych] & 64) goto yy10;
yy12:
-#line 35
+#line 55
{ RET(PDO_PARSER_BIND); }
yy13: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
goto yy15;
yy17: yych = *++YYCURSOR;
yy18:
-#line 34
+#line 54
{ RET(PDO_PARSER_TEXT); }
}
-#line 39
+#line 59
}
int t;
int bindno = 0;
int newbuffer_len;
+ int padding;
HashTable *params = stmt->bound_params;
struct pdo_bound_param_data *param;
/* allocate buffer for query with expanded binds, ptr is our writing pointer */
newbuffer_len = inquery_len;
+
+ /* calculate the possible padding factor due to quoting */
+ if(stmt->dbh->max_escaped_char_length) {
+ padding = stmt->dbh->max_escaped_char_length;
+ } else {
+ padding = 3;
+ }
if(params) {
zend_hash_internal_pointer_reset(params);
while (SUCCESS == zend_hash_get_current_data(params, (void**)¶m)) {
bind placeholders are at least 2 characters, so
the accomodate their own "'s
*/
- newbuffer_len += 2 * Z_STRLEN_P(param->parameter);
+ newbuffer_len += padding * Z_STRLEN_P(param->parameter);
}
zend_hash_move_forward(params);
}
int quotedstrlen;
/* currently everything is a string here */
- /* add leading quote */
- *ptr = '"';
- ptr++;
- (*outquery_len)++;
-
/* quote the bind value if necessary */
if(stmt->dbh->methods->quoter(stmt->dbh, Z_STRVAL_P(param->parameter),
Z_STRLEN_P(param->parameter), "edstr, "edstrlen TSRMLS_CC))
ptr += Z_STRLEN_P(param->parameter);
*outquery_len += (Z_STRLEN_P(param->parameter));
}
- /* add trailing quote */
- *ptr = '"';
- ptr++;
- (*outquery_len)++;
}
else {
/* error and cleanup */
* tab-width: 4
* c-basic-offset: 4
* End:
- * vim600: noet sw=4 ts=4 fdm=marker
+ * vim600: noet sw=4 ts=4 fdm=marker ft=c
* vim<600: noet sw=4 ts=4
*/
int t;
int bindno = 0;
int newbuffer_len;
+ int padding;
HashTable *params = stmt->bound_params;
struct pdo_bound_param_data *param;
/* allocate buffer for query with expanded binds, ptr is our writing pointer */
newbuffer_len = inquery_len;
+
+ /* calculate the possible padding factor due to quoting */
+ if(stmt->dbh->max_escaped_char_length) {
+ padding = stmt->dbh->max_escaped_char_length;
+ } else {
+ padding = 3;
+ }
if(params) {
zend_hash_internal_pointer_reset(params);
while (SUCCESS == zend_hash_get_current_data(params, (void**)¶m)) {
bind placeholders are at least 2 characters, so
the accomodate their own "'s
*/
- newbuffer_len += 2 * Z_STRLEN_P(param->parameter);
+ newbuffer_len += padding * Z_STRLEN_P(param->parameter);
}
zend_hash_move_forward(params);
}
int quotedstrlen;
/* currently everything is a string here */
- /* add leading quote */
- *ptr = '"';
- ptr++;
- (*outquery_len)++;
-
/* quote the bind value if necessary */
if(stmt->dbh->methods->quoter(stmt->dbh, Z_STRVAL_P(param->parameter),
Z_STRLEN_P(param->parameter), "edstr, "edstrlen TSRMLS_CC))
ptr += Z_STRLEN_P(param->parameter);
*outquery_len += (Z_STRLEN_P(param->parameter));
}
- /* add trailing quote */
- *ptr = '"';
- ptr++;
- (*outquery_len)++;
}
else {
/* error and cleanup */