Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -102,33 +102,18 @@ public AltibaseDialect(DatabaseVersion version) {

@Override
protected String columnType(int sqlTypeCode) {
switch ( sqlTypeCode ) {
case BOOLEAN:
return "char(1)";
case FLOAT:
case DOUBLE:
return "double";
case TINYINT:
return "smallint";
case TIME:
case TIMESTAMP:
case TIME_WITH_TIMEZONE:
case TIMESTAMP_WITH_TIMEZONE:
return "date";
case BINARY:
return "byte($l)";
case VARBINARY:
return "varbyte($l)";
case LONGVARBINARY:
return "blob";
case BIT:
return "varbit($l)";
case LONGVARCHAR:
case NCLOB:
return "clob";
default:
return super.columnType( sqlTypeCode );
}
return switch ( sqlTypeCode ) {
case BOOLEAN -> "char(1)";
case FLOAT, DOUBLE -> "double";
case TINYINT -> "smallint";
case TIME, TIMESTAMP, TIME_WITH_TIMEZONE, TIMESTAMP_WITH_TIMEZONE -> "date";
case BINARY -> "byte($l)";
case VARBINARY -> "varbyte($l)";
case LONGVARBINARY -> "blob";
case BIT -> "varbit($l)";
case LONGVARCHAR, NCLOB -> "clob";
default -> super.columnType( sqlTypeCode );
};
}

@Override
Expand Down Expand Up @@ -165,22 +150,11 @@ public int getDefaultStatementBatchSize() {

@Override
public String trimPattern(TrimSpec specification, boolean isWhitespace) {
switch ( specification ) {
case BOTH:
return isWhitespace
? "trim(?1)"
: "trim(?1,?2)";
case LEADING:
return isWhitespace
? "ltrim(?1)"
: "ltrim(?1,?2)";
case TRAILING:
return isWhitespace
? "rtrim(?1)"
: "rtrim(?1,?2)";
}

return super.trimPattern( specification, isWhitespace );
return switch ( specification ) {
case BOTH -> isWhitespace ? "trim(?1)" : "trim(?1,?2)";
case LEADING -> isWhitespace ? "ltrim(?1)" : "ltrim(?1,?2)";
case TRAILING -> isWhitespace ? "rtrim(?1)": "rtrim(?1,?2)";
};
}

@Override
Expand Down Expand Up @@ -323,51 +297,36 @@ public long getFractionalSecondPrecisionInNanos() {
*/
@Override
public String extractPattern(TemporalUnit unit) {
switch (unit) {
case DAY_OF_WEEK:
return "extract(?2, 'DAYOFWEEK')";
case DAY_OF_MONTH:
return "extract(?2, 'DAY')";
case DAY_OF_YEAR:
return "extract(?2,'DAYOFYEAR')";
case WEEK:
return "to_number(to_char(?2,'IW'))"; //the ISO week number
case WEEK_OF_YEAR:
return "extract(?2, 'WEEK')";
case EPOCH:
return timestampdiffPattern( TemporalUnit.SECOND, TemporalType.TIMESTAMP, TemporalType.TIMESTAMP )
return switch (unit) {
case DAY_OF_WEEK -> "extract(?2, 'DAYOFWEEK')";
case DAY_OF_MONTH -> "extract(?2, 'DAY')";
case DAY_OF_YEAR -> "extract(?2,'DAYOFYEAR')";
case WEEK -> "to_number(to_char(?2,'IW'))"; //the ISO week number
case WEEK_OF_YEAR -> "extract(?2, 'WEEK')";
case EPOCH -> timestampdiffPattern( TemporalUnit.SECOND, TemporalType.TIMESTAMP, TemporalType.TIMESTAMP )
.replace( "?2", "TO_DATE('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')" )
.replace( "?3", "?2" );
case QUARTER:
return "extract(?2, 'QUARTER')";
default:
return super.extractPattern( unit );
}
case QUARTER -> "extract(?2, 'QUARTER')";
default -> super.extractPattern( unit );
};
}

@Override
public String timestampaddPattern(TemporalUnit unit, TemporalType temporalType, IntervalType intervalType) {
switch (unit) {
case NANOSECOND:
return "timestampadd(MICROSECOND,(?2)/1e3,?3)";
case NATIVE:
return "timestampadd(SECOND, ?2, ?3)";
default:
return "timestampadd(?1, ?2, ?3)";
}
return switch (unit) {
case NANOSECOND -> "timestampadd(MICROSECOND,(?2)/1e3,?3)";
case NATIVE -> "timestampadd(SECOND, ?2, ?3)";
default -> "timestampadd(?1, ?2, ?3)";
};
}

@Override
public String timestampdiffPattern(TemporalUnit unit, TemporalType fromTemporalType, TemporalType toTemporalType) {
switch (unit) {
case SECOND:
case NATIVE:
return "datediff(?2, ?3, 'SECOND')";
case NANOSECOND:
return "datediff(?2, ?3, 'MICROSECOND')*1e3";
default:
return "datediff(?2, ?3, '?1')";
}
return switch (unit) {
case SECOND, NATIVE -> "datediff(?2, ?3, 'SECOND')";
case NANOSECOND -> "datediff(?2, ?3, 'MICROSECOND')*1e3";
default -> "datediff(?2, ?3, '?1')";
};
}

@Override
Expand Down Expand Up @@ -678,12 +637,12 @@ protected boolean supportsPredicateAsExpression() {

@Override
public String translateExtractField(TemporalUnit unit) {
switch ( unit ) {
case DAY_OF_MONTH: return "day";
case DAY_OF_YEAR: return "dayofyear";
case DAY_OF_WEEK: return "dayofweek";
default: return super.translateExtractField( unit );
}
return switch ( unit ) {
case DAY_OF_MONTH -> "day";
case DAY_OF_YEAR -> "dayofyear";
case DAY_OF_WEEK -> "dayofweek";
default -> super.translateExtractField( unit );
};
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,22 +74,16 @@ public CUBRIDDialect() {

@Override
protected String columnType(int sqlTypeCode) {
switch ( sqlTypeCode ) {
case BOOLEAN:
return "bit";
case TINYINT:
return "smallint";
return switch ( sqlTypeCode ) {
case BOOLEAN -> "bit";
case TINYINT -> "smallint";
//'timestamp' has a very limited range
//'datetime' does not support explicit precision
//(always 3, millisecond precision)
case TIMESTAMP:
return "datetime";
case TIME_WITH_TIMEZONE:
case TIMESTAMP_WITH_TIMEZONE:
return "datetimetz";
default:
return super.columnType( sqlTypeCode );
}
case TIMESTAMP -> "datetime";
case TIME_WITH_TIMEZONE, TIMESTAMP_WITH_TIMEZONE -> "datetimetz";
default -> super.columnType( sqlTypeCode );
};
}

@Override
Expand Down Expand Up @@ -427,20 +421,14 @@ public long getFractionalSecondPrecisionInNanos() {
*/
@Override
public String extractPattern(TemporalUnit unit) {
switch (unit) {
case SECOND:
return "(second(?2)+extract(millisecond from ?2)/1e3)";
case DAY_OF_WEEK:
return "dayofweek(?2)";
case DAY_OF_MONTH:
return "dayofmonth(?2)";
case DAY_OF_YEAR:
return "dayofyear(?2)";
case WEEK:
return "week(?2,3)"; //mode 3 is the ISO week
default:
return "?1(?2)";
}
return switch (unit) {
case SECOND -> "(second(?2)+extract(millisecond from ?2)/1e3)";
case DAY_OF_WEEK -> "dayofweek(?2)";
case DAY_OF_MONTH ->"dayofmonth(?2)";
case DAY_OF_YEAR -> "dayofyear(?2)";
case WEEK -> "week(?2,3)"; //mode 3 is the ISO week
default -> "?1(?2)";
};
}

@Override
Expand All @@ -450,14 +438,11 @@ public TimeZoneSupport getTimeZoneSupport() {

@Override
public String timestampaddPattern(TemporalUnit unit, TemporalType temporalType, IntervalType intervalType) {
switch (unit) {
case NANOSECOND:
return "adddate(?3,interval (?2)/1e6 millisecond)";
case NATIVE:
return "adddate(?3,interval ?2 millisecond)";
default:
return "adddate(?3,interval ?2 ?1)";
}
return switch (unit) {
case NANOSECOND -> "adddate(?3,interval (?2)/1e6 millisecond)";
case NATIVE -> "adddate(?3,interval ?2 millisecond)";
default -> "adddate(?3,interval ?2 ?1)";
};
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,20 +83,14 @@ public CacheDialect(DialectResolutionInfo info) {
protected String columnType(int sqlTypeCode) {
// Note: For object <-> SQL datatype mappings see:
// Configuration Manager > Advanced > SQL > System DDL Datatype Mappings
switch ( sqlTypeCode ) {
case BOOLEAN:
return "bit";
return switch ( sqlTypeCode ) {
case BOOLEAN -> "bit";
//no explicit precision
case TIMESTAMP:
case TIMESTAMP_WITH_TIMEZONE:
return "timestamp";
case BLOB:
return "image";
case CLOB:
return "text";
default:
return super.columnType( sqlTypeCode );
}
case TIMESTAMP, TIMESTAMP_WITH_TIMEZONE -> "timestamp";
case BLOB -> "image";
case CLOB -> "text";
default -> super.columnType( sqlTypeCode );
};
}

@Override
Expand Down Expand Up @@ -228,24 +222,18 @@ public String extractPattern(TemporalUnit unit) {

@Override
public String timestampaddPattern(TemporalUnit unit, TemporalType temporalType, IntervalType intervalType) {
switch (unit) {
case NANOSECOND:
case NATIVE:
return "dateadd(millisecond,(?2)/1e6,?3)";
default:
return "dateadd(?1,?2,?3)";
}
return switch (unit) {
case NANOSECOND, NATIVE -> "dateadd(millisecond,(?2)/1e6,?3)";
default -> "dateadd(?1,?2,?3)";
};
}

@Override
public String timestampdiffPattern(TemporalUnit unit, TemporalType fromTemporalType, TemporalType toTemporalType) {
switch (unit) {
case NANOSECOND:
case NATIVE:
return "datediff(millisecond,?2,?3)*1e6";
default:
return "datediff(?1,?2,?3)";
}
return switch (unit) {
case NANOSECOND, NATIVE -> "datediff(millisecond,?2,?3)*1e6";
default -> "datediff(?1,?2,?3)";
};
}

// DDL support ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Expand Down
Loading