I done a path to make this works, if someone wants!
Now...
CREATE TABLE a (a, b);
INSERT INTO a VALUES (0, 0);
INSERT INTO a VALUES (0, 1);
INSERT INTO a VALUES (1, 0);
INSERT INTO a VALUES (1, 1);
SELECT * FROM a WHERE a.a = :a AND a.b = ?1;
SELECT * FROM a WHERE a.a = ?1 AND a.b = :b;
Have the same behavior!
|Index: D:/FS_trunk/devpalm_01/poli_sqlite_lib/src/expr.c
|===================================================================
|--- D:/FS_trunk/devpalm_01/poli_sqlite_lib/src/expr.c (revisão 323)
|+++ D:/FS_trunk/devpalm_01/poli_sqlite_lib/src/expr.c (cópia de trabalho)
|@@ -557,9 +557,21 @@
| sqlite3ErrorMsg(pParse, "variable number must be between ?1 and ?%d",
| db->aLimit[SQLITE_LIMIT_VARIABLE_NUMBER]);
| }
|- if( i>pParse->nVar ){
|- pParse->nVar = i;
|+
|+ // give to expression parameter with same index, another number to avoid
conflicts
|+ // with named parameter (:AAA, $AAA, @AAA) and indexed parameter (?NNN)
|+ for(i=0; i<pParse->nVarExpr; i++){
|+ Expr *pE = pParse->apVarExpr[i];
|+ assert( pE!=0 );
|+ if( pE->iColumn==pExpr->iColumn ){
|+ pE->iColumn = (ynVar)(++pParse->nVar);
|+ break;
|+ }
| }
|+
|+ if( pExpr->iColumn>pParse->nVar ){
|+ pParse->nVar = pExpr->iColumn;
|+ }
| }else{
| /* Wildcards like ":aaa", "$aaa" or "@aaa". Reuse the same variable
| ** number as the prior appearance of the same name, or if the name
--
Atenciosamente/Regards,
Israel Lins Albuquerque
Desenvolvimento/Development
Polibrás Brasil Software Ltda.
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users