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 const std::string INSERT_LOCAL_SQL = 26 "INSERT OR REPLACE INTO local_data VALUES(?,?,?,?);"; 27 const std::string INSERT_LOCAL_SQL_FROM_CACHEHANDLE = 28 "INSERT OR REPLACE INTO maindb.local_data VALUES(?,?,?,?);"; 29 30 const std::string INSERT_CACHE_LOCAL_SQL = 31 "INSERT OR REPLACE INTO local_data VALUES(?,?,?,?,?);"; 32 33 const std::string UPDATE_LOCAL_SQL_FROM_CACHEHANDLE = 34 "UPDATE maindb.local_data SET key=?,value=?,timestamp=? where hash_key=?"; 35 36 const std::string UPDATE_CACHE_LOCAL_SQL = 37 "UPDATE local_data SET key=?,value=?,timestamp=? where hash_key=?"; 38 39 const std::string INSERT_META_SQL = 40 "INSERT OR REPLACE INTO meta_data VALUES(?,?);"; 41 42 const std::string INSERT_ATTACH_META_SQL = 43 "INSERT OR REPLACE INTO meta.meta_data VALUES(?,?);"; 44 45 const std::string INSERT_SYNC_SQL = 46 "INSERT INTO sync_data VALUES(?,?,?,?,?,?,?,?);"; 47 48 const std::string UPDATE_SYNC_SQL = 49 "UPDATE sync_data SET key=?,value=?,timestamp=?,flag=?,device=?,ori_device=?,w_timestamp=? WHERE hash_key=?;"; 50 51 const std::string INSERT_CACHE_SYNC_SQL = 52 "INSERT OR REPLACE INTO sync_data VALUES(?,?,?,?,?,?,?,?,?);"; 53 const std::string INSERT_CACHE_SYNC_SQL_FROM_MAINHANDLE = 54 "INSERT OR REPLACE INTO cache.sync_data VALUES(?,?,?,?,?,?,?,?,?);"; 55 56 const std::string UPDATE_CACHE_SYNC_SQL = 57 "UPDATE sync_data SET key=?,value=?,timestamp=?,flag=?,device=?,ori_device=?,w_timestamp=? WHERE hash_key=?;"; 58 59 const std::string UPDATE_CACHE_SYNC_SQL_FROM_MAINHANDLE = 60 "UPDATE cache.sync_data SET key=?,value=?,timestamp=?,flag=?,device=?,ori_device=?,w_timestamp=? " 61 "WHERE hash_key=?;"; 62 63 const std::string DELETE_LOCAL_SQL = 64 "DELETE FROM local_data WHERE key=?;"; 65 const std::string DELETE_LOCAL_SQL_FROM_CACHEHANDLE = 66 "DELETE FROM maindb.local_data WHERE key=?;"; 67 68 const std::string SELECT_ALL_META_KEYS = 69 "SELECT key FROM meta_data;"; 70 71 const std::string SELECT_ATTACH_ALL_META_KEYS = 72 "SELECT key FROM meta.meta_data;"; 73 74 const std::string SELECT_ALL_SYNC_ENTRIES_BY_DEV = 75 "SELECT key, value FROM sync_data WHERE device=? AND (flag&0x03=0);"; 76 77 const std::string SELECT_ALL_SYNC_ENTRIES = 78 "SELECT key, value FROM sync_data WHERE (flag&0x03=0);"; 79 80 const std::string SELECT_ALL_SYNC_ENTRIES_BY_DEV_FROM_CACHEHANDLE = 81 "SELECT key, value FROM maindb.sync_data WHERE device=? AND (flag&0x03=0);"; 82 83 const std::string SELECT_LOCAL_VALUE_TIMESTAMP_SQL = 84 "SELECT value, timestamp FROM local_data WHERE key=?;"; 85 86 const std::string SELECT_SYNC_SQL = 87 "SELECT * FROM sync_data WHERE key=?;"; 88 89 const std::string SELECT_SYNC_VALUE_WTIMESTAMP_SQL = 90 "SELECT value, w_timestamp FROM sync_data WHERE key=?;"; 91 92 const std::string SELECT_SYNC_HASH_SQL = 93 "SELECT * FROM sync_data WHERE hash_key=?;"; 94 95 const std::string SELECT_CACHE_SYNC_HASH_SQL = 96 "SELECT * FROM sync_data WHERE hash_key=? AND version=?;"; 97 const std::string SELECT_CACHE_SYNC_HASH_SQL_FROM_MAINHANDLE = 98 "SELECT * FROM cache.sync_data WHERE hash_key=? AND version=?;"; 99 100 const std::string SELECT_LOCAL_HASH_SQL = 101 "SELECT * FROM local_data WHERE hash_key=?;"; 102 103 const std::string SELECT_CACHE_LOCAL_HASH_SQL = 104 "SELECT * FROM local_data WHERE hash_key=?;"; 105 106 const std::string SELECT_META_VALUE_SQL = 107 "SELECT value FROM meta_data WHERE key=?;"; 108 109 const std::string SELECT_ATTACH_META_VALUE_SQL = 110 "SELECT value FROM meta.meta_data WHERE key=?;"; 111 112 const std::string SELECT_MAX_TIMESTAMP_SQL = 113 "SELECT MAX(timestamp) FROM sync_data;"; 114 const std::string SELECT_MAX_TIMESTAMP_SQL_FROM_CACHEHANDLE = 115 "SELECT MAX(timestamp) FROM maindb.sync_data;"; 116 117 const std::string SELECT_NATIVE_MIN_TIMESTAMP_IN_CACHE_SYNC_DATA_SQL = 118 "SELECT MIN(timestamp) FROM sync_data WHERE flag&0x02=0x02;"; 119 const std::string SELECT_NATIVE_MIN_TIMESTAMP_IN_CACHE_SYNC_DATA_SQL_FROM_MAINHANDLE = 120 "SELECT MIN(timestamp) FROM cache.sync_data WHERE flag&0x02=0x02;"; 121 122 const std::string SELECT_SYNC_ENTRIES_SQL = 123 "SELECT * FROM sync_data WHERE timestamp >= ? AND timestamp < ? AND (flag&0x02=0x02) ORDER BY timestamp ASC;"; 124 125 const std::string SELECT_SYNC_DELETED_ENTRIES_SQL = 126 "SELECT * FROM sync_data WHERE timestamp >= ? AND timestamp < ? AND (flag&0x03=0x03) ORDER BY timestamp ASC;"; 127 128 const std::string SELECT_SYNC_MODIFY_SQL = 129 "SELECT * FROM sync_data WHERE timestamp >= ? AND timestamp < ? AND (flag&0x03=0x02) ORDER BY timestamp ASC;"; 130 131 const std::string SELECT_SYNC_PREFIX_SQL = 132 "SELECT key, value FROM sync_data WHERE key>=? AND key<=? AND (flag&0x01=0) ORDER BY key ASC;"; 133 134 const std::string SELECT_SYNC_ROWID_PREFIX_SQL = 135 "SELECT rowid FROM sync_data WHERE key>=? AND key<=? AND (flag&0x01=0) ORDER BY key ASC;"; 136 137 const std::string SELECT_SYNC_DATA_BY_ROWID_SQL = 138 "SELECT key, value FROM sync_data WHERE rowid=?;"; 139 140 const std::string SELECT_LOCAL_PREFIX_SQL = 141 "SELECT key, value FROM local_data WHERE key>=? AND key<=? ORDER BY key ASC;"; 142 143 const std::string SELECT_COUNT_SYNC_PREFIX_SQL = 144 "SELECT count(key) FROM sync_data WHERE key>=? AND key<=? AND (flag&0x01=0);"; 145 146 const std::string REMOVE_DEV_DATA_SQL = 147 "DELETE FROM sync_data WHERE device=? AND (flag&0x02=0);"; 148 const std::string REMOVE_DEV_DATA_SQL_FROM_CACHEHANDLE = 149 "DELETE FROM maindb.sync_data WHERE device=? AND (flag&0x02=0);"; 150 151 const std::string REMOVE_ALL_DEV_DATA_SQL = 152 "DELETE FROM sync_data WHERE (flag&0x02=0);"; 153 154 const std::string REMOVE_ALL_DEV_DATA_SQL_FROM_CACHEHANDLE = 155 "DELETE FROM maindb.sync_data WHERE (flag&0x02=0);"; 156 157 const std::string SELECT_ENTRY_DEVICE = 158 "SELECT ori_device, device FROM sync_data WHERE key=?;"; 159 160 // sql for migrating data 161 const std::string MIGRATE_LOCAL_SQL_FROM_CACHEHANDLE = 162 "INSERT OR REPLACE INTO maindb.local_data select key, value, timestamp, hash_key from main.local_data;"; 163 const std::string MIGRATE_LOCAL_SQL_FROM_MAINHANDLE = 164 "INSERT OR REPLACE INTO main.local_data select key, value, timestamp, hash_key from cache.local_data;"; 165 166 const std::string MIGRATE_VACUUM_LOCAL_SQL_FROM_CACHEHANDLE = 167 "DELETE FROM maindb.local_data where hash_key in (select hash_key FROM maindb.local_data where key is null);"; 168 const std::string MIGRATE_VACUUM_LOCAL_SQL_FROM_MAINHANDLE = 169 "DELETE FROM main.local_data where hash_key in (select hash_key FROM main.local_data where key is null);"; 170 171 // version is index, order by better than MIN() 172 const std::string MIGRATE_SELECT_MIN_VER_CACHEDATA_FROM_CACHEHANDLE = 173 "SELECT * FROM sync_data where version = (select version from sync_data order by version limit 1);"; 174 const std::string MIGRATE_SELECT_MIN_VER_CACHEDATA_FROM_MAINHANDLE = 175 "SELECT * FROM cache.sync_data where version = (select version from cache.sync_data order by version limit 1);"; 176 177 const std::string GET_MAX_VER_CACHEDATA_FROM_CACHEHANDLE = 178 "select version from sync_data order by version DESC limit 1;"; 179 const std::string GET_MAX_VER_CACHEDATA_FROM_MAINHANDLE = 180 "select version from cache.sync_data order by version DESC limit 1;"; 181 182 const std::string MIGRATE_INSERT_DATA_TO_MAINDB_FROM_CACHEHANDLE = 183 "INSERT INTO maindb.sync_data VALUES(?,?,?,?,?,?,?,?);"; 184 const std::string MIGRATE_UPDATE_DATA_TO_MAINDB_FROM_CACHEHANDLE = 185 "UPDATE maindb.sync_data SET key=?,value=?,timestamp=?,flag=?,device=?,ori_device=?,w_timestamp=? " 186 "WHERE hash_key=?;"; 187 188 const std::string MIGRATE_INSERT_DATA_TO_MAINDB_FROM_MAINHANDLE = 189 "INSERT INTO sync_data VALUES(?,?,?,?,?,?,?,?);"; 190 const std::string MIGRATE_UPDATE_DATA_TO_MAINDB_FROM_MAINHANDLE = 191 "UPDATE sync_data SET key=?,value=?,timestamp=?,flag=?,device=?,ori_device=?,w_timestamp=? WHERE hash_key=?;"; 192 193 const std::string MIGRATE_DEL_DATA_BY_VERSION_FROM_CACHEHANDLE = 194 "DELETE FROM sync_data WHERE version=?;"; 195 const std::string MIGRATE_DEL_DATA_BY_VERSION_FROM_MAINHANDLE = 196 "DELETE FROM cache.sync_data WHERE version=?;"; 197 198 const std::string SELECT_MAIN_SYNC_HASH_SQL_FROM_CACHEHANDLE = "SELECT * FROM maindb.sync_data WHERE hash_key=?;"; 199 200 const std::string REMOVE_META_VALUE_SQL = 201 "DELETE FROM meta_data WHERE key=?;"; 202 const std::string REMOVE_ATTACH_META_VALUE_SQL = 203 "DELETE FROM meta.meta_data WHERE key=?;"; 204 205 const std::string CHECK_DB_INTEGRITY_SQL = "PRAGMA integrity_check;"; 206 207 const std::string REMOVE_META_VALUE_BY_KEY_PREFIX_SQL = 208 "DELETE FROM meta_data WHERE key>=? AND key<=?;"; 209 const std::string REMOVE_ATTACH_META_VALUE_BY_KEY_PREFIX_SQL = 210 "DELETE FROM meta.meta_data WHERE key>=? AND key<=?;"; 211 212 const std::string DELETE_SYNC_DATA_WITH_HASHKEY = "DELETE FROM sync_data where hash_key = ?;"; 213 214 const std::string DELETE_SYNC_DATA_WITH_HASHKEY_FROM_CACHEHANDLE = 215 "DELETE FROM maindb.sync_data where hash_key = ?;"; 216 217 const std::string GET_SYNC_DATA_TIRGGER_SQL = 218 "SELECT name FROM SQLITE_MASTER WHERE TYPE = 'trigger' AND TBL_NAME = 'sync_data' AND name like ?;"; 219 220 constexpr const char *UPDATE_SYNC_DATA_KEY_SQL = 221 "UPDATE sync_data SET key=translate_key(key), hash_key=cal_hash_key(key) WHERE flag&0x01=0"; 222 223 constexpr const char *FUNC_NAME_TRANSLATE_KEY = "translate_key"; 224 225 constexpr const char *FUNC_NAME_CAL_HASH_KEY = "cal_hash_key"; 226 227 const int BIND_KV_KEY_INDEX = 1; 228 const int BIND_KV_VAL_INDEX = 2; 229 const int BIND_LOCAL_TIMESTAMP_INDEX = 3; 230 const int BIND_LOCAL_HASH_KEY_INDEX = 4; 231 232 // binding index just for the get sync data sql 233 const int BIND_BEGIN_STAMP_INDEX = 1; 234 const int BIND_END_STAMP_INDEX = 2; 235 236 // mainDB 237 const int BIND_SYNC_KEY_INDEX = 1; 238 const int BIND_SYNC_VAL_INDEX = 2; 239 const int BIND_SYNC_STAMP_INDEX = 3; 240 const int BIND_SYNC_FLAG_INDEX = 4; 241 const int BIND_SYNC_DEV_INDEX = 5; 242 const int BIND_SYNC_ORI_DEV_INDEX = 6; 243 const int BIND_SYNC_HASH_KEY_INDEX = 7; 244 const int BIND_SYNC_W_TIME_INDEX = 8; 245 246 const int BIND_SYNC_UPDATE_W_TIME_INDEX = 7; 247 const int BIND_SYNC_UPDATE_HASH_KEY_INDEX = 8; 248 249 // cacheDB 250 const int BIND_CACHE_LOCAL_KEY_INDEX = 1; 251 const int BIND_CACHE_LOCAL_VAL_INDEX = 2; 252 const int BIND_CACHE_LOCAL_TIMESTAMP_INDEX = 3; 253 const int BIND_CACHE_LOCAL_HASH_KEY_INDEX = 4; 254 const int BIND_CACHE_LOCAL_FLAG_INDEX = 5; 255 256 const int BIND_CACHE_SYNC_KEY_INDEX = 1; 257 const int BIND_CACHE_SYNC_VAL_INDEX = 2; 258 const int BIND_CACHE_SYNC_STAMP_INDEX = 3; 259 const int BIND_CACHE_SYNC_FLAG_INDEX = 4; 260 const int BIND_CACHE_SYNC_DEV_INDEX = 5; 261 const int BIND_CACHE_SYNC_ORI_DEV_INDEX = 6; 262 const int BIND_CACHE_SYNC_HASH_KEY_INDEX = 7; 263 const int BIND_CACHE_SYNC_W_TIME_INDEX = 8; 264 const int BIND_CACHE_SYNC_VERSION_INDEX = 9; 265 266 // select result index for the item for sync database 267 const int SYNC_RES_KEY_INDEX = 0; 268 const int SYNC_RES_VAL_INDEX = 1; 269 const int SYNC_RES_TIME_INDEX = 2; 270 const int SYNC_RES_FLAG_INDEX = 3; 271 const int SYNC_RES_DEVICE_INDEX = 4; 272 const int SYNC_RES_ORI_DEV_INDEX = 5; 273 const int SYNC_RES_HASH_KEY_INDEX = 6; 274 const int SYNC_RES_W_TIME_INDEX = 7; 275 const int SYNC_RES_VERSION_INDEX = 8; // Available in cacheDB. 276 277 // get kv data Response index 278 const int GET_KV_RES_LOCAL_TIME_INDEX = 1; 279 const int GET_KV_RES_SYNC_TIME_INDEX = 1; 280 281 const int BIND_ORI_DEVICE_ID = 0; 282 const int BIND_PRE_DEVICE_ID = 1; 283 284 const Key REMOVE_DEVICE_DATA_KEY = {'r', 'e', 'm', 'o', 'v', 'e'}; 285 } // namespace DistributedDB 286 287 #endif // SQLITE_SINGLE_VER_STORAGE_EXECUTOR_SQL_H 288