support option to db
This commit is contained in:
parent
4209f666b8
commit
cf9ba60ef2
|
@ -5183,6 +5183,7 @@ static void setCreateDBOption(SCMCreateDbMsg* pMsg, SCreateDBInfo* pCreateDb) {
|
||||||
pMsg->replications = pCreateDb->replica;
|
pMsg->replications = pCreateDb->replica;
|
||||||
pMsg->quorum = pCreateDb->quorum;
|
pMsg->quorum = pCreateDb->quorum;
|
||||||
pMsg->ignoreExist = pCreateDb->ignoreExists;
|
pMsg->ignoreExist = pCreateDb->ignoreExists;
|
||||||
|
pMsg->update = pCreateDb->update;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t parseCreateDBOptions(SSqlCmd* pCmd, SCreateDBInfo* pCreateDbSql) {
|
int32_t parseCreateDBOptions(SSqlCmd* pCmd, SCreateDBInfo* pCreateDbSql) {
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
#ifndef TDENGINE_TTOKENDEF_H
|
#ifndef TDENGINE_TTOKENDEF_H
|
||||||
#define TDENGINE_TTOKENDEF_H
|
#define TDENGINE_TTOKENDEF_H
|
||||||
|
|
||||||
|
|
||||||
#define TK_ID 1
|
#define TK_ID 1
|
||||||
#define TK_BOOL 2
|
#define TK_BOOL 2
|
||||||
#define TK_TINYINT 3
|
#define TK_TINYINT 3
|
||||||
|
@ -113,115 +114,115 @@
|
||||||
#define TK_FSYNC 95
|
#define TK_FSYNC 95
|
||||||
#define TK_COMP 96
|
#define TK_COMP 96
|
||||||
#define TK_PRECISION 97
|
#define TK_PRECISION 97
|
||||||
#define TK_LP 98
|
#define TK_UPDATE 98
|
||||||
#define TK_RP 99
|
#define TK_LP 99
|
||||||
#define TK_TAGS 100
|
#define TK_RP 100
|
||||||
#define TK_USING 101
|
#define TK_TAGS 101
|
||||||
#define TK_AS 102
|
#define TK_USING 102
|
||||||
#define TK_COMMA 103
|
#define TK_AS 103
|
||||||
#define TK_NULL 104
|
#define TK_COMMA 104
|
||||||
#define TK_SELECT 105
|
#define TK_NULL 105
|
||||||
#define TK_UNION 106
|
#define TK_SELECT 106
|
||||||
#define TK_ALL 107
|
#define TK_UNION 107
|
||||||
#define TK_FROM 108
|
#define TK_ALL 108
|
||||||
#define TK_VARIABLE 109
|
#define TK_FROM 109
|
||||||
#define TK_INTERVAL 110
|
#define TK_VARIABLE 110
|
||||||
#define TK_FILL 111
|
#define TK_INTERVAL 111
|
||||||
#define TK_SLIDING 112
|
#define TK_FILL 112
|
||||||
#define TK_ORDER 113
|
#define TK_SLIDING 113
|
||||||
#define TK_BY 114
|
#define TK_ORDER 114
|
||||||
#define TK_ASC 115
|
#define TK_BY 115
|
||||||
#define TK_DESC 116
|
#define TK_ASC 116
|
||||||
#define TK_GROUP 117
|
#define TK_DESC 117
|
||||||
#define TK_HAVING 118
|
#define TK_GROUP 118
|
||||||
#define TK_LIMIT 119
|
#define TK_HAVING 119
|
||||||
#define TK_OFFSET 120
|
#define TK_LIMIT 120
|
||||||
#define TK_SLIMIT 121
|
#define TK_OFFSET 121
|
||||||
#define TK_SOFFSET 122
|
#define TK_SLIMIT 122
|
||||||
#define TK_WHERE 123
|
#define TK_SOFFSET 123
|
||||||
#define TK_NOW 124
|
#define TK_WHERE 124
|
||||||
#define TK_RESET 125
|
#define TK_NOW 125
|
||||||
#define TK_QUERY 126
|
#define TK_RESET 126
|
||||||
#define TK_ADD 127
|
#define TK_QUERY 127
|
||||||
#define TK_COLUMN 128
|
#define TK_ADD 128
|
||||||
#define TK_TAG 129
|
#define TK_COLUMN 129
|
||||||
#define TK_CHANGE 130
|
#define TK_TAG 130
|
||||||
#define TK_SET 131
|
#define TK_CHANGE 131
|
||||||
#define TK_KILL 132
|
#define TK_SET 132
|
||||||
#define TK_CONNECTION 133
|
#define TK_KILL 133
|
||||||
#define TK_STREAM 134
|
#define TK_CONNECTION 134
|
||||||
#define TK_COLON 135
|
#define TK_STREAM 135
|
||||||
#define TK_ABORT 136
|
#define TK_COLON 136
|
||||||
#define TK_AFTER 137
|
#define TK_ABORT 137
|
||||||
#define TK_ATTACH 138
|
#define TK_AFTER 138
|
||||||
#define TK_BEFORE 139
|
#define TK_ATTACH 139
|
||||||
#define TK_BEGIN 140
|
#define TK_BEFORE 140
|
||||||
#define TK_CASCADE 141
|
#define TK_BEGIN 141
|
||||||
#define TK_CLUSTER 142
|
#define TK_CASCADE 142
|
||||||
#define TK_CONFLICT 143
|
#define TK_CLUSTER 143
|
||||||
#define TK_COPY 144
|
#define TK_CONFLICT 144
|
||||||
#define TK_DEFERRED 145
|
#define TK_COPY 145
|
||||||
#define TK_DELIMITERS 146
|
#define TK_DEFERRED 146
|
||||||
#define TK_DETACH 147
|
#define TK_DELIMITERS 147
|
||||||
#define TK_EACH 148
|
#define TK_DETACH 148
|
||||||
#define TK_END 149
|
#define TK_EACH 149
|
||||||
#define TK_EXPLAIN 150
|
#define TK_END 150
|
||||||
#define TK_FAIL 151
|
#define TK_EXPLAIN 151
|
||||||
#define TK_FOR 152
|
#define TK_FAIL 152
|
||||||
#define TK_IGNORE 153
|
#define TK_FOR 153
|
||||||
#define TK_IMMEDIATE 154
|
#define TK_IGNORE 154
|
||||||
#define TK_INITIALLY 155
|
#define TK_IMMEDIATE 155
|
||||||
#define TK_INSTEAD 156
|
#define TK_INITIALLY 156
|
||||||
#define TK_MATCH 157
|
#define TK_INSTEAD 157
|
||||||
#define TK_KEY 158
|
#define TK_MATCH 158
|
||||||
#define TK_OF 159
|
#define TK_KEY 159
|
||||||
#define TK_RAISE 160
|
#define TK_OF 160
|
||||||
#define TK_REPLACE 161
|
#define TK_RAISE 161
|
||||||
#define TK_RESTRICT 162
|
#define TK_REPLACE 162
|
||||||
#define TK_ROW 163
|
#define TK_RESTRICT 163
|
||||||
#define TK_STATEMENT 164
|
#define TK_ROW 164
|
||||||
#define TK_TRIGGER 165
|
#define TK_STATEMENT 165
|
||||||
#define TK_VIEW 166
|
#define TK_TRIGGER 166
|
||||||
#define TK_COUNT 167
|
#define TK_VIEW 167
|
||||||
#define TK_SUM 168
|
#define TK_COUNT 168
|
||||||
#define TK_AVG 169
|
#define TK_SUM 169
|
||||||
#define TK_MIN 170
|
#define TK_AVG 170
|
||||||
#define TK_MAX 171
|
#define TK_MIN 171
|
||||||
#define TK_FIRST 172
|
#define TK_MAX 172
|
||||||
#define TK_LAST 173
|
#define TK_FIRST 173
|
||||||
#define TK_TOP 174
|
#define TK_LAST 174
|
||||||
#define TK_BOTTOM 175
|
#define TK_TOP 175
|
||||||
#define TK_STDDEV 176
|
#define TK_BOTTOM 176
|
||||||
#define TK_PERCENTILE 177
|
#define TK_STDDEV 177
|
||||||
#define TK_APERCENTILE 178
|
#define TK_PERCENTILE 178
|
||||||
#define TK_LEASTSQUARES 179
|
#define TK_APERCENTILE 179
|
||||||
#define TK_HISTOGRAM 180
|
#define TK_LEASTSQUARES 180
|
||||||
#define TK_DIFF 181
|
#define TK_HISTOGRAM 181
|
||||||
#define TK_SPREAD 182
|
#define TK_DIFF 182
|
||||||
#define TK_TWA 183
|
#define TK_SPREAD 183
|
||||||
#define TK_INTERP 184
|
#define TK_TWA 184
|
||||||
#define TK_LAST_ROW 185
|
#define TK_INTERP 185
|
||||||
#define TK_RATE 186
|
#define TK_LAST_ROW 186
|
||||||
#define TK_IRATE 187
|
#define TK_RATE 187
|
||||||
#define TK_SUM_RATE 188
|
#define TK_IRATE 188
|
||||||
#define TK_SUM_IRATE 189
|
#define TK_SUM_RATE 189
|
||||||
#define TK_AVG_RATE 190
|
#define TK_SUM_IRATE 190
|
||||||
#define TK_AVG_IRATE 191
|
#define TK_AVG_RATE 191
|
||||||
#define TK_TBID 192
|
#define TK_AVG_IRATE 192
|
||||||
#define TK_SEMI 193
|
#define TK_TBID 193
|
||||||
#define TK_NONE 194
|
#define TK_SEMI 194
|
||||||
#define TK_PREV 195
|
#define TK_NONE 195
|
||||||
#define TK_LINEAR 196
|
#define TK_PREV 196
|
||||||
#define TK_IMPORT 197
|
#define TK_LINEAR 197
|
||||||
#define TK_METRIC 198
|
#define TK_IMPORT 198
|
||||||
#define TK_TBNAME 199
|
#define TK_METRIC 199
|
||||||
#define TK_JOIN 200
|
#define TK_TBNAME 200
|
||||||
#define TK_METRICS 201
|
#define TK_JOIN 201
|
||||||
#define TK_STABLE 202
|
#define TK_METRICS 202
|
||||||
#define TK_INSERT 203
|
#define TK_STABLE 203
|
||||||
#define TK_INTO 204
|
#define TK_INSERT 204
|
||||||
#define TK_VALUES 205
|
#define TK_INTO 205
|
||||||
|
#define TK_VALUES 206
|
||||||
|
|
||||||
#define TK_SPACE 300
|
#define TK_SPACE 300
|
||||||
#define TK_COMMENT 301
|
#define TK_COMMENT 301
|
||||||
|
|
|
@ -129,6 +129,7 @@ typedef struct SCreateDBInfo {
|
||||||
int32_t compressionLevel;
|
int32_t compressionLevel;
|
||||||
SStrToken precision;
|
SStrToken precision;
|
||||||
bool ignoreExists;
|
bool ignoreExists;
|
||||||
|
int8_t update;
|
||||||
|
|
||||||
tVariantList *keep;
|
tVariantList *keep;
|
||||||
} SCreateDBInfo;
|
} SCreateDBInfo;
|
||||||
|
|
|
@ -229,6 +229,7 @@ wal(Y) ::= WAL INTEGER(X). { Y = X; }
|
||||||
fsync(Y) ::= FSYNC INTEGER(X). { Y = X; }
|
fsync(Y) ::= FSYNC INTEGER(X). { Y = X; }
|
||||||
comp(Y) ::= COMP INTEGER(X). { Y = X; }
|
comp(Y) ::= COMP INTEGER(X). { Y = X; }
|
||||||
prec(Y) ::= PRECISION STRING(X). { Y = X; }
|
prec(Y) ::= PRECISION STRING(X). { Y = X; }
|
||||||
|
update(Y) ::= UPDATE INTEGER(X). { Y = X; }
|
||||||
|
|
||||||
%type db_optr {SCreateDBInfo}
|
%type db_optr {SCreateDBInfo}
|
||||||
db_optr(Y) ::= . {setDefaultCreateDbOption(&Y);}
|
db_optr(Y) ::= . {setDefaultCreateDbOption(&Y);}
|
||||||
|
@ -246,6 +247,7 @@ db_optr(Y) ::= db_optr(Z) fsync(X). { Y = Z; Y.fsyncPeriod = strtol(X.z
|
||||||
db_optr(Y) ::= db_optr(Z) comp(X). { Y = Z; Y.compressionLevel = strtol(X.z, NULL, 10); }
|
db_optr(Y) ::= db_optr(Z) comp(X). { Y = Z; Y.compressionLevel = strtol(X.z, NULL, 10); }
|
||||||
db_optr(Y) ::= db_optr(Z) prec(X). { Y = Z; Y.precision = X; }
|
db_optr(Y) ::= db_optr(Z) prec(X). { Y = Z; Y.precision = X; }
|
||||||
db_optr(Y) ::= db_optr(Z) keep(X). { Y = Z; Y.keep = X; }
|
db_optr(Y) ::= db_optr(Z) keep(X). { Y = Z; Y.keep = X; }
|
||||||
|
db_optr(Y) ::= db_optr(Z) update(X). { Y = Z; Y.update = strtol(X.z, NULL, 10); }
|
||||||
|
|
||||||
%type alter_db_optr {SCreateDBInfo}
|
%type alter_db_optr {SCreateDBInfo}
|
||||||
alter_db_optr(Y) ::= . { setDefaultCreateDbOption(&Y);}
|
alter_db_optr(Y) ::= . { setDefaultCreateDbOption(&Y);}
|
||||||
|
@ -257,6 +259,7 @@ alter_db_optr(Y) ::= alter_db_optr(Z) blocks(X). { Y = Z; Y.numOfBlocks = s
|
||||||
alter_db_optr(Y) ::= alter_db_optr(Z) comp(X). { Y = Z; Y.compressionLevel = strtol(X.z, NULL, 10); }
|
alter_db_optr(Y) ::= alter_db_optr(Z) comp(X). { Y = Z; Y.compressionLevel = strtol(X.z, NULL, 10); }
|
||||||
alter_db_optr(Y) ::= alter_db_optr(Z) wal(X). { Y = Z; Y.walLevel = strtol(X.z, NULL, 10); }
|
alter_db_optr(Y) ::= alter_db_optr(Z) wal(X). { Y = Z; Y.walLevel = strtol(X.z, NULL, 10); }
|
||||||
alter_db_optr(Y) ::= alter_db_optr(Z) fsync(X). { Y = Z; Y.fsyncPeriod = strtol(X.z, NULL, 10); }
|
alter_db_optr(Y) ::= alter_db_optr(Z) fsync(X). { Y = Z; Y.fsyncPeriod = strtol(X.z, NULL, 10); }
|
||||||
|
alter_db_optr(Y) ::= alter_db_optr(Z) update(X). { Y = Z; Y.update = strtol(X.z, NULL, 10); }
|
||||||
|
|
||||||
%type typename {TAOS_FIELD}
|
%type typename {TAOS_FIELD}
|
||||||
typename(A) ::= ids(X). {
|
typename(A) ::= ids(X). {
|
||||||
|
|
|
@ -155,6 +155,7 @@ static SKeyword keywordTable[] = {
|
||||||
{"INSERT", TK_INSERT},
|
{"INSERT", TK_INSERT},
|
||||||
{"INTO", TK_INTO},
|
{"INTO", TK_INTO},
|
||||||
{"VALUES", TK_VALUES},
|
{"VALUES", TK_VALUES},
|
||||||
|
{"UPDATE", TK_UPDATE},
|
||||||
{"RESET", TK_RESET},
|
{"RESET", TK_RESET},
|
||||||
{"QUERY", TK_QUERY},
|
{"QUERY", TK_QUERY},
|
||||||
{"ADD", TK_ADD},
|
{"ADD", TK_ADD},
|
||||||
|
|
3376
src/query/src/sql.c
3376
src/query/src/sql.c
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,71 @@
|
||||||
|
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import random
|
||||||
|
import string
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
from util.log import *
|
||||||
|
from util.cases import *
|
||||||
|
from util.sql import *
|
||||||
|
|
||||||
|
|
||||||
|
class TDTestCase:
|
||||||
|
def init(self, conn, logSql):
|
||||||
|
tdLog.debug("start to execute %s" % __file__)
|
||||||
|
tdSql.init(conn.cursor(), logSql)
|
||||||
|
def run(self):
|
||||||
|
tdLog.debug("check database")
|
||||||
|
tdSql.prepare()
|
||||||
|
|
||||||
|
# check default update value
|
||||||
|
sql = "create database if not exists db"
|
||||||
|
tdSql.execute(sql)
|
||||||
|
tdSql.query('show databases')
|
||||||
|
tdSql.checkRows(1)
|
||||||
|
tdSql.checkData(0,16,0)
|
||||||
|
|
||||||
|
sql = "alter database db update 1"
|
||||||
|
|
||||||
|
# check update value
|
||||||
|
tdSql.execute(sql)
|
||||||
|
tdSql.query('show databases')
|
||||||
|
tdSql.checkRows(1)
|
||||||
|
tdSql.checkData(0,16,1)
|
||||||
|
|
||||||
|
|
||||||
|
sql = "alter database db update 0"
|
||||||
|
tdSql.execute(sql)
|
||||||
|
tdSql.query('show databases')
|
||||||
|
tdSql.checkRows(1)
|
||||||
|
tdSql.checkData(0,16,0)
|
||||||
|
|
||||||
|
sql = "alter database db update -1"
|
||||||
|
tdSql.error(sql)
|
||||||
|
|
||||||
|
sql = "alter database db update 100"
|
||||||
|
tdSql.error(sql)
|
||||||
|
|
||||||
|
tdSql.query('show databases')
|
||||||
|
tdSql.checkRows(1)
|
||||||
|
tdSql.checkData(0,16,0)
|
||||||
|
|
||||||
|
tdSql.execute('drop database db')
|
||||||
|
tdSql.error('create database db update 100')
|
||||||
|
tdSql.error('create database db update -1')
|
||||||
|
|
||||||
|
tdSql.execute('create database db update 1')
|
||||||
|
|
||||||
|
tdSql.query('show databases')
|
||||||
|
tdSql.checkRows(1)
|
||||||
|
tdSql.checkData(0,16,1)
|
||||||
|
|
||||||
|
tdSql.execute('drop database db')
|
||||||
|
|
||||||
|
def stop(self):
|
||||||
|
tdSql.close()
|
||||||
|
tdLog.success("%s successfully executed" % __file__)
|
||||||
|
|
||||||
|
|
||||||
|
tdCases.addWindows(__file__, TDTestCase())
|
||||||
|
tdCases.addLinux(__file__, TDTestCase())
|
Loading…
Reference in New Issue