Update of /cvsroot/monetdb/sql/src/server
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv24401/src/server

Modified Files:
      Tag: SQL_2-18
        rel_select.mx sql_parser.mx sql_select.mx 
Log Message:
fixed bug [ 1757923 ] SQL: Prepared statement type mismatch
(parameters are now added during the parsing (solves the order issue))


Index: rel_select.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/rel_select.mx,v
retrieving revision 1.49.2.1
retrieving revision 1.49.2.2
diff -u -d -r1.49.2.1 -r1.49.2.2
--- rel_select.mx       8 Jun 2007 09:48:27 -0000       1.49.2.1
+++ rel_select.mx       12 Aug 2007 21:34:38 -0000      1.49.2.2
@@ -3349,14 +3349,9 @@
        }
                break;
        case SQL_PARAMETER:{
-               char n[BUFSIZ];
-
                if (sql->mode != m_prepare) 
                        return sql_error(sql, 02, "SELECT: parameters ('?') not 
allowed in normal queries, use PREPARE");
-               snprintf(n, BUFSIZ, "A%d", 
-                       (sql->params)?list_length(sql->params):0);
-               sql_add_param(sql, n, NULL);
-               return exp_param(n, NULL);
+               return exp_param(se->data.sval, NULL);
        }
        case SQL_ATOM:{
                AtomNode *an = (AtomNode *) se;

Index: sql_parser.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_parser.mx,v
retrieving revision 1.247
retrieving revision 1.247.2.1
diff -u -d -r1.247 -r1.247.2.1
--- sql_parser.mx       21 May 2007 18:14:30 -0000      1.247
+++ sql_parser.mx       12 Aug 2007 21:34:38 -0000      1.247.2.1
@@ -3142,7 +3142,14 @@
  |  string_funcs
  |  case_exp
  |  cast_exp
- |  '?'                        { $$ = _symbol_create( SQL_PARAMETER, NULL ); }
+ |  '?'                        
+       { mvc *m = (mvc*)parm;
+         int nr = (m->params)?list_length(m->params):0, l = 2 + ((nr+8)>>3);
+         char *n = sa_alloc(m->sa, l);
+
+         snprintf(n, l, "A%d", nr);
+         sql_add_param(m, n, NULL);
+         $$ = _symbol_create( SQL_PARAMETER, n ); }
  ;
 
 /*

Index: sql_select.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_select.mx,v
retrieving revision 1.191.2.3
retrieving revision 1.191.2.4
diff -u -d -r1.191.2.3 -r1.191.2.4
--- sql_select.mx       2 Jul 2007 15:30:57 -0000       1.191.2.3
+++ sql_select.mx       12 Aug 2007 21:34:39 -0000      1.191.2.4
@@ -1724,14 +1724,9 @@
        }
                break;
        case SQL_PARAMETER:{
-               char n[BUFSIZ];
-
                if (sql->mode != m_prepare) 
                        return sql_error(sql, 02, "SELECT: parameters ('?') not 
allowed in normal queries, use PREPARE");
-               snprintf(n, BUFSIZ, "A%d", 
-                       (sql->params)?list_length(sql->params):0);
-               sql_add_param(sql, n, NULL);
-               return stmt_var(_strdup(n), NULL, 0, 0);
+               return stmt_var(_strdup(se->data.sval), NULL, 0, 0);
        }
        case SQL_NULL:
                return stmt_atom(atom_general(sql_bind_localtype("str"), NULL, 
0));


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
Monetdb-sql-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-sql-checkins

Reply via email to