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