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