From f304daa74ace4e6b856b585d71b8ff9c6e8a024a Mon Sep 17 00:00:00 2001 From: Patrick Donnelly Date: Sat, 7 Feb 2026 19:45:26 -0500 Subject: [PATCH] test: use json_extract instead of awkward json_tree Ideally this should be port better across sqlite3 versions. The sqlite3 on rocky10 failed because it started requiring components of the keys to be quoted: sqlite> select * from p as a, p as b where a.i=1 and b.i = 2 and a.fullkey = '$."libcephsqlite_vfs"."opf_sync".avgcount' and b.fullkey = '$."libcephsqlite_vfs"."opf_sync".avgcount'; i key value type atom id parent fullkey path i key value type atom id parent fullkey - -------- ----- ------- ---- --- ------ ----------------------------------------- -------------------------------- - -------- ----- ------- ---- --- ------ ------------------ 1 avgcount 4 integer 4 581 570 $."libcephsqlite_vfs"."opf_sync".avgcount $."libcephsqlite_vfs"."opf_sync" 2 avgcount 5 integer 5 581 570 $."libcephsqlite_v Fixes: https://tracker.ceph.com/issues/74755 Signed-off-by: Patrick Donnelly --- src/test/libcephsqlite/main.cc | 91 +++++++++++++++------------------- 1 file changed, 40 insertions(+), 51 deletions(-) diff --git a/src/test/libcephsqlite/main.cc b/src/test/libcephsqlite/main.cc index 7dbfd73fa67..9e4bbeeec6f 100644 --- a/src/test/libcephsqlite/main.cc +++ b/src/test/libcephsqlite/main.cc @@ -94,9 +94,6 @@ protected: "PRAGMA cache_size = 32768;" "PRAGMA temp_store = memory;" "CREATE TEMPORARY TABLE perf (i INTEGER PRIMARY KEY, v TEXT);" - "CREATE TEMPORARY VIEW p AS" - " SELECT perf.i, J.*" - " FROM perf, json_tree(perf.v) AS J;" "INSERT INTO perf (v)" " VALUES (ceph_perf());" ; @@ -488,12 +485,10 @@ TEST_F(CephSQLiteTest, WALTransactionSync) { "END TRANSACTION;" "INSERT INTO perf (v)" " VALUES (ceph_perf());" - "SELECT a.atom-b.atom" - " FROM p AS a, p AS b" - " WHERE a.i = ? AND" - " b.i = ? AND" - " a.fullkey = '$.libcephsqlite_vfs.opf_sync.avgcount' AND" - " b.fullkey = '$.libcephsqlite_vfs.opf_sync.avgcount';" + "SELECT json_extract(a.v, '$.libcephsqlite_vfs.opf_sync.avgcount') - " + " json_extract(b.v, '$.libcephsqlite_vfs.opf_sync.avgcount') " + " FROM perf AS a, perf AS b" + " WHERE a.i = ? AND b.i = ?;" ; int rc; @@ -559,12 +554,10 @@ TEST_F(CephSQLiteTest, PersistTransactionSync) { "END TRANSACTION;" "INSERT INTO perf (v)" " VALUES (ceph_perf());" - "SELECT a.atom-b.atom" - " FROM p AS a, p AS b" - " WHERE a.i = ? AND" - " b.i = ? AND" - " a.fullkey = '$.libcephsqlite_vfs.opf_sync.avgcount' AND" - " b.fullkey = '$.libcephsqlite_vfs.opf_sync.avgcount';" + "SELECT json_extract(a.v, '$.libcephsqlite_vfs.opf_sync.avgcount') - " + " json_extract(b.v, '$.libcephsqlite_vfs.opf_sync.avgcount') " + " FROM perf AS a, perf AS b" + " WHERE a.i = ? AND b.i = ?;" ; int rc; @@ -615,18 +608,18 @@ TEST_F(CephSQLiteTest, InsertExclusiveLock) { "INSERT INTO foo (a) VALUES (RANDOM());" "INSERT INTO perf (v)" " VALUES (ceph_perf());" - "SELECT a.atom, b.atom, a.atom-b.atom" - " FROM p AS a, p AS b" - " WHERE a.i = ? AND" - " b.i = ? AND" - " a.fullkey = '$.libcephsqlite_vfs.opf_lock.avgcount' AND" - " b.fullkey = '$.libcephsqlite_vfs.opf_lock.avgcount';" - "SELECT a.atom, b.atom, a.atom-b.atom" - " FROM p AS a, p AS b" - " WHERE a.i = ? AND" - " b.i = ? AND" - " a.fullkey = '$.libcephsqlite_striper.lock' AND" - " b.fullkey = '$.libcephsqlite_striper.lock';" + "SELECT json_extract(a.v, '$.libcephsqlite_vfs.opf_lock.avgcount'), " + " json_extract(b.v, '$.libcephsqlite_vfs.opf_lock.avgcount'), " + " json_extract(a.v, '$.libcephsqlite_vfs.opf_lock.avgcount') - " + " json_extract(b.v, '$.libcephsqlite_vfs.opf_lock.avgcount') " + " FROM perf AS a, perf AS b" + " WHERE a.i = ? AND b.i = ?;" + "SELECT json_extract(a.v, '$.libcephsqlite_striper.lock'), " + " json_extract(b.v, '$.libcephsqlite_striper.lock'), " + " json_extract(a.v, '$.libcephsqlite_striper.lock') - " + " json_extract(b.v, '$.libcephsqlite_striper.lock') " + " FROM perf AS a, perf AS b" + " WHERE a.i = ? AND b.i = ?;" ; int rc; @@ -685,12 +678,12 @@ TEST_F(CephSQLiteTest, TransactionSizeUpdate) { "END TRANSACTION;" "INSERT INTO perf (v)" " VALUES (ceph_perf());" - "SELECT a.atom, b.atom, a.atom-b.atom" - " FROM p AS a, p AS b" - " WHERE a.i = ? AND" - " b.i = ? AND" - " a.fullkey = '$.libcephsqlite_striper.update_size' AND" - " b.fullkey = '$.libcephsqlite_striper.update_size';" + "SELECT json_extract(a.v, '$.libcephsqlite_striper.update_size'), " + " json_extract(b.v, '$.libcephsqlite_striper.update_size'), " + " json_extract(a.v, '$.libcephsqlite_striper.update_size') - " + " json_extract(b.v, '$.libcephsqlite_striper.update_size') " + " FROM perf AS a, perf AS b" + " WHERE a.i = ? AND b.i = ?;" ; int rc; @@ -752,12 +745,12 @@ TEST_F(CephSQLiteTest, AllocatedGrowth) { " LIMIT 1024;" "INSERT INTO perf (v)" " VALUES (ceph_perf());" - "SELECT a.atom, b.atom, a.atom-b.atom" - " FROM p AS a, p AS b" - " WHERE a.i = ? AND" - " b.i = ? AND" - " a.fullkey = '$.libcephsqlite_striper.update_allocated' AND" - " b.fullkey = '$.libcephsqlite_striper.update_allocated';" + "SELECT json_extract(a.v, '$.libcephsqlite_striper.update_allocated'), " + " json_extract(b.v, '$.libcephsqlite_striper.update_allocated'), " + " json_extract(a.v, '$.libcephsqlite_striper.update_allocated') - " + " json_extract(b.v, '$.libcephsqlite_striper.update_allocated') " + " FROM perf AS a, perf AS b" + " WHERE a.i = ? AND b.i = ?;" ; int rc; @@ -854,18 +847,14 @@ TEST_F(CephSQLiteTest, DropMassive) { "VACUUM;" "INSERT INTO perf (v)" " VALUES (ceph_perf());" - "SELECT a.atom, b.atom" - " FROM p AS a, p AS b" - " WHERE a.i = ? AND" - " b.i = ? AND" - " a.fullkey = '$.libcephsqlite_striper.shrink' AND" - " b.fullkey = '$.libcephsqlite_striper.shrink';" - "SELECT a.atom-b.atom" - " FROM p AS a, p AS b" - " WHERE a.i = ? AND" - " b.i = ? AND" - " a.fullkey = '$.libcephsqlite_striper.shrink_bytes' AND" - " b.fullkey = '$.libcephsqlite_striper.shrink_bytes';" + "SELECT json_extract(a.v, '$.libcephsqlite_striper.shrink'), " + " json_extract(b.v, '$.libcephsqlite_striper.shrink') " + " FROM perf AS a, perf AS b" + " WHERE a.i = ? AND b.i = ?;" + "SELECT json_extract(a.v, '$.libcephsqlite_striper.shrink_bytes') - " + " json_extract(b.v, '$.libcephsqlite_striper.shrink_bytes') " + " FROM perf AS a, perf AS b" + " WHERE a.i = ? AND b.i = ?;" ; int rc; -- 2.47.3