Minors.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/15873234 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/15873234 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/15873234 Branch: refs/heads/ignite-3716 Commit: 15873234dd68cb43fcda4f3de2e689484511ba26 Parents: 5e4dd65 Author: vozerov-gridgain <[email protected]> Authored: Tue Aug 23 16:32:15 2016 +0300 Committer: vozerov-gridgain <[email protected]> Committed: Tue Aug 23 16:32:15 2016 +0300 ---------------------------------------------------------------------- .../processors/odbc/OdbcRequestHandler.java | 4 +- .../odbc/escape/OdbcEscapeParseResult.java | 73 +++++ .../processors/odbc/escape/OdbcEscapeType.java | 26 ++ .../processors/odbc/escape/OdbcEscapeUtils.java | 265 +++++++++++++++++ .../processors/odbc/escape/OdbcParser.java | 291 ------------------- .../OdbcScalarFunctionEscapeSequenceTest.java | 36 +-- 6 files changed, 384 insertions(+), 311 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/15873234/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcRequestHandler.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcRequestHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcRequestHandler.java index dd47a8e..b37beda 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcRequestHandler.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcRequestHandler.java @@ -22,7 +22,7 @@ import org.apache.ignite.cache.query.QueryCursor; import org.apache.ignite.cache.query.SqlFieldsQuery; import org.apache.ignite.internal.GridKernalContext; import org.apache.ignite.internal.processors.cache.QueryCursorImpl; -import org.apache.ignite.internal.processors.odbc.escape.OdbcParser; +import org.apache.ignite.internal.processors.odbc.escape.OdbcEscapeUtils; import org.apache.ignite.internal.processors.query.GridQueryFieldMetadata; import org.apache.ignite.internal.processors.query.GridQueryTypeDescriptor; import org.apache.ignite.internal.util.GridSpinBusyLock; @@ -161,7 +161,7 @@ public class OdbcRequestHandler { long qryId = QRY_ID_GEN.getAndIncrement(); try { - String sql = OdbcParser.parse(req.sqlQuery()); + String sql = OdbcEscapeUtils.parse(req.sqlQuery()); SqlFieldsQuery qry = new SqlFieldsQuery(sql); http://git-wip-us.apache.org/repos/asf/ignite/blob/15873234/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/escape/OdbcEscapeParseResult.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/escape/OdbcEscapeParseResult.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/escape/OdbcEscapeParseResult.java new file mode 100644 index 0000000..cf05651 --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/escape/OdbcEscapeParseResult.java @@ -0,0 +1,73 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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. + */ + +package org.apache.ignite.internal.processors.odbc.escape; + +import org.apache.ignite.internal.util.typedef.internal.S; + +/** + * ODBC escape sequence parse result. + */ +public class OdbcEscapeParseResult { + /** Original start position. */ + private final int originalStart; + + /** Original length. */ + private final int originalLen; + + /** Resulting text. */ + private final String res; + + /** + * Constructor. + * + * @param originalStart Original start position. + * @param originalLen Original length. + * @param res Resulting text. + */ + public OdbcEscapeParseResult(int originalStart, int originalLen, String res) { + this.originalStart = originalStart; + this.originalLen = originalLen; + this.res = res; + } + + /** + * @return Original start position. + */ + public int originalStart() { + return originalStart; + } + + /** + * @return Original length. + */ + public int originalLength() { + return originalLen; + } + + /** + * @return Resulting text. + */ + public String result() { + return res; + } + + /** {@inheritDoc} */ + @Override public String toString() { + return S.toString(OdbcEscapeParseResult.class, this); + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/15873234/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/escape/OdbcEscapeType.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/escape/OdbcEscapeType.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/escape/OdbcEscapeType.java new file mode 100644 index 0000000..2df413f --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/escape/OdbcEscapeType.java @@ -0,0 +1,26 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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. + */ + +package org.apache.ignite.internal.processors.odbc.escape; + +/** + * ODBC escape sequence type. + */ +public enum OdbcEscapeType { + /** Scalar function. */ + FN +} http://git-wip-us.apache.org/repos/asf/ignite/blob/15873234/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/escape/OdbcEscapeUtils.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/escape/OdbcEscapeUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/escape/OdbcEscapeUtils.java new file mode 100644 index 0000000..b26b334 --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/escape/OdbcEscapeUtils.java @@ -0,0 +1,265 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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. + */ + +package org.apache.ignite.internal.processors.odbc.escape; + +import org.apache.ignite.IgniteException; + +import java.util.LinkedList; + +/** + * ODBC escape sequence parse. + */ +public class OdbcEscapeUtils { + /** + * Parse escape sequence. + * + * @param text Original text. + * @return Result. + */ + public static String parse(String text) { + if (text == null) + throw new IgniteException("Text cannot be null."); + + return parse0(text.trim(), 0, false).result(); + } + + /** + * Internal parse routine. + * + * @param text Text. + * @param startPos Start position. + * @param earlyExit When set to {@code true} we must return as soon as single expression is parsed. + * @return Parse result. + */ + private static OdbcEscapeParseResult parse0(String text, int startPos, boolean earlyExit) { + StringBuilder res = new StringBuilder(); + + int curPos = startPos; + + int plainPos = startPos; + int openPos = -1; + + LinkedList<OdbcEscapeParseResult> nested = null; + + while (curPos < text.length()) { + char curChar = text.charAt(curPos); + + if (curChar == '{') { + if (openPos == -1) { + // Top-level opening brace. Append previous portion and remember current position. + res.append(text, plainPos, curPos); + + openPos = curPos; + } + else { + // Nested opening brace -> perform recursion. + OdbcEscapeParseResult nestedRes = parse0(text, curPos, true); + + if (nested == null) + nested = new LinkedList<>(); + + nested.add(nestedRes); + + curPos += nestedRes.originalLength(); + + plainPos = curPos; + + continue; + } + } + else if (curChar == '}') { + if (openPos == -1) + // Close without open -> exception. + throw new IgniteException("Malformed escape sequence " + + "(closing curly brace without opening curly brace): " + text); + else { + String parseRes; + + if (nested == null) + // Found sequence without nesting, process it. + parseRes = parseExpression(text, openPos, curPos - openPos); + else { + // Special case to process nesting. + String res0 = appendNested(text, openPos, curPos + 1, nested); + + nested = null; + + parseRes = parseExpression(res0, 0, res0.length()-1); + } + + if (earlyExit) + return new OdbcEscapeParseResult(startPos, curPos - startPos + 1, parseRes); + else + res.append(parseRes); + + openPos = -1; + + plainPos = curPos + 1; + } + } + + curPos++; + } + + if (openPos != -1) + throw new IgniteException("Malformed escape sequence (closing curly brace missing): " + text); + + if (curPos > plainPos) + res.append(text, plainPos, curPos); + + return new OdbcEscapeParseResult(startPos, curPos - startPos + 1, res.toString()); + } + + /** + * Parse concrete expression. + * + * @param text Text. + * @param startPos Start position within text. + * @param len Length. + * @return Result. + */ + private static String parseExpression(String text, int startPos, int len) { + assert validSubstring(text, startPos, len); + + char firstChar = text.charAt(startPos); + + if (firstChar == '{') { + char lastChar = text.charAt(startPos + len); + + if (lastChar != '}') + throw new IgniteException("Failed to parse escape sequence because it is not enclosed: " + + substring(text, startPos, len)); + + OdbcEscapeType typ = sequenceType(text, startPos, len); + + switch (typ) { + case FN: + return parseScalarExpression(text, startPos, len); + + default: { + assert false : "Unknown expression type: " + typ; + + return null; + } + } + } + else { + // Nothing to escape, return original string. + if (startPos == 0 || text.length() == len) + return text; + else + return text.substring(startPos, startPos + len); + } + } + + /** + * Parse concrete expression. + * + * @param text Text. + * @param startPos Start position. + * @param len Length. + * @return Parsed expression. + */ + private static String parseScalarExpression(String text, int startPos, int len) { + assert validSubstring(text, startPos, len); + + return substring(text, startPos + 3, len - 3).trim(); + } + + /** + * Append nested results. + * + * @param text Original text. + * @param startPos Start position. + * @param endPos End position. + * @param nestedRess Nested results. + * @return Result. + */ + private static String appendNested(String text, int startPos, int endPos, + LinkedList<OdbcEscapeParseResult> nestedRess) { + StringBuilder res = new StringBuilder(); + + int curPos = startPos; + + for (OdbcEscapeParseResult nestedRes : nestedRess) { + // Append text between current position and replace. + res.append(text, curPos, nestedRes.originalStart()); + + // Append replaced text. + res.append(nestedRes.result()); + + // Advance position. + curPos = nestedRes.originalStart() + nestedRes.originalLength(); + } + + // Append remainder. + res.append(text, curPos, endPos); + + return res.toString(); + } + + /** + * Get escape sequence type. + * + * @param text Text. + * @param startPos Start position. + * @return Escape sequence type. + */ + private static OdbcEscapeType sequenceType(String text, int startPos, int len) { + assert validSubstring(text, startPos, len); + assert text.charAt(startPos) == '{'; + + if (text.startsWith("fn", startPos + 1)) + return OdbcEscapeType.FN; + + throw new IgniteException("Unsupported escape sequence: " + text.substring(startPos, startPos + len)); + } + + /** + * Perform "substring" using start position and length. + * + * @param text Text. + * @param startPos Start position. + * @param len Length. + * @return Substring. + */ + private static String substring(String text, int startPos, int len) { + assert validSubstring(text, startPos, len); + + return text.substring(startPos, startPos + len); + } + + /** + * Check whether substring is valid. + * + * @param text Substring. + * @param startPos Start position. + * @param len Length. + * @return {@code True} if valid. + */ + private static boolean validSubstring(String text, int startPos, int len) { + return text != null && startPos + len <= text.length(); + } + + /** + * Private constructor. + */ + private OdbcEscapeUtils() { + // No-op. + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/15873234/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/escape/OdbcParser.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/escape/OdbcParser.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/escape/OdbcParser.java deleted file mode 100644 index 0e9f5fa..0000000 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/escape/OdbcParser.java +++ /dev/null @@ -1,291 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.ignite.internal.processors.odbc.escape; - -import java.util.LinkedList; -import org.apache.ignite.IgniteException; - -/** - * ODBC escape sequence parse. - */ -public class OdbcParser { - /** - * Parse escape sequence. - * - * @param text Original text. - * @return Result. - */ - public static String parse(String text) { - if (text == null) - throw new IgniteException("Text cannot be null."); - - return parse0(text.trim(), 0, false).res; - } - - /** - * Internal parse routine. - * - * @param text Text. - * @param startPos Start position. - * @param earlyExit When set to {@code true} we must return as soon as single expression is parsed. - * @return Parse result. - */ - private static ParseResult parse0(String text, int startPos, boolean earlyExit) { - StringBuilder res = new StringBuilder(); - - int curPos = startPos; - - int plainPos = startPos; - int openPos = -1; - - LinkedList<ParseResult> nested = null; - - while (curPos < text.length()) { - char curChar = text.charAt(curPos); - - if (curChar == '{') { - if (openPos == -1) { - // Top-level opening brace. Append previous portion and remember current position. - res.append(text, plainPos, curPos); - - openPos = curPos; - } - else { - // Nested opening brace -> perform recursion. - ParseResult nestedRes = parse0(text, curPos, true); - - if (nested == null) - nested = new LinkedList<>(); - - nested.add(nestedRes); - - curPos += nestedRes.originalLen; - - plainPos = curPos; - - continue; - } - } - else if (curChar == '}') { - if (openPos == -1) - // Close without open -> exception. - throw new IgniteException("Malformed escape sequence " + - "(closing curly brace without opening curly brace): " + text); - else { - String parseRes; - - if (nested == null) - // Found sequence without nesting, process it. - parseRes = parseExpression(text, openPos, curPos - openPos); - else { - // Special case to process nesting. - String res0 = appendNested(text, openPos, curPos + 1, nested); - - nested = null; - - parseRes = parseExpression(res0, 0, res0.length()-1); - } - - if (earlyExit) - return new ParseResult(startPos, curPos - startPos + 1, parseRes); - else - res.append(parseRes); - - openPos = -1; - - plainPos = curPos + 1; - } - } - - curPos++; - } - - if (openPos != -1) - throw new IgniteException("Malformed escape sequence (closing curly brace missing): " + text); - - if (curPos > plainPos) - res.append(text, plainPos, curPos); - - return new ParseResult(startPos, curPos - startPos + 1, res.toString()); - } - - /** - * Parse concrete expression. - * - * @param text Text. - * @param startPos Start position within text. - * @param len Length. - * @return Result. - */ - private static String parseExpression(String text, int startPos, int len) { - assert validSubstring(text, startPos, len); - - char firstChar = text.charAt(startPos); - - if (firstChar == '{') { - char lastChar = text.charAt(startPos + len); - - if (lastChar != '}') - throw new IgniteException("Failed to parse escape sequence because it is not enclosed: " + - substring(text, startPos, len)); - - SequenceType typ = sequenceType(text, startPos, len); - - switch (typ) { - case FN: - return parseScalarExpression(text, startPos, len); - - default: { - assert false : "Unknown expression type: " + typ; - - return null; - } - } - } - else { - // Nothing to escape, return original string. - if (startPos == 0 || text.length() == len) - return text; - else - return text.substring(startPos, startPos + len); - } - } - - /** - * Parse concrete expression. - * - * @param text Text. - * @param startPos Start position. - * @param len Length. - * @return Parsed expression. - */ - private static String parseScalarExpression(String text, int startPos, int len) { - assert validSubstring(text, startPos, len); - - return substring(text, startPos + 3, len - 3).trim(); - } - - /** - * Append nested results. - * - * @param text Original text. - * @param startPos Start position. - * @param endPos End position. - * @param nestedRess Nested results. - * @return Result. - */ - private static String appendNested(String text, int startPos, int endPos, LinkedList<ParseResult> nestedRess) { - StringBuilder res = new StringBuilder(); - - int curPos = startPos; - - for (ParseResult nestedRes : nestedRess) { - // Append text between current position and replace. - res.append(text, curPos, nestedRes.originalStart); - - // Append replaced text. - res.append(nestedRes.res); - - // Advance position. - curPos = nestedRes.originalStart + nestedRes.originalLen; - } - - // Append remainder. - res.append(text, curPos, endPos); - - return res.toString(); - } - - /** - * Get escape sequence type. - * - * @param text Text. - * @param startPos Start position. - * @return Escape sequence type. - */ - private static SequenceType sequenceType(String text, int startPos, int len) { - assert validSubstring(text, startPos, len); - assert text.charAt(startPos) == '{'; - - if (text.startsWith("fn", startPos + 1)) - return SequenceType.FN; - - throw new IgniteException("Unsupported escape sequence: " + text.substring(startPos, startPos + len)); - } - - /** - * Perform "substring" using start position and length. - * - * @param text Text. - * @param startPos Start position. - * @param len Length. - * @return Substring. - */ - private static String substring(String text, int startPos, int len) { - assert validSubstring(text, startPos, len); - - return text.substring(startPos, startPos + len); - } - - /** - * Check whether substring is valid. - * - * @param text Substring. - * @param startPos Start position. - * @param len Length. - * @return {@code True} if valid. - */ - private static boolean validSubstring(String text, int startPos, int len) { - return text != null && startPos + len <= text.length(); - } - - /** - * Escape sequence type. - */ - private enum SequenceType { - /** Scalar function. */ - FN - } - - /** - * Parse result. - */ - private static class ParseResult { - /** Original start position. */ - private final int originalStart; - - /** Original length. */ - private final int originalLen; - - /** Resulting text. */ - private final String res; - - /** - * Constructor. - * - * @param originalStart Original start position. - * @param originalLen Original length. - * @param res Resulting text. - */ - public ParseResult(int originalStart, int originalLen, String res) { - this.originalStart = originalStart; - this.originalLen = originalLen; - this.res = res; - } - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/15873234/modules/core/src/test/java/org/apache/ignite/internal/processors/odbc/OdbcScalarFunctionEscapeSequenceTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/odbc/OdbcScalarFunctionEscapeSequenceTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/odbc/OdbcScalarFunctionEscapeSequenceTest.java index 011d00f..7d31fbb 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/odbc/OdbcScalarFunctionEscapeSequenceTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/odbc/OdbcScalarFunctionEscapeSequenceTest.java @@ -20,7 +20,7 @@ package org.apache.ignite.internal.processors.odbc; import java.util.concurrent.Callable; import junit.framework.TestCase; import org.apache.ignite.IgniteException; -import org.apache.ignite.internal.processors.odbc.escape.OdbcParser; +import org.apache.ignite.internal.processors.odbc.escape.OdbcEscapeUtils; import org.apache.ignite.testframework.GridTestUtils; /** */ @@ -31,7 +31,7 @@ public class OdbcScalarFunctionEscapeSequenceTest extends TestCase { String sqlQry= "select * from table;"; String expRes = "select * from table;"; - String actualRes = OdbcParser.parse(sqlQry); + String actualRes = OdbcEscapeUtils.parse(sqlQry); assertEquals("Scalar function escape sequence parsing fails", expRes, actualRes); } @@ -41,7 +41,7 @@ public class OdbcScalarFunctionEscapeSequenceTest extends TestCase { String sqlQry = "select {fn test()} from table;"; String expRes = "select test() from table;"; - String actualRes = OdbcParser.parse(sqlQry); + String actualRes = OdbcEscapeUtils.parse(sqlQry); assertEquals("Scalar function escape sequence parsing fails", expRes, actualRes); } @@ -51,7 +51,7 @@ public class OdbcScalarFunctionEscapeSequenceTest extends TestCase { String sqlQry = "select {fn test()}"; String expRes = "select test()"; - String actualRes = OdbcParser.parse(sqlQry); + String actualRes = OdbcEscapeUtils.parse(sqlQry); assertEquals("Scalar function escape sequence parsing fails", expRes, actualRes); } @@ -61,7 +61,7 @@ public class OdbcScalarFunctionEscapeSequenceTest extends TestCase { String sqlQry = "{fn test()}"; String expRes = "test()"; - String actualRes = OdbcParser.parse(sqlQry); + String actualRes = OdbcEscapeUtils.parse(sqlQry); assertEquals("Scalar function escape sequence parsing fails", expRes, actualRes); } @@ -71,7 +71,7 @@ public class OdbcScalarFunctionEscapeSequenceTest extends TestCase { String sqlQry = "select {fn func(field1)}, {fn func(field2)} from table;"; String expRes = "select func(field1), func(field2) from table;"; - String actualRes = OdbcParser.parse(sqlQry); + String actualRes = OdbcEscapeUtils.parse(sqlQry); assertEquals("Scalar function escape sequence parsing fails", expRes, actualRes); } @@ -80,7 +80,7 @@ public class OdbcScalarFunctionEscapeSequenceTest extends TestCase { String sqlQry = "select {fn func(field1)}, {fn func(field2)}"; String expRes = "select func(field1), func(field2)"; - String actualRes = OdbcParser.parse(sqlQry); + String actualRes = OdbcEscapeUtils.parse(sqlQry); assertEquals("Scalar function escape sequence parsing fails", expRes, actualRes); } @@ -90,7 +90,7 @@ public class OdbcScalarFunctionEscapeSequenceTest extends TestCase { String sqlQry = "{fn func(field1)} {fn func(field2)}"; String expRes = "func(field1) func(field2)"; - String actualRes = OdbcParser.parse(sqlQry); + String actualRes = OdbcEscapeUtils.parse(sqlQry); assertEquals("Scalar function escape sequence parsing fails", expRes, actualRes); } @@ -100,7 +100,7 @@ public class OdbcScalarFunctionEscapeSequenceTest extends TestCase { String sqlQry = "select {fn func1(field1, {fn func2(field2)}, field3)} from SomeTable;"; String expRes = "select func1(field1, func2(field2), field3) from SomeTable;"; - String actualRes = OdbcParser.parse(sqlQry); + String actualRes = OdbcEscapeUtils.parse(sqlQry); assertEquals("Scalar function escape sequence parsing fails", expRes, actualRes); } @@ -110,7 +110,7 @@ public class OdbcScalarFunctionEscapeSequenceTest extends TestCase { String sqlQry = "select {fn func1(field1, {fn func2(field2)}, field3)}"; String expRes = "select func1(field1, func2(field2), field3)"; - String actualRes = OdbcParser.parse(sqlQry); + String actualRes = OdbcEscapeUtils.parse(sqlQry); assertEquals("Scalar function escape sequence parsing fails", expRes, actualRes); } @@ -120,7 +120,7 @@ public class OdbcScalarFunctionEscapeSequenceTest extends TestCase { String sqlQry = "select {fn func1(field1, {fn func2({fn func3(field2)}, field3)})} from SomeTable;"; String expRes = "select func1(field1, func2(func3(field2), field3)) from SomeTable;"; - String actualRes = OdbcParser.parse(sqlQry); + String actualRes = OdbcEscapeUtils.parse(sqlQry); assertEquals("Scalar function escape sequence parsing fails", expRes, actualRes); } @@ -130,7 +130,7 @@ public class OdbcScalarFunctionEscapeSequenceTest extends TestCase { String sqlQry = "select {fn func1(field1, {fn func2({fn func3(field2)}, field3)})}"; String expRes = "select func1(field1, func2(func3(field2), field3))"; - String actualRes = OdbcParser.parse(sqlQry); + String actualRes = OdbcEscapeUtils.parse(sqlQry); assertEquals("Scalar function escape sequence parsing fails", expRes, actualRes); } @@ -140,7 +140,7 @@ public class OdbcScalarFunctionEscapeSequenceTest extends TestCase { String sqlQry = "{fn func1({fn func2({fn func3(field1)})})}"; String expRes = "func1(func2(func3(field1)))"; - String actualRes = OdbcParser.parse(sqlQry); + String actualRes = OdbcEscapeUtils.parse(sqlQry); assertEquals("Scalar function escape sequence parsing fails", expRes, actualRes); } @@ -150,7 +150,7 @@ public class OdbcScalarFunctionEscapeSequenceTest extends TestCase { String sqlQry = "select {fn func1({fn func2(field1)}, {fn func3(field2)})} from table;"; String expRes = "select func1(func2(field1), func3(field2)) from table;"; - String actualRes = OdbcParser.parse(sqlQry); + String actualRes = OdbcEscapeUtils.parse(sqlQry); assertEquals("Scalar function escape sequence parsing fails", expRes, actualRes); } @@ -160,7 +160,7 @@ public class OdbcScalarFunctionEscapeSequenceTest extends TestCase { String sqlQry = "{fn func1({fn func2(field1)}, {fn func3(field2)})}"; String expRes = "func1(func2(field1), func3(field2))"; - String actualRes = OdbcParser.parse(sqlQry); + String actualRes = OdbcEscapeUtils.parse(sqlQry); assertEquals("Scalar function escape sequence parsing fails", expRes, actualRes); } @@ -170,7 +170,7 @@ public class OdbcScalarFunctionEscapeSequenceTest extends TestCase { String sqlQry = "{fn func1({fn func2({fn func3(field1)})})} {fn func1({fn func2(field2)})}"; String expRes = "func1(func2(func3(field1))) func1(func2(field2))"; - String actualRes = OdbcParser.parse(sqlQry); + String actualRes = OdbcEscapeUtils.parse(sqlQry); assertEquals("Scalar function escape sequence parsing fails", expRes, actualRes); } @@ -181,7 +181,7 @@ public class OdbcScalarFunctionEscapeSequenceTest extends TestCase { @Override public Void call() throws Exception { String sqlQry = "select {fn func1(field1, {fn func2(field2), field3)} from SomeTable;"; - OdbcParser.parse(sqlQry); + OdbcEscapeUtils.parse(sqlQry); fail("Scalar function escape sequence parsing should failed"); @@ -196,7 +196,7 @@ public class OdbcScalarFunctionEscapeSequenceTest extends TestCase { @Override public Void call() throws Exception { String sqlQry = "select {fn func1(field1, func2(field2)}, field3)} from SomeTable;"; - OdbcParser.parse(sqlQry); + OdbcEscapeUtils.parse(sqlQry); fail("Scalar function escape sequence parsing should failed");
