diff options
author | drh <drh@noemail.net> | 2019-11-07 02:32:54 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2019-11-07 02:32:54 +0000 |
commit | 4e8e533bf7ee9afd7f6a4d8899b891bbdbf9ac53 (patch) | |
tree | c1da3e24bc7cf844b31d2c303a8859222869bc15 /src/expr.c | |
parent | dfa15270c4108fedd817a99751fc73d43d7fb29d (diff) | |
download | sqlite-4e8e533bf7ee9afd7f6a4d8899b891bbdbf9ac53.tar.gz sqlite-4e8e533bf7ee9afd7f6a4d8899b891bbdbf9ac53.zip |
Restore generated column loop detection logic that was incorrectly removed
from the previous check-in [9e07b48934e9a972]. This fixes ticket
[299b50ba812d8e54]
FossilOrigin-Name: 104a2beb57037f9353ffa77096aae0eb64e4682e667f31623bfd3d064dd8d881
Diffstat (limited to 'src/expr.c')
-rw-r--r-- | src/expr.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/expr.c b/src/expr.c index 330e057a0..093736f39 100644 --- a/src/expr.c +++ b/src/expr.c @@ -3645,7 +3645,16 @@ expr_code_doover: iSrc = sqlite3TableColumnToStorage(pTab, iCol) - pParse->iSelfTab; #ifndef SQLITE_OMIT_GENERATED_COLUMNS if( pCol->colFlags & COLFLAG_GENERATED ){ - sqlite3ExprCodeGeneratedColumn(pParse, pCol, iSrc); + if( pCol->colFlags & COLFLAG_BUSY ){ + sqlite3ErrorMsg(pParse, "generated column loop on \"%s\"", + pCol->zName); + return 0; + } + pCol->colFlags |= COLFLAG_BUSY; + if( pCol->colFlags & COLFLAG_NOTAVAIL ){ + sqlite3ExprCodeGeneratedColumn(pParse, pCol, iSrc); + } + pCol->colFlags &= ~(COLFLAG_BUSY|COLFLAG_NOTAVAIL); return iSrc; }else #endif /* SQLITE_OMIT_GENERATED_COLUMNS */ |