diff options
author | drh <drh@noemail.net> | 2018-08-29 20:52:40 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2018-08-29 20:52:40 +0000 |
commit | 17f19eadb82a2463c68f852ef7cb591cf61605a9 (patch) | |
tree | 09704b49ac422befdaf9aa692606bf9108020b53 /ext/rtree/rtree.c | |
parent | 9d67afc421b726ec02fb422deadee31247f6aac3 (diff) | |
download | sqlite-17f19eadb82a2463c68f852ef7cb591cf61605a9.tar.gz sqlite-17f19eadb82a2463c68f852ef7cb591cf61605a9.zip |
Fixes to the UPDATE logic in Geopoly.
FossilOrigin-Name: 7c3cee0a2a5ccacff27400c38bd708f7b9b968eb013a8fa685d876dfe85e12a6
Diffstat (limited to 'ext/rtree/rtree.c')
-rw-r--r-- | ext/rtree/rtree.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/ext/rtree/rtree.c b/ext/rtree/rtree.c index 091c0bc6b..06efdc71f 100644 --- a/ext/rtree/rtree.c +++ b/ext/rtree/rtree.c @@ -127,6 +127,7 @@ struct Rtree { u8 nBytesPerCell; /* Bytes consumed per cell */ u8 inWrTrans; /* True if inside write transaction */ u8 nAux; /* # of auxiliary columns in %_rowid */ + u8 nAuxNotNull; /* Number of initial not-null aux columns */ int iDepth; /* Current depth of the r-tree structure */ char *zDb; /* Name of database containing r-tree table */ char *zName; /* Name of r-tree table */ @@ -3453,7 +3454,11 @@ static int rtreeSqlInit( sqlite3_str_appendf(p, "UPDATE \"%w\".\"%w_rowid\"SET ", zDb, zPrefix); for(ii=0; ii<pRtree->nAux; ii++){ if( ii ) sqlite3_str_append(p, ",", 1); - sqlite3_str_appendf(p,"a%d=?%d",ii,ii+2); + if( ii<pRtree->nAuxNotNull ){ + sqlite3_str_appendf(p,"a%d=coalesce(?%d,a%d)",ii,ii+2,ii); + }else{ + sqlite3_str_appendf(p,"a%d=?%d",ii,ii+2); + } } sqlite3_str_appendf(p, " WHERE rowid=?1"); zSql = sqlite3_str_finish(p); |