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