1 /*
2  * Copyright (c) 2022 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 #include "schema_constant.h"
17 
18 namespace DistributedDB {
19 const std::string SchemaConstant::KEYWORD_SCHEMA_VERSION = "SCHEMA_VERSION";
20 const std::string SchemaConstant::KEYWORD_SCHEMA_MODE = "SCHEMA_MODE";
21 const std::string SchemaConstant::KEYWORD_SCHEMA_DEFINE = "SCHEMA_DEFINE";
22 const std::string SchemaConstant::KEYWORD_SCHEMA_INDEXES = "SCHEMA_INDEXES";
23 const std::string SchemaConstant::KEYWORD_SCHEMA_SKIPSIZE = "SCHEMA_SKIPSIZE";
24 const std::string SchemaConstant::KEYWORD_SCHEMA_TYPE = "SCHEMA_TYPE";
25 const std::string SchemaConstant::KEYWORD_SCHEMA_TABLE = "TABLES";
26 const std::string SchemaConstant::KEYWORD_INDEX = "INDEX"; // For FlatBuffer-Schema
27 const std::string SchemaConstant::KEYWORD_TABLE_MODE = "TABLE_MODE";
28 
29 const std::string SchemaConstant::KEYWORD_MODE_STRICT = "STRICT";
30 const std::string SchemaConstant::KEYWORD_MODE_COMPATIBLE = "COMPATIBLE";
31 
32 const std::string SchemaConstant::KEYWORD_TYPE_BOOL = "BOOL";
33 const std::string SchemaConstant::KEYWORD_TYPE_INTEGER = "INTEGER";
34 const std::string SchemaConstant::KEYWORD_TYPE_LONG = "LONG";
35 const std::string SchemaConstant::KEYWORD_TYPE_DOUBLE = "DOUBLE";
36 const std::string SchemaConstant::KEYWORD_TYPE_STRING = "STRING";
37 const std::string SchemaConstant::KEYWORD_TYPE_BOOLEAN = "BOOLEAN";
38 
39 const std::string SchemaConstant::KEYWORD_ATTR_NOT_NULL = "NOT NULL";
40 const std::string SchemaConstant::KEYWORD_ATTR_DEFAULT = "DEFAULT";
41 const std::string SchemaConstant::KEYWORD_ATTR_VALUE_NULL = "null";
42 const std::string SchemaConstant::KEYWORD_ATTR_VALUE_TRUE = "true";
43 const std::string SchemaConstant::KEYWORD_ATTR_VALUE_FALSE = "false";
44 
45 const std::string SchemaConstant::KEYWORD_TABLE_SPLIT_DEVICE = "SPLIT_BY_DEVICE";
46 const std::string SchemaConstant::KEYWORD_TABLE_COLLABORATION = "COLLABORATION";
47 
48 const std::string SchemaConstant::KEYWORD_TYPE_RELATIVE = "RELATIVE";
49 const std::string SchemaConstant::SCHEMA_SUPPORT_VERSION = "1.0";
50 const std::string SchemaConstant::SCHEMA_SUPPORT_VERSION_V2 = "2.0";
51 const std::string SchemaConstant::SCHEMA_SUPPORT_VERSION_V2_1 = "2.1";
52 const std::string SchemaConstant::SCHEMA_CURRENT_VERSION = SCHEMA_SUPPORT_VERSION_V2_1;
53 
54 const uint32_t SchemaConstant::SCHEMA_META_FEILD_COUNT_MAX = 5;
55 const uint32_t SchemaConstant::SCHEMA_META_FEILD_COUNT_MIN = 3;
56 const uint32_t SchemaConstant::SCHEMA_FEILD_NAME_LENGTH_MAX = 64;
57 const uint32_t SchemaConstant::SCHEMA_FEILD_NAME_LENGTH_MIN = 1;
58 const uint32_t SchemaConstant::SCHEMA_FEILD_NAME_COUNT_MAX = 256;
59 const uint32_t SchemaConstant::SCHEMA_FEILD_NAME_COUNT_MIN = 1;
60 const uint32_t SchemaConstant::SCHEMA_FEILD_PATH_DEPTH_MAX = 4;
61 const uint32_t SchemaConstant::SCHEMA_INDEX_COUNT_MAX = 32;
62 const uint32_t SchemaConstant::SCHEMA_STRING_SIZE_LIMIT = 524288; // 512K
63 const uint32_t SchemaConstant::SCHEMA_DEFAULT_STRING_SIZE_LIMIT = 4096; // 4K
64 const uint32_t SchemaConstant::SCHEMA_SKIPSIZE_MAX = 4194302; // 4M - 2 Bytes
65 
66 const uint32_t SchemaConstant::SECURE_BYTE_ALIGN = 8; // 8 bytes align
67 } // namespace DistributedDB
68