aboutsummaryrefslogtreecommitdiff
path: root/src/select.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2016-02-29 15:53:11 +0000
committerdrh <drh@noemail.net>2016-02-29 15:53:11 +0000
commit94eaafa9ce6e044b834c56c712d18ba3c1f6d91d (patch)
treed50a428eee181d33045692ecb3980f7659279f8f /src/select.c
parent743606c3d3843dcc25be65bcb3cce2e10f8d752c (diff)
downloadsqlite-94eaafa9ce6e044b834c56c712d18ba3c1f6d91d.tar.gz
sqlite-94eaafa9ce6e044b834c56c712d18ba3c1f6d91d.zip
Reduce the amount of heap required to store many schemas by storing each
column datatype appended to the column name, rather than as a separate allocation. FossilOrigin-Name: 842b21162713bb141b845b01c136457a31af4ab0
Diffstat (limited to 'src/select.c')
-rw-r--r--src/select.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/src/select.c b/src/select.c
index aa1f21485..c9bc389b2 100644
--- a/src/select.c
+++ b/src/select.c
@@ -1429,8 +1429,8 @@ static const char *columnTypeImpl(
zType = "INTEGER";
zOrigCol = "rowid";
}else{
- zType = pTab->aCol[iCol].zType;
zOrigCol = pTab->aCol[iCol].zName;
+ zType = sqlite3StrNext(zOrigCol);
estWidth = pTab->aCol[iCol].szEst;
}
zOrigTab = pTab->zName;
@@ -1442,7 +1442,7 @@ static const char *columnTypeImpl(
if( iCol<0 ){
zType = "INTEGER";
}else{
- zType = pTab->aCol[iCol].zType;
+ zType = sqlite3StrNext(pTab->aCol[iCol].zName);
estWidth = pTab->aCol[iCol].szEst;
}
#endif
@@ -1727,10 +1727,7 @@ static void selectAddColumnTypeAndCollation(
a = pSelect->pEList->a;
for(i=0, pCol=pTab->aCol; i<pTab->nCol; i++, pCol++){
p = a[i].pExpr;
- if( pCol->zType==0 ){
- pCol->zType = sqlite3DbStrDup(db,
- columnType(&sNC, p,0,0,0, &pCol->szEst));
- }
+ columnType(&sNC, p, 0, 0, 0, &pCol->szEst);
szAll += pCol->szEst;
pCol->affinity = sqlite3ExprAffinity(p);
if( pCol->affinity==0 ) pCol->affinity = SQLITE_AFF_BLOB;