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:
@@ -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
|
||||
|
||||
@@ -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{
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user