Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[#5799] Add support for the SQL Standard WITH ORDINALITY clause
This includes: - [#14406] The AutoAlias feature isn't applied from within the JOIN tree, only from the TableList - Update AutoAlias to allow for auto-aliasing other tables than this - Add NoAutoAlias to prevent aliasing in derived column list emulations - Removed TableWithOrdinalityStep again, all Table types are supported - Implement emulations - Added an AbstractAutoAliasTable base implementation for AliasTable - [#14409] Refactor Values to implement AutoAlias - [#13971] Use DataType::array internally - [#14388] Fix data type of ArrayConcat expression
- Loading branch information
Showing
31 changed files
with
808 additions
and
301 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
119 changes: 119 additions & 0 deletions
119
jOOQ/src/main/java/org/jooq/impl/AbstractAutoAliasTable.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
/* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* https://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
* | ||
* Other licenses: | ||
* ----------------------------------------------------------------------------- | ||
* Commercial licenses for this work are available. These replace the above | ||
* ASL 2.0 and offer limited warranties, support, maintenance, and commercial | ||
* database integrations. | ||
* | ||
* For more information, please visit: https://www.jooq.org/legal/licensing | ||
* | ||
* | ||
* | ||
* | ||
* | ||
* | ||
* | ||
* | ||
* | ||
* | ||
* | ||
* | ||
* | ||
* | ||
* | ||
* | ||
*/ | ||
package org.jooq.impl; | ||
|
||
import org.jooq.Context; | ||
import org.jooq.Name; | ||
import org.jooq.Record; | ||
import org.jooq.Table; | ||
import org.jooq.TableOptions; | ||
|
||
/** | ||
* A base implementation for {@link AutoAlias} and {@link Table}. | ||
* | ||
* @author Lukas Eder | ||
*/ | ||
abstract class AbstractAutoAliasTable<R extends Record> | ||
extends | ||
AbstractTable<R> | ||
implements | ||
AutoAlias<Table<R>> | ||
{ | ||
|
||
final Name alias; | ||
final Name[] fieldAliases; | ||
|
||
AbstractAutoAliasTable(Name alias) { | ||
this(alias, null); | ||
} | ||
|
||
AbstractAutoAliasTable(Name alias, Name[] fieldAliases) { | ||
super(TableOptions.expression(), alias != null ? alias : DSL.name("t")); | ||
|
||
this.alias = alias; | ||
this.fieldAliases = fieldAliases; | ||
} | ||
|
||
abstract AbstractAutoAliasTable<R> construct(Name newAlias, Name[] newFieldAliases); | ||
|
||
// ------------------------------------------------------------------------- | ||
// XXX: Table API | ||
// ------------------------------------------------------------------------- | ||
|
||
@Override | ||
public final boolean declaresTables() { | ||
|
||
// Always true, because unnested tables are always aliased | ||
return true; | ||
} | ||
|
||
@Override | ||
public final Table<R> autoAlias(Context<?> ctx, Table<R> t) { | ||
|
||
// TODO [#5799] Possibly, add dialect specific behaviour? | ||
return t.as(alias, fieldAliases); | ||
} | ||
|
||
// ------------------------------------------------------------------------- | ||
// XXX: DSL API | ||
// ------------------------------------------------------------------------- | ||
|
||
@Override | ||
public final Table<R> as(Name as) { | ||
return new TableAlias<>(construct(as, null), as, fieldAliases); | ||
} | ||
|
||
@Override | ||
public final Table<R> as(Name as, Name... fields) { | ||
return new TableAlias<>(construct(as, fields), as, fields); | ||
} | ||
|
||
// ------------------------------------------------------------------------- | ||
// XXX: Query Object Model | ||
// ------------------------------------------------------------------------- | ||
|
||
@Override | ||
public final Table<R> $aliased() { | ||
return construct(alias, null); | ||
} | ||
|
||
@Override | ||
public final Name $alias() { | ||
return alias; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.