Search in sources :

Example 11 with ExpressionList

use of net.sf.jsqlparser.expression.operators.relational.ExpressionList in project JSqlParser by JSQLParser.

the class InsertTest method testInsertValuesWithDuplicateElimination.

@Test
public void testInsertValuesWithDuplicateElimination() throws JSQLParserException {
    String statement = "INSERT INTO TEST (ID, COUNTER) VALUES (123, 0) " + "ON DUPLICATE KEY UPDATE COUNTER = COUNTER + 1";
    Insert insert = (Insert) parserManager.parse(new StringReader(statement));
    assertEquals("TEST", insert.getTable().getName());
    assertEquals(2, insert.getColumns().size());
    assertTrue(insert.isUseValues());
    assertEquals("ID", ((Column) insert.getColumns().get(0)).getColumnName());
    assertEquals("COUNTER", ((Column) insert.getColumns().get(1)).getColumnName());
    assertEquals(2, ((ExpressionList) insert.getItemsList()).getExpressions().size());
    assertEquals(123, ((LongValue) ((ExpressionList) insert.getItemsList()).getExpressions().get(0)).getValue());
    assertEquals(0, ((LongValue) ((ExpressionList) insert.getItemsList()).getExpressions().get(1)).getValue());
    assertEquals(1, insert.getDuplicateUpdateColumns().size());
    assertEquals("COUNTER", ((Column) insert.getDuplicateUpdateColumns().get(0)).getColumnName());
    assertEquals(1, insert.getDuplicateUpdateExpressionList().size());
    assertEquals("COUNTER + 1", insert.getDuplicateUpdateExpressionList().get(0).toString());
    assertFalse(insert.isUseSelectBrackets());
    assertTrue(insert.isUseDuplicate());
    assertEquals(statement, "" + insert);
}
Also used : StringReader(java.io.StringReader) Insert(net.sf.jsqlparser.statement.insert.Insert) ExpressionList(net.sf.jsqlparser.expression.operators.relational.ExpressionList) Test(org.junit.Test)

Example 12 with ExpressionList

use of net.sf.jsqlparser.expression.operators.relational.ExpressionList in project JSqlParser by JSQLParser.

the class InsertTest method testRegularInsert.

@Test
public void testRegularInsert() throws JSQLParserException {
    String statement = "INSERT INTO mytable (col1, col2, col3) VALUES (?, 'sadfsd', 234)";
    Insert insert = (Insert) parserManager.parse(new StringReader(statement));
    assertEquals("mytable", insert.getTable().getName());
    assertEquals(3, insert.getColumns().size());
    assertEquals("col1", ((Column) insert.getColumns().get(0)).getColumnName());
    assertEquals("col2", ((Column) insert.getColumns().get(1)).getColumnName());
    assertEquals("col3", ((Column) insert.getColumns().get(2)).getColumnName());
    assertEquals(3, ((ExpressionList) insert.getItemsList()).getExpressions().size());
    assertTrue(((ExpressionList) insert.getItemsList()).getExpressions().get(0) instanceof JdbcParameter);
    assertEquals("sadfsd", ((StringValue) ((ExpressionList) insert.getItemsList()).getExpressions().get(1)).getValue());
    assertEquals(234, ((LongValue) ((ExpressionList) insert.getItemsList()).getExpressions().get(2)).getValue());
    assertEquals(statement, "" + insert);
    statement = "INSERT INTO myschema.mytable VALUES (?, ?, 2.3)";
    insert = (Insert) parserManager.parse(new StringReader(statement));
    assertEquals("myschema.mytable", insert.getTable().getFullyQualifiedName());
    assertEquals(3, ((ExpressionList) insert.getItemsList()).getExpressions().size());
    assertTrue(((ExpressionList) insert.getItemsList()).getExpressions().get(0) instanceof JdbcParameter);
    assertEquals(2.3, ((DoubleValue) ((ExpressionList) insert.getItemsList()).getExpressions().get(2)).getValue(), 0.0);
    assertEquals(statement, "" + insert);
}
Also used : JdbcParameter(net.sf.jsqlparser.expression.JdbcParameter) StringReader(java.io.StringReader) Insert(net.sf.jsqlparser.statement.insert.Insert) ExpressionList(net.sf.jsqlparser.expression.operators.relational.ExpressionList) Test(org.junit.Test)

Example 13 with ExpressionList

use of net.sf.jsqlparser.expression.operators.relational.ExpressionList in project JSqlParser by JSQLParser.

the class ExpressionDeParser method visit.

@Override
public void visit(AnalyticExpression aexpr) {
    String name = aexpr.getName();
    Expression expression = aexpr.getExpression();
    Expression offset = aexpr.getOffset();
    Expression defaultValue = aexpr.getDefaultValue();
    boolean isAllColumns = aexpr.isAllColumns();
    KeepExpression keep = aexpr.getKeep();
    ExpressionList partitionExpressionList = aexpr.getPartitionExpressionList();
    List<OrderByElement> orderByElements = aexpr.getOrderByElements();
    WindowElement windowElement = aexpr.getWindowElement();
    buffer.append(name).append("(");
    if (expression != null) {
        expression.accept(this);
        if (offset != null) {
            buffer.append(", ");
            offset.accept(this);
            if (defaultValue != null) {
                buffer.append(", ");
                defaultValue.accept(this);
            }
        }
    } else if (isAllColumns) {
        buffer.append("*");
    }
    buffer.append(") ");
    if (keep != null) {
        keep.accept(this);
        buffer.append(" ");
    }
    switch(aexpr.getType()) {
        case WITHIN_GROUP:
            buffer.append("WITHIN GROUP");
            break;
        default:
            buffer.append("OVER");
    }
    buffer.append(" (");
    if (partitionExpressionList != null && !partitionExpressionList.getExpressions().isEmpty()) {
        buffer.append("PARTITION BY ");
        List<Expression> expressions = partitionExpressionList.getExpressions();
        for (int i = 0; i < expressions.size(); i++) {
            if (i > 0) {
                buffer.append(", ");
            }
            expressions.get(i).accept(this);
        }
        buffer.append(" ");
    }
    if (orderByElements != null && !orderByElements.isEmpty()) {
        buffer.append("ORDER BY ");
        orderByDeParser.setExpressionVisitor(this);
        orderByDeParser.setBuffer(buffer);
        for (int i = 0; i < orderByElements.size(); i++) {
            if (i > 0) {
                buffer.append(", ");
            }
            orderByDeParser.deParseElement(orderByElements.get(i));
        }
        if (windowElement != null) {
            buffer.append(' ');
            buffer.append(windowElement);
        }
    }
    buffer.append(")");
}
Also used : KeepExpression(net.sf.jsqlparser.expression.KeepExpression) WindowElement(net.sf.jsqlparser.expression.WindowElement) KeepExpression(net.sf.jsqlparser.expression.KeepExpression) CaseExpression(net.sf.jsqlparser.expression.CaseExpression) NotExpression(net.sf.jsqlparser.expression.NotExpression) ValueListExpression(net.sf.jsqlparser.expression.ValueListExpression) CastExpression(net.sf.jsqlparser.expression.CastExpression) OracleHierarchicalExpression(net.sf.jsqlparser.expression.OracleHierarchicalExpression) IsNullExpression(net.sf.jsqlparser.expression.operators.relational.IsNullExpression) Expression(net.sf.jsqlparser.expression.Expression) IntervalExpression(net.sf.jsqlparser.expression.IntervalExpression) OrExpression(net.sf.jsqlparser.expression.operators.conditional.OrExpression) TimeKeyExpression(net.sf.jsqlparser.expression.TimeKeyExpression) BinaryExpression(net.sf.jsqlparser.expression.BinaryExpression) JsonExpression(net.sf.jsqlparser.expression.JsonExpression) LikeExpression(net.sf.jsqlparser.expression.operators.relational.LikeExpression) ExistsExpression(net.sf.jsqlparser.expression.operators.relational.ExistsExpression) InExpression(net.sf.jsqlparser.expression.operators.relational.InExpression) AndExpression(net.sf.jsqlparser.expression.operators.conditional.AndExpression) AnalyticExpression(net.sf.jsqlparser.expression.AnalyticExpression) AllComparisonExpression(net.sf.jsqlparser.expression.AllComparisonExpression) ExtractExpression(net.sf.jsqlparser.expression.ExtractExpression) AnyComparisonExpression(net.sf.jsqlparser.expression.AnyComparisonExpression) SignedExpression(net.sf.jsqlparser.expression.SignedExpression) OldOracleJoinBinaryExpression(net.sf.jsqlparser.expression.operators.relational.OldOracleJoinBinaryExpression) DateTimeLiteralExpression(net.sf.jsqlparser.expression.DateTimeLiteralExpression) OrderByElement(net.sf.jsqlparser.statement.select.OrderByElement) MultiExpressionList(net.sf.jsqlparser.expression.operators.relational.MultiExpressionList) ExpressionList(net.sf.jsqlparser.expression.operators.relational.ExpressionList) OracleHint(net.sf.jsqlparser.expression.OracleHint)

Example 14 with ExpressionList

use of net.sf.jsqlparser.expression.operators.relational.ExpressionList in project JSqlParser by JSQLParser.

the class InsertDeParser method visit.

@Override
public void visit(MultiExpressionList multiExprList) {
    buffer.append(" VALUES ");
    for (Iterator<ExpressionList> it = multiExprList.getExprList().iterator(); it.hasNext(); ) {
        buffer.append("(");
        for (Iterator<Expression> iter = it.next().getExpressions().iterator(); iter.hasNext(); ) {
            Expression expression = iter.next();
            expression.accept(expressionVisitor);
            if (iter.hasNext()) {
                buffer.append(", ");
            }
        }
        buffer.append(")");
        if (it.hasNext()) {
            buffer.append(", ");
        }
    }
}
Also used : Expression(net.sf.jsqlparser.expression.Expression) MultiExpressionList(net.sf.jsqlparser.expression.operators.relational.MultiExpressionList) ExpressionList(net.sf.jsqlparser.expression.operators.relational.ExpressionList)

Example 15 with ExpressionList

use of net.sf.jsqlparser.expression.operators.relational.ExpressionList in project JSqlParser by JSQLParser.

the class ReplaceDeParser method visit.

@Override
public void visit(MultiExpressionList multiExprList) {
    buffer.append("VALUES ");
    for (Iterator<ExpressionList> it = multiExprList.getExprList().iterator(); it.hasNext(); ) {
        buffer.append("(");
        for (Iterator<Expression> iter = it.next().getExpressions().iterator(); iter.hasNext(); ) {
            Expression expression = iter.next();
            expression.accept(expressionVisitor);
            if (iter.hasNext()) {
                buffer.append(", ");
            }
        }
        buffer.append(")");
        if (it.hasNext()) {
            buffer.append(", ");
        }
    }
}
Also used : Expression(net.sf.jsqlparser.expression.Expression) MultiExpressionList(net.sf.jsqlparser.expression.operators.relational.MultiExpressionList) ExpressionList(net.sf.jsqlparser.expression.operators.relational.ExpressionList)

Aggregations

ExpressionList (net.sf.jsqlparser.expression.operators.relational.ExpressionList)21 Expression (net.sf.jsqlparser.expression.Expression)16 ArrayList (java.util.ArrayList)11 Test (org.junit.Test)9 MultiExpressionList (net.sf.jsqlparser.expression.operators.relational.MultiExpressionList)6 StringReader (java.io.StringReader)5 JSQLParserException (net.sf.jsqlparser.JSQLParserException)4 Function (net.sf.jsqlparser.expression.Function)4 Statement (net.sf.jsqlparser.statement.Statement)4 DBException (org.jkiss.dbeaver.DBException)4 JdbcParameter (net.sf.jsqlparser.expression.JdbcParameter)3 ItemsList (net.sf.jsqlparser.expression.operators.relational.ItemsList)3 Insert (net.sf.jsqlparser.statement.insert.Insert)3 StatementExecutionException (herddb.model.StatementExecutionException)2 List (java.util.List)2 AnalyticExpression (net.sf.jsqlparser.expression.AnalyticExpression)2 BinaryExpression (net.sf.jsqlparser.expression.BinaryExpression)2 KeepExpression (net.sf.jsqlparser.expression.KeepExpression)2 SignedExpression (net.sf.jsqlparser.expression.SignedExpression)2 InExpression (net.sf.jsqlparser.expression.operators.relational.InExpression)2