mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
Merge pull request #4255 from ClouGence/fix_oracle19c_paser
fix > issue #4253
This commit is contained in:
@@ -1340,7 +1340,7 @@ public class SQLExprParser extends SQLParser {
|
||||
expr = dotRest(expr);
|
||||
return primaryRest(expr);
|
||||
} else if (lexer.identifierEquals(FnvHash.Constants.SETS) //
|
||||
&& expr.getClass() == SQLIdentifierExpr.class //
|
||||
&& expr.getClass() == SQLIdentifierExpr.class //
|
||||
&& "GROUPING".equalsIgnoreCase(((SQLIdentifierExpr) expr).getName())) {
|
||||
SQLGroupingSetExpr groupingSets = new SQLGroupingSetExpr();
|
||||
lexer.nextToken();
|
||||
@@ -1961,6 +1961,10 @@ public class SQLExprParser extends SQLParser {
|
||||
} else {
|
||||
switch (lexer.token) {
|
||||
// case MODEL:
|
||||
case MODE:
|
||||
case ERRORS:
|
||||
case NOWAIT:
|
||||
case COMMIT:
|
||||
case PCTFREE:
|
||||
case INITRANS:
|
||||
case MAXTRANS:
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
package com.alibaba.druid.bvt.bug;
|
||||
import com.alibaba.druid.DbType;
|
||||
import com.alibaba.druid.sql.parser.SQLParserUtils;
|
||||
import com.alibaba.druid.sql.parser.SQLStatementParser;
|
||||
import com.alibaba.druid.util.JdbcConstants;
|
||||
import com.alibaba.druid.util.JdbcUtils;
|
||||
import com.alibaba.druid.util.Utils;
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.Reader;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
/**
|
||||
* Created by wenshao on 03/02/2017.
|
||||
*/
|
||||
public class Issue4253 extends TestCase {
|
||||
private final DbType dbType = JdbcConstants.ORACLE;
|
||||
|
||||
public void test_for_issue() throws Exception {
|
||||
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("bvt/parser/oracle-63.txt");
|
||||
Reader reader = new InputStreamReader(is, StandardCharsets.UTF_8);
|
||||
String input = Utils.read(reader);
|
||||
JdbcUtils.close(reader);
|
||||
SQLStatementParser parser = SQLParserUtils.createSQLStatementParser(input, dbType);
|
||||
Exception error = null;
|
||||
try {
|
||||
parser.parseStatement(true);
|
||||
} catch (Exception ex) {
|
||||
error = ex;
|
||||
}
|
||||
assertNull(error);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,127 @@
|
||||
CREATE TABLE CLOUDCANAL.BB (
|
||||
FOUND NUMBER(10, 0),
|
||||
FULL NUMBER(10, 0),
|
||||
GENERAL NUMBER(10, 0),
|
||||
GEOMCOLLECTION NUMBER(10, 0),
|
||||
GEOMETRY NUMBER(10, 0),
|
||||
GEOMETRYCOLLECTION NUMBER(10, 0),
|
||||
GET_FORMAT NUMBER(10, 0),
|
||||
GET_MASTER_PUBLIC_KEY NUMBER(10, 0),
|
||||
GET_SOURCE_PUBLIC_KEY NUMBER(10, 0),
|
||||
GLOBAL NUMBER(10, 0),
|
||||
GRANTS NUMBER(10, 0),
|
||||
GROUP_REPLICATION NUMBER(10, 0),
|
||||
HANDLER NUMBER(10, 0),
|
||||
HASH NUMBER(10, 0),
|
||||
HELP NUMBER(10, 0),
|
||||
HISTOGRAM NUMBER(10, 0),
|
||||
HISTORY NUMBER(10, 0),
|
||||
HOST NUMBER(10, 0),
|
||||
HOSTS NUMBER(10, 0),
|
||||
HOUR NUMBER(10, 0),
|
||||
IDENTIFIED NUMBER(10, 0),
|
||||
IGNORE_SERVER_IDS NUMBER(10, 0),
|
||||
IMPORT NUMBER(10, 0),
|
||||
INACTIVE NUMBER(10, 0),
|
||||
INDEXES NUMBER(10, 0),
|
||||
INITIAL_SIZE NUMBER(10, 0),
|
||||
INSERT_METHOD NUMBER(10, 0),
|
||||
INSTALL NUMBER(10, 0),
|
||||
INSTANCE NUMBER(10, 0),
|
||||
INVISIBLE NUMBER(10, 0),
|
||||
INVOKER NUMBER(10, 0),
|
||||
IO NUMBER(10, 0),
|
||||
IO_THREAD NUMBER(10, 0),
|
||||
IPC NUMBER(10, 0),
|
||||
ISOLATION NUMBER(10, 0),
|
||||
ISSUER NUMBER(10, 0),
|
||||
JSON NUMBER(10, 0),
|
||||
JSON_VALUE NUMBER(10, 0),
|
||||
KEY_BLOCK_SIZE NUMBER(10, 0),
|
||||
LANGUAGE NUMBER(10, 0),
|
||||
LAST NUMBER(10, 0),
|
||||
LEAVES NUMBER(10, 0),
|
||||
LESS NUMBER(10, 0),
|
||||
LEVEL NUMBER(10, 0),
|
||||
LINESTRING NUMBER(10, 0),
|
||||
LIST NUMBER(10, 0),
|
||||
LOCAL NUMBER(10, 0),
|
||||
LOCKED NUMBER(10, 0),
|
||||
LOCKS NUMBER(10, 0),
|
||||
LOGFILE NUMBER(10, 0),
|
||||
LOGS NUMBER(10, 0),
|
||||
MASTER NUMBER(10, 0),
|
||||
MASTER_AUTO_POSITION NUMBER(10, 0),
|
||||
MASTER_COMPRESSION_ALGORITHMS NUMBER(10, 0),
|
||||
MASTER_CONNECT_RETRY NUMBER(10, 0),
|
||||
MASTER_DELAY NUMBER(10, 0),
|
||||
MASTER_HEARTBEAT_PERIOD NUMBER(10, 0),
|
||||
MASTER_HOST NUMBER(10, 0),
|
||||
MASTER_LOG_FILE NUMBER(10, 0),
|
||||
MASTER_LOG_POS NUMBER(10, 0),
|
||||
MASTER_PASSWORD NUMBER(10, 0),
|
||||
MASTER_PORT NUMBER(10, 0),
|
||||
MASTER_PUBLIC_KEY_PATH NUMBER(10, 0),
|
||||
MASTER_RETRY_COUNT NUMBER(10, 0),
|
||||
MASTER_SSL NUMBER(10, 0),
|
||||
MASTER_SSL_CA NUMBER(10, 0),
|
||||
MASTER_SSL_CAPATH NUMBER(10, 0),
|
||||
MASTER_SSL_CERT NUMBER(10, 0),
|
||||
MASTER_SSL_CIPHER NUMBER(10, 0),
|
||||
MASTER_SSL_CRL NUMBER(10, 0),
|
||||
MASTER_SSL_CRLPATH NUMBER(10, 0),
|
||||
MASTER_SSL_KEY NUMBER(10, 0),
|
||||
MASTER_TLS_CIPHERSUITES NUMBER(10, 0),
|
||||
MASTER_TLS_VERSION NUMBER(10, 0),
|
||||
MASTER_USER NUMBER(10, 0),
|
||||
MASTER_ZSTD_COMPRESSION_LEVEL NUMBER(10, 0),
|
||||
MAX_CONNECTIONS_PER_HOUR NUMBER(10, 0),
|
||||
MAX_QUERIES_PER_HOUR NUMBER(10, 0),
|
||||
MAX_ROWS NUMBER(10, 0),
|
||||
MAX_SIZE NUMBER(10, 0),
|
||||
MAX_UPDATES_PER_HOUR NUMBER(10, 0),
|
||||
MAX_USER_CONNECTIONS NUMBER(10, 0),
|
||||
MEDIUM NUMBER(10, 0),
|
||||
MEMBER NUMBER(10, 0),
|
||||
MEMORY NUMBER(10, 0),
|
||||
MERGE NUMBER(10, 0),
|
||||
MESSAGE_TEXT NUMBER(10, 0),
|
||||
MICROSECOND NUMBER(10, 0),
|
||||
MIGRATE NUMBER(10, 0),
|
||||
MINUTE NUMBER(10, 0),
|
||||
MIN_ROWS NUMBER(10, 0),
|
||||
MODE NUMBER(10, 0),
|
||||
MODIFY NUMBER(10, 0),
|
||||
MONTH NUMBER(10, 0),
|
||||
MULTILINESTRING NUMBER(10, 0),
|
||||
MULTIPOINT NUMBER(10, 0),
|
||||
MULTIPOLYGON NUMBER(10, 0),
|
||||
MUTEX NUMBER(10, 0),
|
||||
MYSQL_ERRNO NUMBER(10, 0),
|
||||
NAME NUMBER(10, 0),
|
||||
NAMES NUMBER(10, 0),
|
||||
NATIONAL NUMBER(10, 0),
|
||||
NCHAR NUMBER(10, 0),
|
||||
NDB NUMBER(10, 0),
|
||||
NDBCLUSTER NUMBER(10, 0),
|
||||
NESTED NUMBER(10, 0),
|
||||
NETWORK_NAMESPACE NUMBER(10, 0),
|
||||
NEVER NUMBER(10, 0),
|
||||
NEW NUMBER(10, 0),
|
||||
NEXT NUMBER(10, 0),
|
||||
NO NUMBER(10, 0),
|
||||
NODEGROUP NUMBER(10, 0),
|
||||
NONE NUMBER(10, 0),
|
||||
NOWAIT NUMBER(10, 0),
|
||||
NO_WAIT NUMBER(10, 0),
|
||||
NULLS NUMBER(10, 0),
|
||||
NUMBER NUMBER(10, 0),
|
||||
NVARCHAR NUMBER(10, 0)
|
||||
)
|
||||
PCTFREE 10
|
||||
PCTUSED 40
|
||||
INITRANS 1
|
||||
MAXTRANS 255
|
||||
NOCOMPRESS
|
||||
LOGGING
|
||||
TABLESPACE USERS
|
||||
Reference in New Issue
Block a user