Extend the upsert syntax to allow a WHERE clause on the UPDATE.
FossilOrigin-Name: e4396c540a22fbc087a01050a32bfad514259d700c2381d7ac912580d7dca00f
diff --git a/src/sqliteInt.h b/src/sqliteInt.h
index 1be52c2..bb23e25 100644
--- a/src/sqliteInt.h
+++ b/src/sqliteInt.h
@@ -2717,6 +2717,7 @@
struct Upsert {
ExprList *pUpsertTarget; /* Optional description of conflicting index */
ExprList *pUpsertSet; /* The SET clause from an ON CONFLICT UPDATE */
+ Expr *pUpsertWhere; /* WHERE clause for the ON CONFLICT UPDATE */
Upsert *pUpsertNext; /* Next ON CONFLICT clause in the list */
};
@@ -4270,11 +4271,11 @@
#define sqlite3WithDelete(x,y)
#endif
#ifndef SQLITE_OMIT_UPSERT
- Upsert *sqlite3UpsertNew(sqlite3*,Upsert*,ExprList*,ExprList*);
+ Upsert *sqlite3UpsertNew(sqlite3*,Upsert*,ExprList*,ExprList*,Expr*);
void sqlite3UpsertDelete(sqlite3*,Upsert*);
Upsert *sqlite3UpsertDup(sqlite3*,Upsert*);
#else
-#define sqlite3UpsertNew(x,y,z) ((Upsert*)0)
+#define sqlite3UpsertNew(x,y,z,w) ((Upsert*)0)
#define sqlite3UpsertDelete(x,y)
#define sqlite3UpsertDup(x,y) ((Upsert*)0)
#endif