aboutsummaryrefslogtreecommitdiff
path: root/src/select.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/select.c')
-rw-r--r--src/select.c24
1 files changed, 15 insertions, 9 deletions
diff --git a/src/select.c b/src/select.c
index 73c1f6a3d..61be40e9c 100644
--- a/src/select.c
+++ b/src/select.c
@@ -12,7 +12,7 @@
** This file contains C code routines that are called by the parser
** to handle SELECT statements in SQLite.
**
-** $Id: select.c,v 1.104 2002/07/10 21:26:01 drh Exp $
+** $Id: select.c,v 1.105 2002/07/11 12:18:17 drh Exp $
*/
#include "sqliteInt.h"
@@ -612,7 +612,11 @@ static void generateColumnNames(
int i;
if( pParse->colNamesSet || v==0 || sqlite_malloc_failed ) return;
pParse->colNamesSet = 1;
- sqliteVdbeAddOp(v, OP_ColumnCount, pEList->nExpr*2+1, 0);
+ if( pParse->db->flags & SQLITE_ReportTypes ){
+ sqliteVdbeAddOp(v, OP_ColumnCount, pEList->nExpr*2, 0);
+ }else{
+ sqliteVdbeAddOp(v, OP_ColumnCount, pEList->nExpr, 0);
+ }
for(i=0; i<pEList->nExpr; i++){
Expr *p;
char *zType = 0;
@@ -672,15 +676,17 @@ static void generateColumnNames(
sqliteVdbeAddOp(v, OP_ColumnName, i, 0);
sqliteVdbeChangeP3(v, -1, zName, strlen(zName));
}
- if( zType==0 ){
- if( sqliteExprType(p)==SQLITE_SO_TEXT ){
- zType = "TEXT";
- }else{
- zType = "NUMERIC";
+ if( pParse->db->flags & SQLITE_ReportTypes ){
+ if( zType==0 ){
+ if( sqliteExprType(p)==SQLITE_SO_TEXT ){
+ zType = "TEXT";
+ }else{
+ zType = "NUMERIC";
+ }
}
+ sqliteVdbeAddOp(v, OP_ColumnName, i + pEList->nExpr, 0);
+ sqliteVdbeChangeP3(v, -1, zType, P3_STATIC);
}
- sqliteVdbeAddOp(v, OP_ColumnName, i + pEList->nExpr + 1, 0);
- sqliteVdbeChangeP3(v, -1, zType, P3_STATIC);
}
}