public static SQLDataType transformOracleToPostgresql(SQLDataType x) { final String name = x.getName(); final long nameHash = x.nameHashCode64(); List<SQLExpr> argumentns = x.getArguments(); dataType = x.clone(); dataType.setName(SQLDataType.Constants.DECIMAL); scale = ((SQLIntegerExpr) argumentns.get(1)).getNumber().intValue(); if (precision < scale) { ((SQLIntegerExpr) dataType.getArguments().get(1)).setNumber(precision); dataType.setName(SQLDataType.Constants.CHAR); } else { dataType = new SQLCharacterDataType(SQLDataType.Constants.TEXT); dataType.setName(SQLDataType.Constants.NCHAR); } else if (nameHash == FnvHash.Constants.VARCHAR || nameHash == FnvHash.Constants.VARCHAR2) { dataType = new SQLDataTypeImpl(SQLDataType.Constants.TIMESTAMP, 0); } else if (nameHash == FnvHash.Constants.TIMESTAMP) { x.setName(SQLDataType.Constants.TIMESTAMP); if (x.isWithLocalTimeZone()) { x.setWithLocalTimeZone(false); x.setWithTimeZone(null); dataType.setParent(x.getParent());
protected SQLDataType parseDataTypeRest(SQLDataType dataType) { super.parseDataTypeRest(dataType); if (identifierEquals("UNSIGNED")) { lexer.nextToken(); dataType.getAttributes().put("UNSIGNED", true); } if (identifierEquals("ZEROFILL")) { lexer.nextToken(); dataType.getAttributes().put("ZEROFILL", true); } return dataType; }
public boolean visit(SQLDataType x) { String dataTypeName = x.getName(); print0(ucase ? dataTypeName.toUpperCase() : dataTypeName.toLowerCase()); if (x.getArguments().size() > 0) { print('('); printAndAccept(x.getArguments(), ", "); print(')'); } return false; }
protected void printDataType(SQLDataType x) { boolean parameterized = this.parameterized; this.parameterized = false; print0(x.getName()); if (x.getArguments().size() > 0) { print('('); printAndAccept(x.getArguments(), ", "); print(')'); } Boolean withTimeZone = x.getWithTimeZone(); if (withTimeZone != null) { if (withTimeZone) { if (x.isWithLocalTimeZone()) { print0(ucase ? " WITH LOCAL TIME ZONE" : " with local time zone"); } else { print0(ucase ? " WITH TIME ZONE" : " with time zone"); } } else { print0(ucase ? " WITHOUT TIME ZONE" : " without time zone"); } } this.parameterized = parameterized; }
public static SQLDataType transformOracleToAliyunAds(SQLDataType x) { final String dataTypeName = x.getName().toLowerCase(); SQLDataType dataType; || dataTypeName.equals("numeric")) { int scale = 0; if (x.getArguments().size() > 1) { scale = ((SQLIntegerExpr) x.getArguments().get(1)).getNumber().intValue(); dataType.setParent(x.getParent());
public static SQLDataType transformOracleToMySql(SQLDataType x) { final String name = x.getName(); final long nameHash = x.nameHashCode64(); List<SQLExpr> argumentns = x.getArguments(); || nameHash == FnvHash.Constants.DECIMAL) { dataType = x.clone(); dataType.setName("decimal"); scale = ((SQLIntegerExpr) argumentns.get(1)).getNumber().intValue(); if (precision < scale) { ((SQLIntegerExpr) dataType.getArguments().get(1)).setNumber(precision); dataType.setParent(x.getParent());
public String parse(boolean isReturn) throws SqlParseException { List<String> result = new ArrayList<>(); String dataType = castExpr.getDataType().getName().toUpperCase(); String fileName = String.format("doc['%s'].value",Util.expr2Object(castExpr.getExpr()));
@Override public boolean visit(SQLParameter x) { SQLName name = x.getName(); if (x.getDataType().getName().equalsIgnoreCase("CURSOR")) { print0(ucase ? "CURSOR " : "cursor "); x.getName().accept(this); String dataTypeName = dataType.getName(); boolean printType = (dataTypeName.startsWith("TABLE OF") && x.getDefaultValue() == null) || dataTypeName.equalsIgnoreCase("REF CURSOR") dataType.accept(this);
protected SQLDataType parseDataTypeRest(SQLDataType dataType) { if (lexer.token == Token.LPAREN) { lexer.nextToken(); exprList(dataType.getArguments(), dataType); accept(Token.RPAREN); } if (lexer.identifierEquals(FnvHash.Constants.PRECISION) && dataType.nameHashCode64() == FnvHash.Constants.DOUBLE) { lexer.nextToken(); dataType.setName("DOUBLE PRECISION"); } if (FnvHash.Constants.TIMESTAMP == dataType.nameHashCode64()) { if (lexer.identifierEquals(FnvHash.Constants.WITHOUT)) { lexer.nextToken(); acceptIdentifier("TIME"); acceptIdentifier("ZONE"); dataType.setWithTimeZone(false); } else if (lexer.token == Token.WITH) { lexer.nextToken(); acceptIdentifier("TIME"); acceptIdentifier("ZONE"); dataType.setWithTimeZone(true); } } return dataType; }
@Override public boolean visit(PGTypeCastExpr x) { SQLExpr expr = x.getExpr(); SQLDataType dataType = x.getDataType(); if (dataType.nameHashCode64() == FnvHash.Constants.VARBIT) { dataType.accept(this); print(' '); printExpr(expr); return false; } if (expr != null) { if (expr instanceof SQLBinaryOpExpr) { print('('); expr.accept(this); print(')'); } else if (expr instanceof PGTypeCastExpr && dataType.getArguments().size() == 0) { dataType.accept(this); print('('); visit((PGTypeCastExpr) expr); print(')'); return false; } else { expr.accept(this); } } print0("::"); dataType.accept(this); return false; }
dataType.setName("CURSOR"); dataType.setDbType(dbType); } else if (lexer.token() == Token.TABLE) { lexer.nextToken(); dataType.setDbType(dbType); } else if (lexer.identifierEquals("VARRAY")) { lexer.nextToken(); String typeName = "VARRAY(" + len + ") OF NUMBER"; dataType = new SQLDataTypeImpl(typeName); dataType.setDbType(dbType); } else if (lexer.identifierEquals("VARCHAR2")) { lexer.nextToken(); String typeName = "VARRAY(" + len + ") OF VARCHAR2"; dataType = new SQLDataTypeImpl(typeName); dataType.setDbType(dbType); this.exprParser.exprList(dataType.getArguments(), dataType); accept(Token.RPAREN);
if (parameters.size() == 0 && x.getParent() instanceof SQLColumnDefinition) { SQLDataType dataType = ((SQLColumnDefinition) x.getParent()).getDataType(); if (dataType.nameHashCode64() == FnvHash.Constants.TIMESTAMP && dataType.getArguments().size() == 1) { x.addParameter(dataType.getArguments().get(0).clone()); } else { x.addParameter(new SQLIntegerExpr(0));
public static SQLDataType transformOracleToMySql(SQLDataType x) { final String name = x.getName(); final long nameHash = x.nameHashCode64(); List<SQLExpr> argumentns = x.getArguments(); || nameHash == FnvHash.Constants.DECIMAL) { dataType = x.clone(); dataType.setName("decimal"); scale = ((SQLIntegerExpr) argumentns.get(1)).getNumber().intValue(); if (precision < scale) { ((SQLIntegerExpr) dataType.getArguments().get(1)).setNumber(precision); dataType.setParent(x.getParent());
public boolean visit(SQLColumnDefinition x) { String tableName = null; { SQLObject parent = x.getParent(); if (parent instanceof SQLCreateTableStatement) { tableName = ((SQLCreateTableStatement) parent).getName().toString(); } } if (tableName == null) { return true; } String columnName = x.getName().toString(); Column column = addColumn(tableName, columnName); if (x.getDataType() != null) { column.setDataType(x.getDataType().getName()); } for (SQLColumnConstraint item : x.getConstraints()) { if (item instanceof SQLPrimaryKey) { column.setPrimaryKey(true); } else if (item instanceof SQLUnique) { column.setUnique(true); } } return false; }
String dataType = column.getDataType().getName(); if (column.getDataType().getArguments().size() > 0) { dataType += "("; for (int i = 0; i < column.getDataType().getArguments().size(); i++) { if (i != 0) { dataType += ","; SQLExpr arg = column.getDataType().getArguments().get(i); dataType += arg.toString();
protected void printDataType(SQLDataType x) { boolean parameterized = this.parameterized; this.parameterized = false; print0(x.getName()); if (x.getArguments().size() > 0) { print('('); printAndAccept(x.getArguments(), ", "); print(')'); } Boolean withTimeZone = x.getWithTimeZone(); if (withTimeZone != null) { if (withTimeZone) { if (x.isWithLocalTimeZone()) { print0(ucase ? " WITH LOCAL TIME ZONE" : " with local time zone"); } else { print0(ucase ? " WITH TIME ZONE" : " with time zone"); } } else { print0(ucase ? " WITHOUT TIME ZONE" : " without time zone"); } } this.parameterized = parameterized; }
public static SQLDataType transformOracleToAliyunAds(SQLDataType x) { final String dataTypeName = x.getName().toLowerCase(); SQLDataType dataType; || dataTypeName.equals("numeric")) { int scale = 0; if (x.getArguments().size() > 1) { scale = ((SQLIntegerExpr) x.getArguments().get(1)).getNumber().intValue(); dataType.setParent(x.getParent());
@Override public boolean visit(SQLParameter x) { SQLName name = x.getName(); if (x.getDataType().getName().equalsIgnoreCase("CURSOR")) { print0(ucase ? "CURSOR " : "cursor "); x.getName().accept(this); String dataTypeName = dataType.getName(); boolean printType = (dataTypeName.startsWith("TABLE OF") && x.getDefaultValue() == null) || dataTypeName.equalsIgnoreCase("REF CURSOR") dataType.accept(this);