Skip to content

Commit

Permalink
[#629] Add support for the Teradata database (WIP)
Browse files Browse the repository at this point in the history
  • Loading branch information
lukaseder committed Apr 19, 2018
1 parent 1ad67a1 commit 3b53630
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 32 deletions.
1 change: 1 addition & 0 deletions jOOQ/src/main/java/org/jooq/impl/Euler.java
Expand Up @@ -76,6 +76,7 @@ final Field<BigDecimal> getFunction0(Configuration configuration) {







case CUBRID: case CUBRID:
case DERBY: case DERBY:
case FIREBIRD: case FIREBIRD:
Expand Down
1 change: 1 addition & 0 deletions jOOQ/src/main/java/org/jooq/impl/FieldCondition.java
Expand Up @@ -87,6 +87,7 @@ private final QueryPartInternal delegate(Configuration configuration) {







return (QueryPartInternal) condition("{0} = {1}", field, inline(true)); return (QueryPartInternal) condition("{0} = {1}", field, inline(true));




Expand Down
1 change: 1 addition & 0 deletions jOOQ/src/main/java/org/jooq/impl/Limit.java
Expand Up @@ -282,6 +282,7 @@ public final void accept(Context<?> ctx) {











// [#4785] OFFSET cannot be without LIMIT // [#4785] OFFSET cannot be without LIMIT
Expand Down
1 change: 1 addition & 0 deletions jOOQ/src/main/java/org/jooq/impl/Pi.java
Expand Up @@ -73,6 +73,7 @@ final Field<BigDecimal> getFunction0(Configuration configuration) {







case SQLITE: case SQLITE:
return inline(Math.PI, BigDecimal.class); return inline(Math.PI, BigDecimal.class);


Expand Down
15 changes: 7 additions & 8 deletions jOOQ/src/main/java/org/jooq/impl/Replace.java
Expand Up @@ -81,25 +81,24 @@ final Field<String> getFunction0(Configuration configuration) {













case FIREBIRD: case FIREBIRD:
case HSQLDB: case HSQLDB:
case MARIADB: case MARIADB:
case MYSQL: case MYSQL:
case POSTGRES: case POSTGRES:
case SQLITE: { case SQLITE:
if (args.length == 2) { if (args.length == 2)
return function("replace", VARCHAR, args[0], args[1], val("")); return function("replace", VARCHAR, args[0], args[1], val(""));
} else
else {
return function("replace", VARCHAR, args); return function("replace", VARCHAR, args);
}
}


default: { default:
return function("replace", VARCHAR, args); return function("replace", VARCHAR, args);
}
} }
} }
} }
47 changes: 23 additions & 24 deletions jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java
Expand Up @@ -210,6 +210,7 @@ final class SelectQueryImpl<R extends Record> extends AbstractResultQuery<R> imp







private final WithImpl with; private final WithImpl with;
private final SelectFieldList<SelectFieldOrAsterisk> select; private final SelectFieldList<SelectFieldOrAsterisk> select;
private Table<?> into; private Table<?> into;
Expand Down Expand Up @@ -607,6 +608,7 @@ public final void accept(Context<?> context) {











case CUBRID: case CUBRID:
Expand Down Expand Up @@ -903,15 +905,14 @@ public void accept(Context<?> c) {
.visit(getLimit().getLowerRownum()); .visit(getLimit().getLowerRownum());


if (!getLimit().limitZero()) if (!getLimit().limitZero())
ctx.formatSeparator() ctx.formatSeparator()
.visit(K_AND).sql(' ') .visit(K_AND).sql(' ')
.visit(name("rn")) .visit(name("rn"))
.sql(" <= ") .sql(" <= ")
.visit(getLimit().getUpperRownum()); .visit(getLimit().getUpperRownum());


// [#5068] Don't rely on nested query's ordering. In most cases, the // [#5068] Don't rely on nested query's ordering in case an operation
// ordering is stable, but in some cases (DISTINCT + JOIN) it is // like DISTINCT or JOIN produces hashing.
// not.
if (!ctx.subquery()) if (!ctx.subquery())
ctx.formatSeparator() ctx.formatSeparator()
.visit(K_ORDER_BY) .visit(K_ORDER_BY)
Expand Down Expand Up @@ -1440,14 +1441,14 @@ else if (EMULATE_EMPTY_GROUP_BY_OTHER.contains(family))
} }


private final void toSQLOrderBy( private final void toSQLOrderBy(
Context<?> context, Context<?> ctx,
Field<?>[] originalFields, Field<?>[] alternativeFields, Field<?>[] originalFields, Field<?>[] alternativeFields,
boolean wrapQueryExpressionInDerivedTable, boolean wrapQueryExpressionBodyInDerivedTable, boolean wrapQueryExpressionInDerivedTable, boolean wrapQueryExpressionBodyInDerivedTable,
SortFieldList actualOrderBy, SortFieldList actualOrderBy,
Limit actualLimit Limit actualLimit
) { ) {


context.start(SELECT_ORDER_BY); ctx.start(SELECT_ORDER_BY);


// [#6197] When emulating WITH TIES using RANK() in a subquery, we must avoid rendering the // [#6197] When emulating WITH TIES using RANK() in a subquery, we must avoid rendering the
// subquery's ORDER BY clause // subquery's ORDER BY clause
Expand All @@ -1461,14 +1462,14 @@ private final void toSQLOrderBy(


) { ) {
if (!actualOrderBy.isEmpty()) { if (!actualOrderBy.isEmpty()) {
context.formatSeparator() ctx.formatSeparator()
.visit(K_ORDER); .visit(K_ORDER);


if (orderBySiblings) if (orderBySiblings)
context.sql(' ').visit(K_SIBLINGS); ctx.sql(' ').visit(K_SIBLINGS);


context.sql(' ').visit(K_BY) ctx.sql(' ').visit(K_BY)
.sql(' '); .sql(' ');






Expand All @@ -1490,7 +1491,7 @@ private final void toSQLOrderBy(




{ {
context.visit(actualOrderBy); ctx.visit(actualOrderBy);
} }
} }


Expand All @@ -1507,15 +1508,15 @@ private final void toSQLOrderBy(


} }


context.end(SELECT_ORDER_BY); ctx.end(SELECT_ORDER_BY);


if (wrapQueryExpressionInDerivedTable) if (wrapQueryExpressionInDerivedTable)
context.formatIndentEnd() ctx.formatIndentEnd()
.formatNewLine() .formatNewLine()
.sql(") x"); .sql(") x");


if (context.data().containsKey(DATA_RENDER_TRAILING_LIMIT_IF_APPLICABLE) && actualLimit.isApplicable()) if (ctx.data().containsKey(DATA_RENDER_TRAILING_LIMIT_IF_APPLICABLE) && actualLimit.isApplicable())
context.visit(actualLimit); ctx.visit(actualLimit);
} }


private final boolean wrapQueryExpressionBodyInDerivedTable(Context<?> ctx) { private final boolean wrapQueryExpressionBodyInDerivedTable(Context<?> ctx) {
Expand Down Expand Up @@ -1577,8 +1578,6 @@ private final boolean wrapQueryExpressionBodyInDerivedTable(Context<?> ctx) {














Expand Down

0 comments on commit 3b53630

Please sign in to comment.