aboutsummaryrefslogtreecommitdiff
path: root/src/expr.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2019-11-07 02:32:54 +0000
committerdrh <drh@noemail.net>2019-11-07 02:32:54 +0000
commit4e8e533bf7ee9afd7f6a4d8899b891bbdbf9ac53 (patch)
treec1da3e24bc7cf844b31d2c303a8859222869bc15 /src/expr.c
parentdfa15270c4108fedd817a99751fc73d43d7fb29d (diff)
downloadsqlite-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.c11
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 */