From: drh Date: Thu, 13 Sep 2012 14:42:43 +0000 (+0000) Subject: Reduce the size of the Table object by 16 bytes on 64-bit machines, mostly X-Git-Tag: version-3.7.15~141 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d815f17dabd69ca2d77a47f2dd2b61c9137f831e;p=thirdparty%2Fsqlite.git Reduce the size of the Table object by 16 bytes on 64-bit machines, mostly by avoiding intermixing pointer fields with integer fields. FossilOrigin-Name: 1cb9aedfcf81f0086fa741cb29a062ee87724a5e --- diff --git a/manifest b/manifest index a1442fc40e..cfe94bca48 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Change\sboolean\sfields\sin\sthe\sColumn\sobject\sfrom\sunsigned\scharacters\sinto\nbits\sin\sa\ssingle\sbit\smask\svariable. -D 2012-09-13T14:22:47.070 +C Reduce\sthe\ssize\sof\sthe\sTable\sobject\sby\s16\sbytes\son\s64-bit\smachines,\smostly\nby\savoiding\sintermixing\spointer\sfields\swith\sinteger\sfields. +D 2012-09-13T14:42:43.405 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 5f4f26109f9d80829122e0e09f9cda008fa065fb F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -174,12 +174,12 @@ F src/printf.c 4a9f882f1c1787a8b494a2987765acf9d97ac21f F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50 F src/resolve.c 9e28280ec98035f31900fdd1db01f86f68ca6c32 F src/rowset.c 64655f1a627c9c212d9ab497899e7424a34222e0 -F src/select.c f843c872a97baa1594c2cc3d4c003409a7bd03af +F src/select.c 171ec5fd5eae6d7a19b54f8f0abdfdd9a1c8f3ad F src/shell.c 87953c5d9c73d9494db97d1607e2e2280418f261 F src/sqlite.h.in 193c0496be6046604d1b8aa518012d3cf411f57f F src/sqlite3.rc fea433eb0a59f4c9393c8e6d76a6e2596b1fe0c0 F src/sqlite3ext.h 6904f4aadf976f95241311fbffb00823075d9477 -F src/sqliteInt.h 3f34cdf7244eaf982bb34db8f12a5008554ed5b5 +F src/sqliteInt.h f31b576c4d72e8baeb52ef7318d202ecc8cae205 F src/sqliteLimit.h 164b0e6749d31e0daa1a4589a169d31c0dec7b3d F src/status.c 35939e7e03abf1b7577ce311f48f682c40de3208 F src/table.c 2cd62736f845d82200acfa1287e33feb3c15d62e @@ -1013,7 +1013,7 @@ F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381 F tool/win/sqlite.vsix 67d8a99aceb56384a81b3f30d6c71743146d2cc9 -P 98b971fb24e0ee5f881b13401c7af51fc6effd0e -R 37404b7ee37f0075d77806a21f845cbf +P 4163f5f194741bc2bdf141973912661c6aac70f1 +R 778304ec4a7e956ad83c3af5d186ae35 U drh -Z 57c2a904e2436b132fb5cdefc09cde48 +Z f76221926d07d84fb53ed6ba4b6e00d7 diff --git a/manifest.uuid b/manifest.uuid index e1e8ad0c22..b92a750709 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -4163f5f194741bc2bdf141973912661c6aac70f1 \ No newline at end of file +1cb9aedfcf81f0086fa741cb29a062ee87724a5e \ No newline at end of file diff --git a/src/select.c b/src/select.c index 6ec9da39a1..0bf47e8521 100644 --- a/src/select.c +++ b/src/select.c @@ -1246,7 +1246,7 @@ static void generateColumnNames( static int selectColumnsFromExprList( Parse *pParse, /* Parsing context */ ExprList *pEList, /* Expr list from which to derive column names */ - int *pnCol, /* Write the number of columns here */ + i16 *pnCol, /* Write the number of columns here */ Column **paCol /* Write the new column list here */ ){ sqlite3 *db = pParse->db; /* Database connection */ diff --git a/src/sqliteInt.h b/src/sqliteInt.h index 615aa2098e..0b87add19a 100644 --- a/src/sqliteInt.h +++ b/src/sqliteInt.h @@ -1287,28 +1287,28 @@ struct VTable { */ struct Table { char *zName; /* Name of the table or view */ - int iPKey; /* If not negative, use aCol[iPKey] as the primary key */ - int nCol; /* Number of columns in this table */ Column *aCol; /* Information about each column */ Index *pIndex; /* List of SQL indexes on this table. */ - int tnum; /* Root BTree node for this table (see note above) */ - tRowcnt nRowEst; /* Estimated rows in table - from sqlite_stat1 table */ Select *pSelect; /* NULL for tables. Points to definition if a view. */ - u16 nRef; /* Number of pointers to this Table */ - u8 tabFlags; /* Mask of TF_* values */ - u8 keyConf; /* What to do in case of uniqueness conflict on iPKey */ FKey *pFKey; /* Linked list of all foreign keys in this table */ char *zColAff; /* String defining the affinity of each column */ #ifndef SQLITE_OMIT_CHECK ExprList *pCheck; /* All CHECK constraints */ #endif + tRowcnt nRowEst; /* Estimated rows in table - from sqlite_stat1 table */ + int tnum; /* Root BTree node for this table (see note above) */ + i16 iPKey; /* If not negative, use aCol[iPKey] as the primary key */ + i16 nCol; /* Number of columns in this table */ + u16 nRef; /* Number of pointers to this Table */ + u8 tabFlags; /* Mask of TF_* values */ + u8 keyConf; /* What to do in case of uniqueness conflict on iPKey */ #ifndef SQLITE_OMIT_ALTERTABLE int addColOffset; /* Offset in CREATE TABLE stmt to add a new column */ #endif #ifndef SQLITE_OMIT_VIRTUALTABLE - VTable *pVTable; /* List of VTable objects. */ int nModuleArg; /* Number of arguments to the module */ char **azModuleArg; /* Text of all module args. [0] is module name */ + VTable *pVTable; /* List of VTable objects. */ #endif Trigger *pTrigger; /* List of triggers stored in pSchema */ Schema *pSchema; /* Schema that contains this table */