SQLite

Check-in [623ddbdbf4]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Alternative fix for the double-initialization of type and collating sequence problem that leaves the estimated table size intact.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 623ddbdbf48d26dac58c593bcb9e7b184334ddfc
User & Date: drh 2015-04-21 17:17:47.197
Context
2015-04-22
01:33
When compiling for UAP, link against the new minimal MSVC runtime. (check-in: 2cb945116e user: mistachkin tags: trunk)
2015-04-21
17:17
Alternative fix for the double-initialization of type and collating sequence problem that leaves the estimated table size intact. (check-in: 623ddbdbf4 user: drh tags: trunk)
17:07
Make sure the datatype and collating sequence of transients tables are not initialized more than once. Otherwise a memory leak results. (check-in: 9e6beda2c8 user: drh tags: trunk)
Changes
Side-by-Side Diff Ignore Whitespace Patch
Changes to src/select.c.
1696
1697
1698
1699
1700
1701
1702
1703

1704
1705


1706
1707
1708
1709
1710

1711
1712
1713
1714
1715
1716
1717
1696
1697
1698
1699
1700
1701
1702

1703


1704
1705
1706
1707
1708
1709

1710
1711
1712
1713
1714
1715
1716
1717







-
+
-
-
+
+




-
+







  assert( pTab->nCol==pSelect->pEList->nExpr || db->mallocFailed );
  if( db->mallocFailed ) return;
  memset(&sNC, 0, sizeof(sNC));
  sNC.pSrcList = pSelect->pSrc;
  a = pSelect->pEList->a;
  for(i=0, pCol=pTab->aCol; i<pTab->nCol; i++, pCol++){
    p = a[i].pExpr;
    if( pCol->zType ) break;
    if( pCol->zType==0 ){
    if( pCol->zColl ) break;
    pCol->zType = sqlite3DbStrDup(db, columnType(&sNC, p,0,0,0, &pCol->szEst));
      pCol->zType = sqlite3DbStrDup(db, columnType(&sNC, p,0,0,0, &pCol->szEst));
    }
    szAll += pCol->szEst;
    pCol->affinity = sqlite3ExprAffinity(p);
    if( pCol->affinity==0 ) pCol->affinity = SQLITE_AFF_NONE;
    pColl = sqlite3ExprCollSeq(pParse, p);
    if( pColl ){
    if( pColl && pCol->zColl==0 ){
      pCol->zColl = sqlite3DbStrDup(db, pColl->zName);
    }
  }
  pTab->szTabRow = sqlite3LogEst(szAll*4);
}

/*