Skip to content

Commit

Permalink
TEIID-4877 fixing the tostring with nested comparisons
Browse files Browse the repository at this point in the history
  • Loading branch information
shawkins committed Apr 27, 2017
1 parent 8e7c7b9 commit e99e587
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 4 deletions.
16 changes: 14 additions & 2 deletions api/src/main/java/org/teiid/language/visitor/SQLStringVisitor.java
Expand Up @@ -168,11 +168,23 @@ public void visit(AggregateFunction obj) {
}

public void visit(Comparison obj) {
append(obj.getLeftExpression());
if (obj.getLeftExpression() instanceof Comparison) {
buffer.append(Tokens.LPAREN);
append(obj.getLeftExpression());
buffer.append(Tokens.RPAREN);
} else {
append(obj.getLeftExpression());
}
buffer.append(Tokens.SPACE);
buffer.append(obj.getOperator());
buffer.append(Tokens.SPACE);
appendRightComparison(obj);
if (obj.getRightExpression() instanceof Comparison) {
buffer.append(Tokens.LPAREN);
appendRightComparison(obj);
buffer.append(Tokens.RPAREN);
} else {
appendRightComparison(obj);
}
}

protected void appendRightComparison(Comparison obj) {
Expand Down
Expand Up @@ -625,5 +625,11 @@ public void helpTestVisitor(String vdb, String input, String expectedOutput) thr
"SELECT X'abcd1234'", //$NON-NLS-1$
"SELECT cast(E'\\\\xABCD1234' AS bytea)"); //$NON-NLS-1$
}

@Test public void testBooleanExpressionComparision() throws TranslatorException {
helpTestVisitor(TranslationHelper.BQT_VDB,
"SELECT intkey from bqt1.smalla where (intkey < 10) = true", //$NON-NLS-1$
"SELECT SmallA.IntKey FROM SmallA WHERE (SmallA.IntKey < 10) = TRUE"); //$NON-NLS-1$
}

}
Expand Up @@ -186,12 +186,24 @@ public void visit( CaseExpression obj ) {
@Override
public void visit( CompareCriteria obj ) {
Expression leftExpression = obj.getLeftExpression();
visitNode(leftExpression);
if (leftExpression instanceof CompareCriteria) {
append(Tokens.LPAREN);
visitNode(leftExpression);
append(Tokens.RPAREN);
} else {
visitNode(leftExpression);
}
append(SPACE);
append(obj.getOperatorAsString());
append(SPACE);
Expression rightExpression = obj.getRightExpression();
visitNode(rightExpression);
if (rightExpression instanceof CompareCriteria) {
append(Tokens.LPAREN);
visitNode(rightExpression);
append(Tokens.RPAREN);
} else {
visitNode(rightExpression);
}
}

@Override
Expand Down
Expand Up @@ -1754,4 +1754,18 @@ public Expression helpTestExpression(String sql, String expected) throws QueryPa
helpTest(QueryParser.getQueryParser().parseCommand(sql), "SELECT 'a\\u0000\\u0001b''c''d\\u0002e\\u0003f''' FROM TEXTTABLE(x COLUMNS y string ESCAPE '\\u0000' HEADER) AS A"); //$NON-NLS-1$
}

@Test public void testNestedComparison() {
CompareCriteria cc = new CompareCriteria(
new ElementSymbol("m.g.c1"), //$NON-NLS-1$
CompareCriteria.EQ,
new Constant("abc") ); //$NON-NLS-1$

CompareCriteria cc1 = new CompareCriteria(
cc, //$NON-NLS-1$
CompareCriteria.EQ,
new Constant(false) ); //$NON-NLS-1$

helpTest(cc1, "(m.g.c1 = 'abc') = FALSE"); //$NON-NLS-1$
}

}

0 comments on commit e99e587

Please sign in to comment.