1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-16 23:02:26 +03:00

If a table column name begins with "__hidden__" then do not include that

column in "*" expansions in SELECT statements, nor fill in that column in
an INSERT INTO that omits the column list.  <b>This branch is a 
proof-of-concept only and is not intended to ever be merged into trunk.</b>

FossilOrigin-Name: 2dbffb3a3b20dba7d7d86c8ad2e34633f616c78a
This commit is contained in:
drh
2015-11-18 18:43:15 +00:00
parent c88cd13753
commit f0c9145a36
5 changed files with 22 additions and 16 deletions

View File

@@ -1104,6 +1104,9 @@ void sqlite3AddColumn(Parse *pParse, Token *pName){
pCol = &p->aCol[p->nCol];
memset(pCol, 0, sizeof(p->aCol[0]));
pCol->zName = z;
if( sqlite3_strnicmp(z, "__hidden__", 10)==0 ){
pCol->colFlags |= COLFLAG_HIDDEN;
}
/* If there is no type specified, columns have the default affinity
** 'BLOB'. If there is a type specified, then sqlite3AddColumnType() will

View File

@@ -736,10 +736,8 @@ void sqlite3Insert(
/* Make sure the number of columns in the source data matches the number
** of columns to be inserted into the table.
*/
if( IsVirtual(pTab) ){
for(i=0; i<pTab->nCol; i++){
nHidden += (IsHiddenColumn(&pTab->aCol[i]) ? 1 : 0);
}
for(i=0; i<pTab->nCol; i++){
nHidden += (IsHiddenColumn(&pTab->aCol[i]) ? 1 : 0);
}
if( pColumn==0 && nColumn && nColumn!=(pTab->nCol-nHidden) ){
sqlite3ErrorMsg(pParse,
@@ -934,7 +932,8 @@ void sqlite3Insert(
}
if( pColumn==0 ){
if( IsHiddenColumn(&pTab->aCol[i]) ){
assert( IsVirtual(pTab) );
assert( IsVirtual(pTab)
|| sqlite3_strnicmp(pTab->aCol[i].zName,"__hidden__",10)==0 );
j = -1;
nHidden++;
}else{

View File

@@ -4365,7 +4365,8 @@ static int selectExpander(Walker *pWalker, Select *p){
** result-set list.
*/
if( IsHiddenColumn(&pTab->aCol[j]) ){
assert(IsVirtual(pTab));
assert( IsVirtual(pTab)
|| sqlite3_strnicmp(pTab->aCol[j].zName,"__hidden__", 10)==0 );
continue;
}
tableSeen = 1;