Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Use randomness to prevent slowness in the generated-column-name uniqueness checking. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
6266712968a2cdcd6f5a3007d60c2cf1 |
User & Date: | drh 2015-11-14 16:47:23.463 |
Original Comment: | Use randomness to prevent showness in the generated-column-name uniqueness checking. |
Context
2015-11-14
| ||
20:52 | Use a hash table to improve the preformance of column name uniqueness checking. (check-in: 5b08f29f45 user: drh tags: trunk) | |
16:47 | Use randomness to prevent slowness in the generated-column-name uniqueness checking. (check-in: 6266712968 user: drh tags: trunk) | |
2015-11-13
| ||
20:52 | Fix a memory leak in the fuzzcheck utility. (check-in: dfd6d9f4fb user: drh tags: trunk) | |
Changes
Changes to src/select.c.
︙ | ︙ | |||
1592 1593 1594 1595 1596 1597 1598 | Parse *pParse, /* Parsing context */ ExprList *pEList, /* Expr list from which to derive column names */ i16 *pnCol, /* Write the number of columns here */ Column **paCol /* Write the new column list here */ ){ sqlite3 *db = pParse->db; /* Database connection */ int i, j; /* Loop counters */ | | | 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 | Parse *pParse, /* Parsing context */ ExprList *pEList, /* Expr list from which to derive column names */ i16 *pnCol, /* Write the number of columns here */ Column **paCol /* Write the new column list here */ ){ sqlite3 *db = pParse->db; /* Database connection */ int i, j; /* Loop counters */ u32 cnt; /* Index added to make the name unique */ Column *aCol, *pCol; /* For looping over result columns */ int nCol; /* Number of columns in the result set */ Expr *p; /* Expression for a single result column */ char *zName; /* Column name */ int nName; /* Size of name in zName[] */ if( pEList ){ |
︙ | ︙ | |||
1655 1656 1657 1658 1659 1660 1661 | for(j=cnt=0; j<i; j++){ if( sqlite3StrICmp(aCol[j].zName, zName)==0 ){ char *zNewName; int k; for(k=nName-1; k>1 && sqlite3Isdigit(zName[k]); k--){} if( k>=0 && zName[k]==':' ) nName = k; zName[nName] = 0; | | > | 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 | for(j=cnt=0; j<i; j++){ if( sqlite3StrICmp(aCol[j].zName, zName)==0 ){ char *zNewName; int k; for(k=nName-1; k>1 && sqlite3Isdigit(zName[k]); k--){} if( k>=0 && zName[k]==':' ) nName = k; zName[nName] = 0; zNewName = sqlite3MPrintf(db, "%s:%u", zName, ++cnt); sqlite3DbFree(db, zName); zName = zNewName; j = -1; if( zName==0 ) break; if( cnt>3 ) sqlite3_randomness(sizeof(cnt), &cnt); } } pCol->zName = zName; } if( db->mallocFailed ){ for(j=0; j<i; j++){ sqlite3DbFree(db, aCol[j].zName); |
︙ | ︙ |