[#3162] NullPointerException when referencing window name that was not declared
This commit is contained in:
parent
f7006c7bb1
commit
9d230fbde8
@ -367,11 +367,19 @@ class Function<T> extends AbstractField<T> implements
|
||||
Map<Object, Object> map = (Map<Object, Object>) ctx.data(DATA_LOCALLY_SCOPED_DATA_MAP);
|
||||
QueryPartList<WindowDefinition> windows = (QueryPartList<WindowDefinition>) map.get(DATA_WINDOW_DEFINITIONS);
|
||||
|
||||
for (WindowDefinition window : windows) {
|
||||
if (((WindowDefinitionImpl) window).getName().equals(windowName)) {
|
||||
return window;
|
||||
if (windows != null) {
|
||||
for (WindowDefinition window : windows) {
|
||||
if (((WindowDefinitionImpl) window).getName().equals(windowName)) {
|
||||
return window;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// [#3162] If a window specification is missing from the query's WINDOW clause,
|
||||
// jOOQ should just render the window name regardless of the SQL dialect
|
||||
else {
|
||||
return windowName;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
66
jOOQ/src/test/java/org/jooq/test/ExceptionsTest.java
Normal file
66
jOOQ/src/test/java/org/jooq/test/ExceptionsTest.java
Normal file
@ -0,0 +1,66 @@
|
||||
/**
|
||||
* Copyright (c) 2009-2014, Data Geekery GmbH (http://www.datageekery.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
* This work is dual-licensed
|
||||
* - under the Apache Software License 2.0 (the "ASL")
|
||||
* - under the jOOQ License and Maintenance Agreement (the "jOOQ License")
|
||||
* =============================================================================
|
||||
* You may choose which license applies to you:
|
||||
*
|
||||
* - If you're using this work with Open Source databases, you may choose
|
||||
* either ASL or jOOQ License.
|
||||
* - If you're using this work with at least one commercial database, you must
|
||||
* choose jOOQ License
|
||||
*
|
||||
* For more information, please visit http://www.jooq.org/licenses
|
||||
*
|
||||
* Apache Software License 2.0:
|
||||
* -----------------------------------------------------------------------------
|
||||
* 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
|
||||
*
|
||||
* http://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.
|
||||
*
|
||||
* jOOQ License and Maintenance Agreement:
|
||||
* -----------------------------------------------------------------------------
|
||||
* Data Geekery grants the Customer the non-exclusive, timely limited and
|
||||
* non-transferable license to install and use the Software under the terms of
|
||||
* the jOOQ License and Maintenance Agreement.
|
||||
*
|
||||
* This library is distributed with a LIMITED WARRANTY. See the jOOQ License
|
||||
* and Maintenance Agreement for more details: http://www.jooq.org/licensing
|
||||
*/
|
||||
package org.jooq.test;
|
||||
|
||||
import static org.jooq.impl.DSL.count;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
/**
|
||||
* Common tests related to jOOQ's exception handling
|
||||
*
|
||||
* @author Lukas Eder
|
||||
*/
|
||||
public class ExceptionsTest extends AbstractTest {
|
||||
|
||||
@Test
|
||||
public void testMissingWindowSpecification() {
|
||||
|
||||
// [#3162] If a window specification is missing from the query's WINDOW clause,
|
||||
// jOOQ should just render the window name regardless of the SQL dialect
|
||||
assertTrue(
|
||||
create.select(count().over("window"))
|
||||
.getSQL()
|
||||
.contains("over (`window`)")
|
||||
);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user