Add some support for using row value constructors in certain parts of SQL expressions. There are many bugs on this branch.

FossilOrigin-Name: b2204215b231202aef7a218411cc2ddaecf28f35
diff --git a/src/sqliteInt.h b/src/sqliteInt.h
index 998a17d..3caa65d 100644
--- a/src/sqliteInt.h
+++ b/src/sqliteInt.h
@@ -2317,6 +2317,8 @@
 #define EP_CanBeNull 0x100000 /* Can be null despite NOT NULL constraint */
 #define EP_Subquery  0x200000 /* Tree contains a TK_SELECT operator */
 #define EP_Alias     0x400000 /* Is an alias for a result set column */
+#define EP_VectorOk  0x800000 /* This expression may be a row value */
+#define EP_Vector    0x1000000/* This expression is a row value */
 
 /*
 ** Combinations of two or more EP_* flags
@@ -2762,7 +2764,7 @@
 */
 struct SelectDest {
   u8 eDest;            /* How to dispose of the results.  On of SRT_* above. */
-  char affSdst;        /* Affinity used when eDest==SRT_Set */
+  char *zAffSdst;      /* Affinity used when eDest==SRT_Set */
   int iSDParm;         /* A parameter used by the eDest disposal method */
   int iSdst;           /* Base register where results are written */
   int nSdst;           /* Number of registers allocated */
@@ -4237,4 +4239,6 @@
 int sqlite3DbstatRegister(sqlite3*);
 #endif
 
+int sqlite3ExprVectorSize(Expr *pExpr);
+
 #endif /* SQLITEINT_H */