Skip to content

Commit 978c644

Browse files
committed
fixup changesUnionQuery tests
1 parent a14d1ab commit 978c644

File tree

3 files changed

+31
-42
lines changed

3 files changed

+31
-42
lines changed

core/src/changes-vtab-read.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,8 @@ char *crsql_changesUnionQuery(crsql_TableInfo **tableInfos, int tableInfosLen,
7474
"SELECT tbl, pks, cid, col_vrsn, db_vrsn, site_id FROM (%z) %s%s ORDER "
7575
"BY "
7676
"db_vrsn, tbl ASC",
77-
unionsStr, strlen(idxStr) > 0 ? "WHERE " : "", idxStr);
77+
unionsStr, idxStr != 0 && strlen(idxStr) > 0 ? "WHERE " : "",
78+
idxStr == 0 ? "" : idxStr);
7879
// %z frees unionsStr https://www.sqlite.org/printf.html#percentz
7980
}
8081

core/src/changes-vtab-read.test.c

Lines changed: 25 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,8 @@ static void testChangesQueryForTable() {
2929
"SELECT \'foo\' as tbl, quote(\"a\") as pks, "
3030
"__crsql_col_name as cid, __crsql_col_version as "
3131
"col_vrsn, __crsql_db_version as db_vrsn, "
32-
"__crsql_site_id as site_id FROM \"foo__crsql_clock\" "
33-
"WHERE site_id IS NOT ? AND db_vrsn > ?") == 0);
34-
sqlite3_free(query);
35-
36-
query = crsql_changesQueryForTable(tblInfo);
37-
assert(strcmp(query,
38-
"SELECT \'foo\' as tbl, quote(\"a\") as pks, "
39-
"__crsql_col_name as cid, __crsql_col_version as "
40-
"col_vrsn, __crsql_db_version as db_vrsn, "
41-
"__crsql_site_id as site_id FROM \"foo__crsql_clock\" "
42-
"WHERE site_id IS ? AND db_vrsn > ?") == 0);
32+
"__crsql_site_id as site_id FROM \"foo__crsql_clock\"") ==
33+
0);
4334
sqlite3_free(query);
4435

4536
printf("\t\e[0;32mSuccess\e[0m\n");
@@ -70,34 +61,32 @@ static void testChangesUnionQuery() {
7061

7162
char *query = crsql_changesUnionQuery(tblInfos, 2, "");
7263
assert(
73-
strcmp(
74-
query,
75-
"SELECT tbl, pks, cid, col_vrsn, db_vrsn, site_id FROM (SELECT "
76-
"\'foo\' as tbl, quote(\"a\") as pks, __crsql_col_name as "
77-
"cid, __crsql_col_version as col_vrsn, __crsql_db_version "
78-
"as db_vrsn, __crsql_site_id as site_id FROM "
79-
"\"foo__crsql_clock\" WHERE site_id IS NOT ? AND "
80-
"db_vrsn > ? UNION SELECT \'bar\' as tbl, quote(\"x\") as "
81-
"pks, __crsql_col_name as cid, __crsql_col_version as "
82-
"col_vrsn, __crsql_db_version as db_vrsn, __crsql_site_id "
83-
"as site_id FROM \"bar__crsql_clock\" WHERE site_id IS "
84-
"NOT ? AND db_vrsn > ?) ORDER BY db_vrsn, tbl ASC") == 0);
64+
strcmp(query,
65+
"SELECT tbl, pks, cid, col_vrsn, db_vrsn, site_id FROM (SELECT "
66+
" 'foo' as tbl, quote(\"a\") as pks, __crsql_col_name "
67+
"as cid, __crsql_col_version as col_vrsn, "
68+
"__crsql_db_version as db_vrsn, __crsql_site_id as site_id "
69+
" FROM \"foo__crsql_clock\" UNION SELECT 'bar' as tbl, "
70+
"quote(\"x\") as pks, __crsql_col_name as cid, "
71+
"__crsql_col_version as col_vrsn, __crsql_db_version as "
72+
"db_vrsn, __crsql_site_id as site_id FROM "
73+
"\"bar__crsql_clock\") ORDER BY db_vrsn, tbl ASC") == 0);
8574
sqlite3_free(query);
8675

87-
query = crsql_changesUnionQuery(tblInfos, 2, "");
76+
query = crsql_changesUnionQuery(tblInfos, 2, "site_id IS ? AND db_vrsn > ?");
77+
printf("\tquery: %s\n", query);
8878
assert(
89-
strcmp(
90-
query,
91-
"SELECT tbl, pks, cid, col_vrsn, db_vrsn, site_id FROM (SELECT "
92-
"\'foo\' as tbl, quote(\"a\") as pks, __crsql_col_name as "
93-
"cid, __crsql_col_version as col_vrsn, __crsql_db_version "
94-
"as db_vrsn, __crsql_site_id as site_id FROM "
95-
"\"foo__crsql_clock\" WHERE site_id IS ? AND "
96-
"db_vrsn > ? UNION SELECT \'bar\' as tbl, quote(\"x\") as "
97-
"pks, __crsql_col_name as cid, __crsql_col_version as "
98-
"col_vrsn, __crsql_db_version as db_vrsn, __crsql_site_id "
99-
"as site_id FROM \"bar__crsql_clock\" WHERE site_id IS ? "
100-
" AND db_vrsn > ?) ORDER BY db_vrsn, tbl ASC") == 0);
79+
strcmp(query,
80+
"SELECT tbl, pks, cid, col_vrsn, db_vrsn, site_id FROM (SELECT "
81+
" 'foo' as tbl, quote(\"a\") as pks, __crsql_col_name "
82+
"as cid, __crsql_col_version as col_vrsn, "
83+
"__crsql_db_version as db_vrsn, __crsql_site_id as site_id "
84+
" FROM \"foo__crsql_clock\" UNION SELECT 'bar' as tbl, "
85+
"quote(\"x\") as pks, __crsql_col_name as cid, "
86+
"__crsql_col_version as col_vrsn, __crsql_db_version as "
87+
"db_vrsn, __crsql_site_id as site_id FROM "
88+
"\"bar__crsql_clock\") WHERE site_id IS ? AND db_vrsn > ? ORDER "
89+
"BY db_vrsn, tbl ASC") == 0);
10190
sqlite3_free(query);
10291

10392
printf("\t\e[0;32mSuccess\e[0m\n");

core/src/changes-vtab.c

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -461,19 +461,18 @@ static int changesBestIndex(sqlite3_vtab *tab, sqlite3_index_info *pIdxInfo) {
461461
// the clock table has pks split out.
462462
break;
463463
case CHANGES_SINCE_VTAB_CID:
464-
constraint = "__crsql_col_id";
464+
constraint = "cid";
465465
break;
466466
case CHANGES_SINCE_VTAB_CVAL:
467-
constraint = "__crsql_col_val";
468467
break;
469468
case CHANGES_SINCE_VTAB_COL_VRSN:
470-
constraint = "__crsql_col_version";
469+
constraint = "col_vrsn";
471470
break;
472471
case CHANGES_SINCE_VTAB_DB_VRSN:
473-
constraint = "__crsql_db_version";
472+
constraint = "db_vrsn";
474473
break;
475474
case CHANGES_SINCE_VTAB_SITE_ID:
476-
constraint = "__crsql_site_id";
475+
constraint = "site_id";
477476
break;
478477
}
479478

0 commit comments

Comments
 (0)