]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add the SQLITE_OMIT_DECLTYPE compile-time option. Remove more code when
authordrh <drh@noemail.net>
Sat, 22 Mar 2008 01:07:17 +0000 (01:07 +0000)
committerdrh <drh@noemail.net>
Sat, 22 Mar 2008 01:07:17 +0000 (01:07 +0000)
SQLITE_ENABLE_COLUMN_METADATA is not defined. (CVS 4906)

FossilOrigin-Name: 8ef26646cff9be75c584a9abfcfffcfdb49b3969

manifest
manifest.uuid
src/select.c
src/test1.c
src/test_config.c
src/vdbe.h
src/vdbeapi.c

index 5cfc9dc0b18880f0945080cf1348236a0a150256..89ebeaa42c1d77099977ec92512c999f02d9042f 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Defer\sallocating\smemory\sspace\sto\shold\sthe\sarray\sof\scolumn\svalues\sand\nnames\sin\ssqlite3_exec()\suntil\sthere\sis\sa\sneed\sto\suse\sthe\sarray.\s\sIn\nthe\scommon\scase\swhere\sthere\sis\sno\scallback,\sthis\savoids\sa\smalloc()\scall.\s(CVS\s4905)
-D 2008-03-21T18:01:14
+C Add\sthe\sSQLITE_OMIT_DECLTYPE\scompile-time\soption.\s\sRemove\smore\scode\swhen\nSQLITE_ENABLE_COLUMN_METADATA\sis\snot\sdefined.\s(CVS\s4906)
+D 2008-03-22T01:07:18
 F Makefile.arm-wince-mingw32ce-gcc ac5f7b2cef0cd850d6f755ba6ee4ab961b1fadf7
 F Makefile.in cf434ce8ca902e69126ae0f94fc9f7dc7428a5fa
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -135,7 +135,7 @@ F src/pragma.c f64eed914518c28d1863356163dea1e6f58e28f2
 F src/prepare.c 1b71b5d43ba3d88f2d3c2a6d084f28ac209df956
 F src/printf.c 05d2b44d7b5b80c8a4a09108ddad9c20e254370d
 F src/random.c 2b2db2de4ab491f5a14d3480466f8f4b5a5db74a
-F src/select.c 2a0f383a16c780b8ee8108e994c2f6c4f82233a9
+F src/select.c 35063b078beafe9aa35344a8ce039210920d7fea
 F src/server.c 087b92a39d883e3fa113cae259d64e4c7438bc96
 F src/shell.c 22297fffa6f00a6c6d44020fa13b1184a1bb372d
 F src/sqlite.h.in da2ab729b5c590c7dfa5418477ed181d52ab9c82
@@ -144,7 +144,7 @@ F src/sqliteInt.h 07b472437b2d7297c300f8b7cea5205984fa64d1
 F src/sqliteLimit.h eecbc288b410ae5565e71aaa4a439aae57bb0707
 F src/table.c 2c48c575dd59b3a6c5c306bc55f51a9402cf429a
 F src/tclsqlite.c d42912617d4734b8f9195416badf5b27e512ded2
-F src/test1.c aab521bef2a038dfdf1bcafb4f3372285be7d91b
+F src/test1.c 342a2628310fa709074d979e695a28a3bb570834
 F src/test2.c f0808cc643528b9620e4059ca9bda8346f526121
 F src/test3.c 5c7452038ab27aa698070799b10132f26cdd2a80
 F src/test4.c c2c0f5dc907f1346f5d4b65eb5799f11eb9e4071
@@ -156,7 +156,7 @@ F src/test9.c 4615ef08750245a2d96aaa7cbe2fb4aff2b57acc
 F src/test_async.c 3147c64c34721f088d5ab20f85dabd5d7732c007
 F src/test_autoext.c 5e892ab84aece3f0428920bf46923f16ac83962a
 F src/test_btree.c c1308ba0b88ab577fa56c9e493a09829dfcded9c
-F src/test_config.c 100a3381cedd5435ce6928f1c21ec6887a16b71e
+F src/test_config.c 097a49a8804815799dc3d2220e6af693ad54f59d
 F src/test_devsym.c cee1aecaa90c895030399ca4ae38f84a08038f8a
 F src/test_func.c 9e9b33ff083b65da91c389cece903bc32de06f01
 F src/test_hexio.c 1a1cd8324d57585ea86b922f609fa1fbaaf9662d
@@ -175,9 +175,9 @@ F src/utf.c 32b00d6e19010025e58f2ecb2f921d5e126771b4
 F src/util.c dba9e04121eb17ec4643d6ca231ff859452cf0e2
 F src/vacuum.c 3524411bfb58aac0d87eadd3e5b7cd532772af30
 F src/vdbe.c 43b261f50be60c758430a9072f960715f2ff0852
-F src/vdbe.h 58a7d931ffb704e034b2a725981cfa5bd406fad9
+F src/vdbe.h 93acc03fe8002173cb6affad2bf5d5c5305ba229
 F src/vdbeInt.h 76c81d057a39813de0fda3cad1498655d53ec69d
-F src/vdbeapi.c a3bddeee0f011faadb20316926cc97f95efa6415
+F src/vdbeapi.c b9e9d7a58690c1e1ae66de7232edccf4793ad817
 F src/vdbeaux.c 82f3c8913e68b4928de28c3fa117464356d59df6
 F src/vdbeblob.c 63c750acc7b5012479f508c0e9627372a82cb65d
 F src/vdbefifo.c a30c237b2a3577e1415fb6e288cbb6b8ed1e5736
@@ -624,7 +624,7 @@ F www/tclsqlite.tcl 8be95ee6dba05eabcd27a9d91331c803f2ce2130
 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
 F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
 F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5
-P d2140cae39dcced63e3ad5771e52d522ce587c96
-R 438a95b31cb1994f639e5613e5c3d839
+P d8686abcdf9e566571033f2f137142f742df9357
+R aa65ee25792b35b0b257992140c3f662
 U drh
-Z 141fc6916bd71c55ee794d15ce44ae0c
+Z 466acf301fdb80b8f45999c2ef27b0df
index 49185d8717bc5c0e1460ba3f22ea97aa2901fd73..2cba4055cddbbdf75cc681848db650d595127176 100644 (file)
@@ -1 +1 @@
-d8686abcdf9e566571033f2f137142f742df9357
\ No newline at end of file
+8ef26646cff9be75c584a9abfcfffcfdb49b3969
\ No newline at end of file
index 450357c7108783800d50f38e577a8c8fd177e717..18532b585ac4dd62d3dd8022c0ffffb03c17f1b5 100644 (file)
@@ -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.416 2008/03/20 14:03:29 drh Exp $
+** $Id: select.c,v 1.417 2008/03/22 01:07:18 drh Exp $
 */
 #include "sqliteInt.h"
 
@@ -1005,6 +1005,7 @@ static void generateColumnTypes(
   SrcList *pTabList,  /* List of tables */
   ExprList *pEList    /* Expressions defining the result set */
 ){
+#ifndef SQLITE_OMIT_DECLTYPE
   Vdbe *v = pParse->pVdbe;
   int i;
   NameContext sNC;
@@ -1012,20 +1013,26 @@ static void generateColumnTypes(
   sNC.pParse = pParse;
   for(i=0; i<pEList->nExpr; i++){
     Expr *p = pEList->a[i].pExpr;
+    const char *zType;
+#ifdef SQLITE_ENABLE_COLUMN_METADATA
     const char *zOrigDb = 0;
     const char *zOrigTab = 0;
     const char *zOrigCol = 0;
-    const char *zType = columnType(&sNC, p, &zOrigDb, &zOrigTab, &zOrigCol);
+    zType = columnType(&sNC, p, &zOrigDb, &zOrigTab, &zOrigCol);
 
     /* The vdbe must make its own copy of the column-type and other 
     ** column specific strings, in case the schema is reset before this
     ** virtual machine is deleted.
     */
-    sqlite3VdbeSetColName(v, i, COLNAME_DECLTYPE, zType, P4_TRANSIENT);
     sqlite3VdbeSetColName(v, i, COLNAME_DATABASE, zOrigDb, P4_TRANSIENT);
     sqlite3VdbeSetColName(v, i, COLNAME_TABLE, zOrigTab, P4_TRANSIENT);
     sqlite3VdbeSetColName(v, i, COLNAME_COLUMN, zOrigCol, P4_TRANSIENT);
+#else
+    zType = columnType(&sNC, p, 0, 0, 0);
+#endif
+    sqlite3VdbeSetColName(v, i, COLNAME_DECLTYPE, zType, P4_TRANSIENT);
   }
+#endif /* SQLITE_OMIT_DECLTYPE */
 }
 
 /*
index 3f718aef62eb1c7e77ca39d955ca4dff82215d89..25846ad24be09b3a7d80af4b96efe41cc5e1421b 100644 (file)
@@ -13,7 +13,7 @@
 ** is not included in the SQLite library.  It is used for automated
 ** testing of the SQLite library.
 **
-** $Id: test1.c,v 1.294 2008/03/20 16:30:18 drh Exp $
+** $Id: test1.c,v 1.295 2008/03/22 01:07:18 drh Exp $
 */
 #include "sqliteInt.h"
 #include "tcl.h"
@@ -4526,10 +4526,12 @@ int Sqlitetest1_Init(Tcl_Interp *interp){
      { "sqlite3_column_double",         test_column_double ,0 },
      { "sqlite3_column_int64",          test_column_int64  ,0 },
      { "sqlite3_column_text",       test_stmt_utf8,  sqlite3_column_text      },
-     { "sqlite3_column_decltype",   test_stmt_utf8,  sqlite3_column_decltype  },
      { "sqlite3_column_name",       test_stmt_utf8,  sqlite3_column_name      },
      { "sqlite3_column_int",        test_stmt_int,   sqlite3_column_int       },
      { "sqlite3_column_bytes",      test_stmt_int,   sqlite3_column_bytes     },
+#ifndef SQLITE_OMIT_DECLTYPE
+     { "sqlite3_column_decltype",   test_stmt_utf8,  sqlite3_column_decltype  },
+#endif
 #ifdef SQLITE_ENABLE_COLUMN_METADATA
 { "sqlite3_column_database_name", test_stmt_utf8, sqlite3_column_database_name},
 { "sqlite3_column_table_name", test_stmt_utf8, sqlite3_column_table_name},
@@ -4539,9 +4541,11 @@ int Sqlitetest1_Init(Tcl_Interp *interp){
 #ifndef SQLITE_OMIT_UTF16
      { "sqlite3_column_bytes16",    test_stmt_int,   sqlite3_column_bytes16   },
      { "sqlite3_column_text16",     test_stmt_utf16, sqlite3_column_text16    },
-     { "sqlite3_column_decltype16", test_stmt_utf16, sqlite3_column_decltype16},
      { "sqlite3_column_name16",     test_stmt_utf16, sqlite3_column_name16    },
      { "add_alignment_test_collations", add_alignment_test_collations, 0      },
+#ifndef SQLITE_OMIT_DECLTYPE
+     { "sqlite3_column_decltype16", test_stmt_utf16, sqlite3_column_decltype16},
+#endif
 #ifdef SQLITE_ENABLE_COLUMN_METADATA
 {"sqlite3_column_database_name16",
   test_stmt_utf16, sqlite3_column_database_name16},
index c396763d4dda67498cd0c74a163777a14058f7dd..1045dcda5ca12cd4ef7140f727df8e796119c0ca 100644 (file)
@@ -16,7 +16,7 @@
 ** The focus of this file is providing the TCL testing layer
 ** access to compile-time constants.
 **
-** $Id: test_config.c,v 1.23 2008/03/21 16:45:48 drh Exp $
+** $Id: test_config.c,v 1.24 2008/03/22 01:07:18 drh Exp $
 */
 
 #include "sqliteLimit.h"
@@ -195,6 +195,12 @@ static void set_options(Tcl_Interp *interp){
   Tcl_SetVar2(interp, "sqlite_options", "datetime", "1", TCL_GLOBAL_ONLY);
 #endif
 
+#ifdef SQLITE_OMIT_DECLTYPE
+  Tcl_SetVar2(interp, "sqlite_options", "decltype", "0", TCL_GLOBAL_ONLY);
+#else
+  Tcl_SetVar2(interp, "sqlite_options", "decltype", "1", TCL_GLOBAL_ONLY);
+#endif
+
 #ifdef SQLITE_OMIT_DISKIO
   Tcl_SetVar2(interp, "sqlite_options", "diskio", "0", TCL_GLOBAL_ONLY);
 #else
index 16b19dcd84cc882326f72711a6d84d69a1ba9cb3..bcc8cd9a53aef9286523dc36c92d383519a5ef47 100644 (file)
@@ -15,7 +15,7 @@
 ** or VDBE.  The VDBE implements an abstract machine that runs a
 ** simple program to access and modify the underlying database.
 **
-** $Id: vdbe.h,v 1.125 2008/01/17 17:27:31 drh Exp $
+** $Id: vdbe.h,v 1.126 2008/03/22 01:07:18 drh Exp $
 */
 #ifndef _SQLITE_VDBE_H_
 #define _SQLITE_VDBE_H_
@@ -119,7 +119,15 @@ typedef struct VdbeOpList VdbeOpList;
 #define COLNAME_DATABASE 2
 #define COLNAME_TABLE    3
 #define COLNAME_COLUMN   4
-#define COLNAME_N        5      /* Number of COLNAME_xxx symbols */
+#ifdef SQLITE_ENABLE_COLUMN_METADATA
+# define COLNAME_N        5      /* Number of COLNAME_xxx symbols */
+#else
+# ifdef SQLITE_OMIT_DECLTYPE
+#   define COLNAME_N      1      /* Store only the name */
+# else
+#   define COLNAME_N      2      /* Store the name and decltype */
+# endif
+#endif
 
 /*
 ** The following macro converts a relative address in the p2 field
index 38997fabc989ec317aa0ec56a038c250853eee7a..dfefae1165e68c7f9c83558f677aca220e819d18 100644 (file)
@@ -752,6 +752,16 @@ const void *sqlite3_column_name16(sqlite3_stmt *pStmt, int N){
 }
 #endif
 
+/*
+** Constraint:  If you have ENABLE_COLUMN_METADATA then you must
+** not define OMIT_DECLTYPE.
+*/
+#if defined(SQLITE_OMIT_DECLTYPE) && defined(SQLITE_ENABLE_COLUMN_METADATA)
+# error "Must not define both SQLITE_OMIT_DECLTYPE \
+         and SQLITE_ENABLE_COLUMN_METADATA"
+#endif
+
+#ifndef SQLITE_OMIT_DECLTYPE
 /*
 ** Return the column declaration type (if applicable) of the 'i'th column
 ** of the result set of SQL statement pStmt.
@@ -766,6 +776,7 @@ const void *sqlite3_column_decltype16(sqlite3_stmt *pStmt, int N){
       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_DECLTYPE);
 }
 #endif /* SQLITE_OMIT_UTF16 */
+#endif /* SQLITE_OMIT_DECLTYPE */
 
 #ifdef SQLITE_ENABLE_COLUMN_METADATA
 /*