• 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_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