1 /* 2 * Copyright (c) 2021 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef SQLITE_SINGLE_VER_STORAGE_EXECUTOR_SQL_H 17 #define SQLITE_SINGLE_VER_STORAGE_EXECUTOR_SQL_H 18 19 #include <string> 20 21 #include "types_export.h" 22 23 namespace DistributedDB { 24 // cache.sync_data is design for migrating action after process restart 25 constexpr const char *INSERT_LOCAL_SQL = 26 "INSERT OR REPLACE INTO local_data VALUES(?,?,?,?);"; 27 constexpr const char *INSERT_LOCAL_SQL_FROM_CACHEHANDLE = 28 "INSERT OR REPLACE INTO maindb.local_data VALUES(?,?,?,?);"; 29 30 constexpr const char *INSERT_CACHE_LOCAL_SQL = 31 "INSERT OR REPLACE INTO local_data VALUES(?,?,?,?,?);"; 32 33 constexpr const char *UPDATE_LOCAL_SQL_FROM_CACHEHANDLE = 34 "UPDATE maindb.local_data SET key=?,value=?,timestamp=? where hash_key=?"; 35 36 constexpr const char *UPDATE_CACHE_LOCAL_SQL = 37 "UPDATE local_data SET key=?,value=?,timestamp=? where hash_key=?"; 38 39 constexpr const char *INSERT_META_SQL = 40 "INSERT OR REPLACE INTO meta_data VALUES(?,?);"; 41 42 constexpr const char *INSERT_ATTACH_META_SQL = 43 "INSERT OR REPLACE INTO meta.meta_data VALUES(?,?);"; 44 45 constexpr const char *INSERT_SYNC_SQL = 46 "INSERT OR REPLACE INTO sync_data VALUES(?,?,?,?,?,?,?,?,?,?);"; 47 48 constexpr const char *UPDATE_SYNC_SQL = 49 "UPDATE sync_data SET key=?,value=?,timestamp=?,flag=?,device=?,ori_device=?,w_timestamp=?," \ 50 "modify_time=?,create_time=? WHERE hash_key=?;"; 51 52 constexpr const char *INSERT_CACHE_SYNC_SQL = 53 "INSERT OR REPLACE INTO sync_data VALUES(?,?,?,?,?,?,?,?,?);"; 54 constexpr const char *INSERT_CACHE_SYNC_SQL_FROM_MAINHANDLE = 55 "INSERT OR REPLACE INTO cache.sync_data VALUES(?,?,?,?,?,?,?,?,?);"; 56 57 constexpr const char *UPDATE_CACHE_SYNC_SQL = 58 "UPDATE sync_data SET key=?,value=?,timestamp=?,flag=?,device=?,ori_device=?,w_timestamp=? WHERE hash_key=?;"; 59 60 constexpr const char *UPDATE_CACHE_SYNC_SQL_FROM_MAINHANDLE = 61 "UPDATE cache.sync_data SET key=?,value=?,timestamp=?,flag=?,device=?,ori_device=?,w_timestamp=? " 62 "WHERE hash_key=?;"; 63 64 constexpr const char *DELETE_LOCAL_SQL = 65 "DELETE FROM local_data WHERE key=?;"; 66 constexpr const char *DELETE_LOCAL_SQL_FROM_CACHEHANDLE = 67 "DELETE FROM maindb.local_data WHERE key=?;"; 68 69 constexpr const char *SELECT_ALL_META_KEYS = 70 "SELECT key FROM meta_data;"; 71 72 constexpr const char *SELECT_ATTACH_ALL_META_KEYS = 73 "SELECT key FROM meta.meta_data;"; 74 75 constexpr const char *SELECT_META_KEYS_BY_PREFIX = 76 "SELECT key FROM meta_data where key like ?;"; 77 78 constexpr const char *SELECT_ATTACH_META_KEYS_BY_PREFIX = 79 "SELECT key FROM meta.meta_data where key like ?;"; 80 81 constexpr const char *SELECT_ALL_SYNC_ENTRIES_BY_DEV = 82 "SELECT key, value FROM sync_data WHERE device=? AND (flag&0x03=0);"; 83 84 constexpr const char *SELECT_ALL_SYNC_ENTRIES = 85 "SELECT key, value FROM sync_data WHERE (flag&0x03=0);"; 86 87 constexpr const char *SELECT_ALL_SYNC_ENTRIES_BY_DEV_FROM_CACHEHANDLE = 88 "SELECT key, value FROM maindb.sync_data WHERE device=? AND (flag&0x03=0);"; 89 90 constexpr const char *SELECT_ALL_SYNC_ENTRIES_FROM_CACHEHANDLE = 91 "SELECT key, value FROM maindb.sync_data WHERE (flag&0x03=0);"; 92 93 constexpr const char *SELECT_LOCAL_VALUE_TIMESTAMP_SQL = 94 "SELECT value, timestamp FROM local_data WHERE key=?;"; 95 96 constexpr const char *SELECT_SYNC_SQL = 97 "SELECT * FROM sync_data WHERE key=?;"; 98 99 constexpr const char *SELECT_SYNC_VALUE_WTIMESTAMP_SQL = 100 "SELECT value, w_timestamp FROM sync_data WHERE key=? AND (flag&0x200=0);"; 101 102 constexpr const char *SELECT_SYNC_HASH_SQL = 103 "SELECT * FROM sync_data WHERE hash_key=?;"; 104 105 constexpr const char *SELECT_CACHE_SYNC_HASH_SQL = 106 "SELECT * FROM sync_data WHERE hash_key=? AND version=?;"; 107 constexpr const char *SELECT_CACHE_SYNC_HASH_SQL_FROM_MAINHANDLE = 108 "SELECT * FROM cache.sync_data WHERE hash_key=? AND version=?;"; 109 110 constexpr const char *SELECT_LOCAL_HASH_SQL = 111 "SELECT * FROM local_data WHERE hash_key=?;"; 112 113 constexpr const char *SELECT_CACHE_LOCAL_HASH_SQL = 114 "SELECT * FROM local_data WHERE hash_key=?;"; 115 116 constexpr const char *SELECT_META_VALUE_SQL = 117 "SELECT value FROM meta_data WHERE key=?;"; 118 119 constexpr const char *SELECT_ATTACH_META_VALUE_SQL = 120 "SELECT value FROM meta.meta_data WHERE key=?;"; 121 122 constexpr const char *SELECT_MAX_TIMESTAMP_SQL = 123 "SELECT MAX(timestamp) FROM sync_data;"; 124 constexpr const char *SELECT_MAX_TIMESTAMP_SQL_FROM_CACHEHANDLE = 125 "SELECT MAX(timestamp) FROM maindb.sync_data;"; 126 127 constexpr const char *SELECT_NATIVE_MIN_TIMESTAMP_IN_CACHE_SYNC_DATA_SQL = 128 "SELECT MIN(timestamp) FROM sync_data WHERE flag&0x02=0x02;"; 129 constexpr const char *SELECT_NATIVE_MIN_TIMESTAMP_IN_CACHE_SYNC_DATA_SQL_FROM_MAINHANDLE = 130 "SELECT MIN(timestamp) FROM cache.sync_data WHERE flag&0x02=0x02;"; 131 132 constexpr const char *SELECT_SYNC_ENTRIES_SQL = 133 "SELECT * FROM sync_data WHERE timestamp >= ? AND timestamp < ? AND (flag&0x02=0x02) AND (flag&0x200=0) " 134 "ORDER BY timestamp ASC;"; 135 136 constexpr const char *SELECT_SYNC_DELETED_ENTRIES_SQL = 137 "SELECT * FROM sync_data WHERE timestamp >= ? AND timestamp < ? AND (flag&0x03=0x03) AND (flag&0x200=0) " 138 "ORDER BY timestamp ASC;"; 139 140 constexpr const char *COUNT_SYNC_ENTRIES_SQL = 141 "SELECT count(key) FROM sync_data WHERE timestamp >= ? AND timestamp < ? AND (flag&0x02=0x02) " 142 "AND (flag&0x200=0);"; 143 144 constexpr const char *COUNT_SYNC_DELETED_ENTRIES_SQL = 145 "SELECT count(key) FROM sync_data WHERE timestamp >= ? AND timestamp < ? AND (flag&0x03=0x03) " 146 "AND (flag&0x200=0);"; 147 148 constexpr const char *SELECT_SYNC_MODIFY_SQL = 149 "SELECT * FROM sync_data WHERE timestamp >= ? AND timestamp < ? AND (flag&0x03=0x02) AND (flag&0x200=0) " 150 "ORDER BY timestamp ASC;"; 151 152 constexpr const char *SELECT_SYNC_PREFIX_SQL = 153 "SELECT key, value FROM sync_data WHERE key>=? AND key<=? AND (flag&0x01=0) AND (flag&0x200=0) " 154 "ORDER BY key ASC;"; 155 156 constexpr const char *SELECT_SYNC_KEY_PREFIX_SQL = 157 "SELECT key FROM sync_data WHERE key>=? AND key<=? AND (flag&0x01=0) AND (flag&0x200=0) ORDER BY key ASC;"; 158 159 constexpr const char *SELECT_SYNC_ROWID_PREFIX_SQL = 160 "SELECT rowid FROM sync_data WHERE key>=? AND key<=? AND (flag&0x01=0) AND (flag&0x200=0) ORDER BY key ASC;"; 161 162 constexpr const char *SELECT_SYNC_DATA_BY_ROWID_SQL = 163 "SELECT key, value FROM sync_data WHERE rowid=?;"; 164 165 constexpr const char *SELECT_LOCAL_PREFIX_SQL = 166 "SELECT key, value FROM local_data WHERE key>=? AND key<=? ORDER BY key ASC;"; 167 168 constexpr const char *SELECT_COUNT_SYNC_PREFIX_SQL = 169 "SELECT count(key) FROM sync_data WHERE key>=? AND key<=? AND (flag&0x01=0) AND (flag&0x200=0);"; 170 171 constexpr const char *REMOVE_DEV_DATA_SQL = 172 "DELETE FROM sync_data WHERE device=? AND (flag&0x02=0);"; 173 174 constexpr const char *REMOVE_ALL_DEV_DATA_SQL = 175 "DELETE FROM sync_data WHERE (flag&0x02=0);"; 176 177 constexpr const char *REMOVE_DEV_DATA_SQL_FROM_CACHEHANDLE = 178 "DELETE FROM maindb.sync_data WHERE device=? AND (flag&0x02=0);"; 179 180 constexpr const char *REMOVE_ALL_DEV_DATA_SQL_FROM_CACHEHANDLE = 181 "DELETE FROM maindb.sync_data WHERE (flag&0x02=0);"; 182 183 constexpr const char *SELECT_ENTRY_DEVICE = 184 "SELECT ori_device, device FROM sync_data WHERE key=?;"; 185 186 // sql for migrating data 187 constexpr const char *MIGRATE_LOCAL_SQL_FROM_CACHEHANDLE = 188 "INSERT OR REPLACE INTO maindb.local_data select key, value, timestamp, hash_key from main.local_data;"; 189 constexpr const char *MIGRATE_LOCAL_SQL_FROM_MAINHANDLE = 190 "INSERT OR REPLACE INTO main.local_data select key, value, timestamp, hash_key from cache.local_data;"; 191 192 constexpr const char *MIGRATE_VACUUM_LOCAL_SQL_FROM_CACHEHANDLE = 193 "DELETE FROM maindb.local_data where hash_key in (select hash_key FROM maindb.local_data where key is null);"; 194 constexpr const char *MIGRATE_VACUUM_LOCAL_SQL_FROM_MAINHANDLE = 195 "DELETE FROM main.local_data where hash_key in (select hash_key FROM main.local_data where key is null);"; 196 197 // version is index, order by better than MIN() 198 constexpr const char *MIGRATE_SELECT_MIN_VER_CACHEDATA_FROM_CACHEHANDLE = 199 "SELECT * FROM sync_data where version = (select version from sync_data order by version limit 1);"; 200 constexpr const char *MIGRATE_SELECT_MIN_VER_CACHEDATA_FROM_MAINHANDLE = 201 "SELECT * FROM cache.sync_data where version = (select version from cache.sync_data order by version limit 1);"; 202 203 constexpr const char *GET_MAX_VER_CACHEDATA_FROM_CACHEHANDLE = 204 "select version from sync_data order by version DESC limit 1;"; 205 constexpr const char *GET_MAX_VER_CACHEDATA_FROM_MAINHANDLE = 206 "select version from cache.sync_data order by version DESC limit 1;"; 207 208 constexpr const char *MIGRATE_INSERT_DATA_TO_MAINDB_FROM_CACHEHANDLE = 209 "INSERT INTO maindb.sync_data VALUES(?,?,?,?,?,?,?,?,?,?);"; 210 constexpr const char *MIGRATE_UPDATE_DATA_TO_MAINDB_FROM_CACHEHANDLE = 211 "UPDATE maindb.sync_data SET key=?,value=?,timestamp=?,flag=?,device=?,ori_device=?,w_timestamp=?," 212 "modify_time=?,create_time=? WHERE hash_key=?;"; 213 214 constexpr const char *MIGRATE_INSERT_DATA_TO_MAINDB_FROM_MAINHANDLE = 215 "INSERT INTO sync_data VALUES(?,?,?,?,?,?,?,?,?,?);"; 216 constexpr const char *MIGRATE_UPDATE_DATA_TO_MAINDB_FROM_MAINHANDLE = 217 "UPDATE sync_data SET key=?,value=?,timestamp=?,flag=?,device=?,ori_device=?,w_timestamp=?," 218 "modify_time=?,create_time=? WHERE hash_key=?;"; 219 220 constexpr const char *MIGRATE_DEL_DATA_BY_VERSION_FROM_CACHEHANDLE = 221 "DELETE FROM sync_data WHERE version=?;"; 222 constexpr const char *MIGRATE_DEL_DATA_BY_VERSION_FROM_MAINHANDLE = 223 "DELETE FROM cache.sync_data WHERE version=?;"; 224 225 constexpr const char *SELECT_MAIN_SYNC_HASH_SQL_FROM_CACHEHANDLE = 226 "SELECT * FROM maindb.sync_data WHERE hash_key=?;"; 227 228 constexpr const char *REMOVE_META_VALUE_SQL = 229 "DELETE FROM meta_data WHERE key=?;"; 230 constexpr const char *REMOVE_ATTACH_META_VALUE_SQL = 231 "DELETE FROM meta.meta_data WHERE key=?;"; 232 233 constexpr const char *CHECK_DB_INTEGRITY_SQL = "PRAGMA integrity_check;"; 234 235 constexpr const char *REMOVE_META_VALUE_BY_KEY_PREFIX_SQL = 236 "DELETE FROM meta_data WHERE key>=? AND key<=?;"; 237 constexpr const char *REMOVE_ATTACH_META_VALUE_BY_KEY_PREFIX_SQL = 238 "DELETE FROM meta.meta_data WHERE key>=? AND key<=?;"; 239 240 constexpr const char *DELETE_SYNC_DATA_WITH_HASHKEY = "DELETE FROM sync_data where hash_key = ?;"; 241 242 constexpr const char *DELETE_SYNC_DATA_WITH_HASHKEY_FROM_CACHEHANDLE = 243 "DELETE FROM maindb.sync_data where hash_key = ?;"; 244 245 constexpr const char *GET_SYNC_DATA_TIRGGER_SQL = 246 "SELECT name FROM SQLITE_MASTER WHERE TYPE = 'trigger' AND TBL_NAME = 'sync_data' AND name like ?;"; 247 248 constexpr const char *REMOVE_CLOUD_ALL_LOG_DATA_SQL = 249 "DELETE FROM naturalbase_kv_aux_sync_data_log;"; 250 251 constexpr const char *REMOVE_ALL_DEV_SYNC_DATA_SQL = 252 "DELETE FROM sync_data WHERE (flag&0x02=0) AND (flag&0x100=0);"; 253 254 constexpr const char *REMOVE_DEV_SYNC_DATA_BY_DEV_ID_SQL = 255 "DELETE FROM sync_data WHERE device=? AND (flag&0x02=0) AND (flag&0x100=0);"; 256 257 constexpr const char *REMOVE_CLOUD_ALL_DEV_DATA_SQL = 258 "DELETE FROM sync_data WHERE (flag&0x100!=0);"; 259 260 constexpr const char *UPDATE_CLOUD_ALL_DEV_DATA_SQL = 261 "UPDATE sync_data SET flag=(flag|0x02)&(~0x100) WHERE (flag&0x100!=0);"; 262 263 constexpr const char *REMOVE_CLOUD_DEV_DATA_BY_DEVID_SQL = 264 "DELETE FROM sync_data WHERE device=? AND (flag&0x100!=0);"; 265 266 constexpr const char *REMOVE_CLOUD_ALL_DEV_DATA_VERSION_SQL = 267 "DELETE FROM sync_data WHERE key LIKE 'naturalbase_cloud_version_%' AND length(device)!=0;"; 268 269 constexpr const char *REMOVE_CLOUD_DEV_DATA_VERSION_BY_DEVID_SQL = 270 "DELETE FROM sync_data WHERE device=? AND key LIKE 'naturalbase_cloud_version_%';"; 271 272 constexpr const char *UPDATE_CLOUD_DEV_DATA_BY_DEVID_SQL = 273 "UPDATE sync_data SET flag=(flag|0x02)&(~0x100) WHERE device=? AND (flag&0x100!=0);"; 274 275 constexpr const char *REMOVE_CLOUD_DEV_DATA_BY_USERID_SQL = 276 "DELETE FROM sync_data WHERE (flag&0x100!=0) AND hash_key IN" \ 277 "(SELECT hash_key FROM naturalbase_kv_aux_sync_data_log WHERE userid =?);"; 278 279 constexpr const char *UPDATE_CLOUD_DEV_DATA_BY_USERID_SQL = 280 "UPDATE sync_data SET flag=(flag|0x02)&(~0x100) WHERE (flag&0x100!=0) AND hash_key IN" \ 281 "(SELECT hash_key FROM naturalbase_kv_aux_sync_data_log WHERE userid =?);"; 282 283 constexpr const char *REMOVE_CLOUD_DEV_DATA_BY_DEVID_HASHKEY_NOTIN_SQL = 284 "DELETE FROM sync_data WHERE device=? AND (flag&0x100!=0) AND hash_key NOT IN" \ 285 "(SELECT hash_key FROM naturalbase_kv_aux_sync_data_log);"; 286 287 constexpr const char *UPDATE_CLOUD_DEV_DATA_BY_DEVID_HASHKEY_NOTIN_SQL = 288 "UPDATE sync_data SET flag=(flag|0x02)&(~0x100) WHERE device=? AND (flag&0x100!=0) AND hash_key NOT IN" \ 289 "(SELECT hash_key FROM naturalbase_kv_aux_sync_data_log);"; 290 291 constexpr const char *REMOVE_CLOUD_LOG_DATA_BY_DEVID_SQL = 292 "DELETE FROM naturalbase_kv_aux_sync_data_log WHERE hash_key IN" \ 293 "(SELECT hash_key FROM sync_data WHERE device =?);"; 294 295 constexpr const char *REMOVE_CLOUD_LOG_DATA_BY_USERID_SQL = 296 "DELETE FROM naturalbase_kv_aux_sync_data_log WHERE userid =?;"; 297 298 constexpr const char *REMOVE_CLOUD_LOG_DATA_BY_USERID_DEVID_SQL = 299 "DELETE FROM naturalbase_kv_aux_sync_data_log WHERE userid =? AND hash_key IN" \ 300 "(SELECT hash_key FROM sync_data WHERE device =?);"; 301 302 constexpr const char *SELECT_CLOUD_LOG_DATA_BY_DEVID_SQL = 303 "SELECT * FROM naturalbase_kv_aux_sync_data_log WHERE hash_key IN" \ 304 "(SELECT hash_key FROM sync_data WHERE device =?);"; 305 306 constexpr const char *SELECT_CLOUD_LOG_DATA_BY_USERID_DEVID_SQL = 307 "SELECT * FROM naturalbase_kv_aux_sync_data_log WHERE userid =? AND hash_key IN" \ 308 "(SELECT hash_key FROM sync_data WHERE device =?);"; 309 310 // Check whether the hashKey is the same but the userId is different 311 constexpr const char *SELECT_CLOUD_LOG_DATA_BY_USERID_HASHKEY_SQL = 312 "SELECT * FROM naturalbase_kv_aux_sync_data_log WHERE userid =? AND hash_key IN" \ 313 "(SELECT hash_key FROM naturalbase_kv_aux_sync_data_log WHERE userid !=?);"; 314 315 constexpr const char *SELECT_CLOUD_DEV_DATA_BY_USERID_SQL = 316 "SELECT * FROM sync_data WHERE hash_key IN" \ 317 "(SELECT hash_key FROM naturalbase_kv_aux_sync_data_log WHERE userid =?);"; 318 319 constexpr const char *REMOVE_CLOUD_ALL_HWM_DATA_SQL = 320 "DELETE FROM meta_data WHERE KEY LIKE 'naturalbase_cloud_meta_sync_data_%';"; 321 322 constexpr const char *REMOVE_CLOUD_HWM_DATA_BY_USERID_SQL = 323 "DELETE FROM meta_data WHERE KEY =?;"; 324 325 constexpr const char *UPDATE_SYNC_DATA_KEY_SQL = 326 "UPDATE sync_data SET key=translate_key(key), hash_key=cal_hash_key(key) WHERE flag&0x01=0"; 327 328 constexpr const char *FUNC_NAME_TRANSLATE_KEY = "translate_key"; 329 330 constexpr const char *FUNC_NAME_CAL_HASH_KEY = "cal_hash_key"; 331 332 constexpr const char *QUERY_COUNT_HEAD = "SELECT count(1) "; 333 334 constexpr const char *QUERY_CLOUD_SYNC_DATA_HEAD = "SELECT key, value, flag, device, ori_device, " 335 "sync_data.hash_key, w_timestamp, modify_time, create_time, cloud_gid, version, sync_data.rowid, cloud_flag "; 336 337 constexpr const char *QUERY_CLOUD_SYNC_DATA_DETAIL = "FROM sync_data LEFT JOIN " 338 "(SELECT userid, cloud_gid, version, hash_key, cloud_flag FROM naturalbase_kv_aux_sync_data_log WHERE userid=?)" 339 " AS log_table ON sync_data.hash_key = log_table.hash_key "; 340 341 constexpr const char *QUERY_CLOUD_SYNC_DATA_CONDITION = 342 "WHERE modify_time > ? AND ((cloud_gid is not null and cloud_gid != '') OR " 343 "((cloud_gid is null OR cloud_gid = '') and flag&0x01=0)) AND flag&0x200=0"; 344 345 constexpr const char *QUERY_CLOUD_VERSION_RECORD_CONDITION = "WHERE key = ? AND flag & 0x200 != 0"; 346 347 constexpr const char *QUERY_CLOUD_SYNC_DATA_LOG = "SELECT sync_data.rowid, flag, device, ori_device, " 348 "modify_time, create_time, cloud_gid, sync_data.hash_key, sync_data.key, version, cloud_flag FROM " 349 "sync_data LEFT JOIN naturalbase_kv_aux_sync_data_log ON " 350 "sync_data.hash_key = naturalbase_kv_aux_sync_data_log.hash_key "; 351 352 constexpr const char *QUERY_CLOUD_SYNC_DATA_LOG_WITH_USERID = "SELECT sync_data.rowid, flag, device, ori_device, " 353 "modify_time, create_time, cloud_gid, sync_data.hash_key, sync_data.key, version, cloud_flag FROM " 354 "sync_data LEFT JOIN (select * from naturalbase_kv_aux_sync_data_log where userid=?) as " 355 "naturalbase_kv_aux_sync_data_log ON sync_data.hash_key = naturalbase_kv_aux_sync_data_log.hash_key "; 356 357 constexpr const char *QUERY_CLOUD_VERSION_RECORD_SQL_HEAD = "SELECT key, value, flag, device, sync_data.hash_key " 358 "FROM sync_data WHERE key LIKE 'naturalbase_cloud_version_%' "; 359 360 constexpr const char *QUERY_CLOUD_VERSION_RECORD_SQL_DEVICE_CONDITION = "AND device = ? AND flag&0x200 != 0"; 361 362 constexpr const char *QUERY_CLOUD_VERSION_RECORD_SQL_EMPTY_DEVICE_CONDITION = "AND flag&0x200 != 0"; 363 364 constexpr const char *INSERT_CLOUD_SYNC_DATA_LOG = "INSERT OR REPLACE INTO naturalbase_kv_aux_sync_data_log " 365 "VALUES(?,?,?,?,?)"; 366 constexpr const char *UPSERT_CLOUD_SYNC_DATA_LOG = "INSERT INTO naturalbase_kv_aux_sync_data_log VALUES(?,?,?,?,0)" 367 "ON CONFLICT(userid, hash_key) DO UPDATE SET cloud_gid=?, version=?"; 368 369 constexpr const char *UPDATE_CLOUD_SYNC_DATA_LOG = "UPDATE naturalbase_kv_aux_sync_data_log SET cloud_gid=?, " 370 "version=?,cloud_flag=? WHERE userid=? AND hash_key=?"; 371 372 constexpr const char *SET_SYNC_DATA_NO_FORCE_PUSH = "UPDATE sync_data SET flag=flag|0x40 WHERE hash_key=?"; 373 374 constexpr const char *SET_SYNC_DATA_FORCE_PUSH = "UPDATE sync_data SET flag=flag&(~0x40) WHERE hash_key=?"; 375 376 constexpr const char *UPDATE_TIMESTAMP = "UPDATE sync_data SET timestamp=?, modify_time=? WHERE hash_key=?"; 377 378 constexpr const char *SELECT_SYNC_ENTRIES_BY_DEVICE_SQL = 379 "SELECT key,value FROM sync_data WHERE device=? AND flag&0x200=0 AND flag&0x01=0"; 380 381 constexpr const char *SELECT_COMPENSATE_SYNC_KEY_SQL = 382 "SELECT key FROM sync_data left join naturalbase_kv_aux_sync_data_log as log_table on sync_data.hash_key" 383 "= log_table.hash_key WHERE log_table.cloud_flag=log_table.cloud_flag|0x10"; 384 385 constexpr const char *SELECT_COMPENSATE_SYNC_USERID_SQL = 386 "SELECT userid FROM sync_data left join naturalbase_kv_aux_sync_data_log as log_table on sync_data.hash_key" 387 "= log_table.hash_key WHERE log_table.cloud_flag=log_table.cloud_flag|0x10"; 388 389 constexpr const char *SELECT_CLOUD_GID_SQL = 390 "SELECT cloud_gid FROM sync_data left join naturalbase_kv_aux_sync_data_log as log_table" 391 " on sync_data.hash_key = log_table.hash_key WHERE log_table.userid=?"; 392 393 constexpr const char *MARK_UPLOAD_SUCCESS = 394 "UPDATE naturalbase_kv_aux_sync_data_log SET cloud_flag=cloud_flag|0x400 " 395 "WHERE hash_key=? AND userid=? "; 396 397 constexpr const char *CHECK_DATA_CHANGED = 398 "SELECT COUNT(1) FROM sync_data WHERE modify_time=? AND hash_key=?"; 399 400 constexpr const char *CHECK_DATA_DELETE = 401 "SELECT COUNT(1) FROM sync_data WHERE modify_time!=? AND hash_key=? AND flag&0x01 != 0"; 402 403 constexpr const char *NATURALBASE_KV_AUX_SYNC_DATA_LOG_TABLE_NAME = "naturalbase_kv_aux_sync_data_log"; 404 405 const int BIND_KV_KEY_INDEX = 1; 406 const int BIND_KV_VAL_INDEX = 2; 407 const int BIND_LOCAL_TIMESTAMP_INDEX = 3; 408 const int BIND_LOCAL_HASH_KEY_INDEX = 4; 409 410 // binding index just for the get sync data sql 411 const int BIND_BEGIN_STAMP_INDEX = 1; 412 const int BIND_END_STAMP_INDEX = 2; 413 414 // mainDB 415 const int BIND_SYNC_KEY_INDEX = 1; 416 const int BIND_SYNC_VAL_INDEX = 2; 417 const int BIND_SYNC_STAMP_INDEX = 3; 418 const int BIND_SYNC_FLAG_INDEX = 4; 419 const int BIND_SYNC_DEV_INDEX = 5; 420 const int BIND_SYNC_ORI_DEV_INDEX = 6; 421 const int BIND_SYNC_HASH_KEY_INDEX = 7; 422 const int BIND_SYNC_W_TIME_INDEX = 8; 423 const int BIND_SYNC_MODIFY_TIME_INDEX = 9; 424 const int BIND_SYNC_CREATE_TIME_INDEX = 10; 425 426 const int BIND_SYNC_UPDATE_W_TIME_INDEX = 7; 427 const int BIND_SYNC_UPDATE_MODIFY_TIME_INDEX = 8; 428 const int BIND_SYNC_UPDATE_CREATE_TIME_INDEX = 9; 429 const int BIND_SYNC_UPDATE_HASH_KEY_INDEX = 10; 430 431 // cacheDB 432 const int BIND_CACHE_LOCAL_KEY_INDEX = 1; 433 const int BIND_CACHE_LOCAL_VAL_INDEX = 2; 434 const int BIND_CACHE_LOCAL_TIMESTAMP_INDEX = 3; 435 const int BIND_CACHE_LOCAL_HASH_KEY_INDEX = 4; 436 const int BIND_CACHE_LOCAL_FLAG_INDEX = 5; 437 438 const int BIND_CACHE_SYNC_KEY_INDEX = 1; 439 const int BIND_CACHE_SYNC_VAL_INDEX = 2; 440 const int BIND_CACHE_SYNC_STAMP_INDEX = 3; 441 const int BIND_CACHE_SYNC_FLAG_INDEX = 4; 442 const int BIND_CACHE_SYNC_DEV_INDEX = 5; 443 const int BIND_CACHE_SYNC_ORI_DEV_INDEX = 6; 444 const int BIND_CACHE_SYNC_HASH_KEY_INDEX = 7; 445 const int BIND_CACHE_SYNC_W_TIME_INDEX = 8; 446 const int BIND_CACHE_SYNC_VERSION_INDEX = 9; 447 448 // select result index for the item for sync database 449 const int SYNC_RES_KEY_INDEX = 0; 450 const int SYNC_RES_VAL_INDEX = 1; 451 const int SYNC_RES_TIME_INDEX = 2; 452 const int SYNC_RES_FLAG_INDEX = 3; 453 const int SYNC_RES_DEVICE_INDEX = 4; 454 const int SYNC_RES_ORI_DEV_INDEX = 5; 455 const int SYNC_RES_HASH_KEY_INDEX = 6; 456 const int SYNC_RES_W_TIME_INDEX = 7; 457 const int SYNC_RES_VERSION_INDEX = 8; // Available in cacheDB. 458 459 // get kv data Response index 460 const int GET_KV_RES_LOCAL_TIME_INDEX = 1; 461 const int GET_KV_RES_SYNC_TIME_INDEX = 1; 462 463 const int BIND_ORI_DEVICE_ID = 0; 464 const int BIND_PRE_DEVICE_ID = 1; 465 466 constexpr int BIND_CLOUD_USER = 1; 467 constexpr int BIND_CLOUD_TIMESTAMP = 2; 468 469 constexpr int CLOUD_QUERY_KEY_INDEX = 0; 470 constexpr int CLOUD_QUERY_VALUE_INDEX = 1; 471 constexpr int CLOUD_QUERY_FLAG_INDEX = 2; 472 constexpr int CLOUD_QUERY_DEV_INDEX = 3; 473 constexpr int CLOUD_QUERY_ORI_DEV_INDEX = 4; 474 constexpr int CLOUD_QUERY_HASH_KEY_INDEX = 5; 475 constexpr int CLOUD_QUERY_DEV_CREATE_TIME_INDEX = 6; 476 constexpr int CLOUD_QUERY_MODIFY_TIME_INDEX = 7; 477 constexpr int CLOUD_QUERY_CREATE_TIME_INDEX = 8; 478 constexpr int CLOUD_QUERY_CLOUD_GID_INDEX = 9; 479 constexpr int CLOUD_QUERY_VERSION_INDEX = 10; 480 constexpr int CLOUD_QUERY_ROW_ID_INDEX = 11; 481 constexpr int CLOUD_QUERY_CLOUD_FLAG_INDEX = 12; 482 483 constexpr int CLOUD_QUERY_COUNT_INDEX = 0; 484 485 constexpr int BIND_CLOUD_VERSION_RECORD_USER_INDEX = 1; 486 constexpr int BIND_CLOUD_VERSION_RECORD_KEY_INDEX = 2; 487 488 constexpr int BIND_CLOUD_VERSION_DEVICE_INDEX = 1; 489 490 constexpr int BIND_INSERT_USER_INDEX = 1; 491 constexpr int BIND_INSERT_HASH_KEY_INDEX = 2; 492 constexpr int BIND_INSERT_CLOUD_GID_INDEX = 3; 493 constexpr int BIND_INSERT_VERSION_INDEX = 4; 494 constexpr int BIND_INSERT_CLOUD_FLAG_INDEX = 5; 495 496 // use in get entries by device sql 497 constexpr int BIND_GET_ENTRIES_DEVICE_INDEX = 1; 498 // use in remove cloud flag 499 constexpr int BIND_HASH_KEY_INDEX = 1; 500 const Key REMOVE_DEVICE_DATA_KEY = {'r', 'e', 'm', 'o', 'v', 'e'}; 501 } // namespace DistributedDB 502 503 #endif // SQLITE_SINGLE_VER_STORAGE_EXECUTOR_SQL_H 504