Search in sources :

Example 6 with Column

use of net.sf.jsqlparser.schema.Column in project JSqlParser by JSQLParser.

the class StatementDeParserTest method shouldUseProvidedDeParsersWhenDeParsingUpdateNotUsingSelect.

@Test
@SuppressWarnings("PMD.JUnitTestsShouldIncludeAssert")
public void shouldUseProvidedDeParsersWhenDeParsingUpdateNotUsingSelect() {
    Update update = new Update();
    List<Column> columns = new ArrayList<Column>();
    List<Expression> expressions = new ArrayList<Expression>();
    Expression where = mock(Expression.class);
    List<OrderByElement> orderByElements = new ArrayList<OrderByElement>();
    Column column1 = new Column();
    Column column2 = new Column();
    Expression expression1 = mock(Expression.class);
    Expression expression2 = mock(Expression.class);
    OrderByElement orderByElement1 = new OrderByElement();
    OrderByElement orderByElement2 = new OrderByElement();
    Expression orderByElement1Expression = mock(Expression.class);
    Expression orderByElement2Expression = mock(Expression.class);
    update.setColumns(columns);
    update.setExpressions(expressions);
    update.setWhere(where);
    update.setOrderByElements(orderByElements);
    columns.add(column1);
    columns.add(column2);
    expressions.add(expression1);
    expressions.add(expression2);
    orderByElements.add(orderByElement1);
    orderByElements.add(orderByElement2);
    orderByElement1.setExpression(orderByElement1Expression);
    orderByElement2.setExpression(orderByElement2Expression);
    statementDeParser.visit(update);
    then(expressionDeParser).should().visit(column1);
    then(expressionDeParser).should().visit(column2);
    then(expression1).should().accept(expressionDeParser);
    then(expression2).should().accept(expressionDeParser);
    then(where).should().accept(expressionDeParser);
    then(orderByElement1Expression).should().accept(expressionDeParser);
    then(orderByElement2Expression).should().accept(expressionDeParser);
}
Also used : Column(net.sf.jsqlparser.schema.Column) Expression(net.sf.jsqlparser.expression.Expression) ArrayList(java.util.ArrayList) OrderByElement(net.sf.jsqlparser.statement.select.OrderByElement) Update(net.sf.jsqlparser.statement.update.Update) Test(org.junit.Test)

Example 7 with Column

use of net.sf.jsqlparser.schema.Column in project JSqlParser by JSQLParser.

the class StatementDeParserTest method shouldUseProvidedDeparsersWhenDeParsingUpsertWithExpressionList.

@Test
@SuppressWarnings("PMD.JUnitTestsShouldIncludeAssert")
public void shouldUseProvidedDeparsersWhenDeParsingUpsertWithExpressionList() throws JSQLParserException {
    Upsert upsert = new Upsert();
    Table table = new Table();
    List<Column> duplicateUpdateColumns = new ArrayList<Column>();
    List<Expression> duplicateUpdateExpressionList = new ArrayList<Expression>();
    Column duplicateUpdateColumn1 = new Column();
    Column duplicateUpdateColumn2 = new Column();
    Expression duplicateUpdateExpression1 = mock(Expression.class);
    Expression duplicateUpdateExpression2 = mock(Expression.class);
    Select select = new Select();
    List<WithItem> withItemsList = new ArrayList<WithItem>();
    WithItem withItem1 = spy(new WithItem());
    WithItem withItem2 = spy(new WithItem());
    SelectBody withItem1SelectBody = mock(SelectBody.class);
    SelectBody withItem2SelectBody = mock(SelectBody.class);
    SelectBody selectBody = mock(SelectBody.class);
    upsert.setSelect(select);
    upsert.setTable(table);
    upsert.setUseDuplicate(true);
    upsert.setDuplicateUpdateColumns(duplicateUpdateColumns);
    upsert.setDuplicateUpdateExpressionList(duplicateUpdateExpressionList);
    duplicateUpdateColumns.add(duplicateUpdateColumn1);
    duplicateUpdateColumns.add(duplicateUpdateColumn2);
    duplicateUpdateExpressionList.add(duplicateUpdateExpression1);
    duplicateUpdateExpressionList.add(duplicateUpdateExpression2);
    upsert.setDuplicateUpdateExpressionList(duplicateUpdateExpressionList);
    select.setWithItemsList(withItemsList);
    select.setSelectBody(selectBody);
    withItemsList.add(withItem1);
    withItemsList.add(withItem2);
    withItem1.setSelectBody(withItem1SelectBody);
    withItem2.setSelectBody(withItem2SelectBody);
    statementDeParser.visit(upsert);
    then(withItem1).should().accept(selectDeParser);
    then(withItem2).should().accept(selectDeParser);
    then(selectBody).should().accept(selectDeParser);
    then(duplicateUpdateExpression1).should().accept(expressionDeParser);
    then(duplicateUpdateExpression1).should().accept(expressionDeParser);
}
Also used : Upsert(net.sf.jsqlparser.statement.upsert.Upsert) Table(net.sf.jsqlparser.schema.Table) Column(net.sf.jsqlparser.schema.Column) Expression(net.sf.jsqlparser.expression.Expression) ArrayList(java.util.ArrayList) Select(net.sf.jsqlparser.statement.select.Select) WithItem(net.sf.jsqlparser.statement.select.WithItem) SelectBody(net.sf.jsqlparser.statement.select.SelectBody) Test(org.junit.Test)

Example 8 with Column

use of net.sf.jsqlparser.schema.Column in project JSqlParser by JSQLParser.

the class SelectASTTest method testSelectASTColumn.

@Test
public void testSelectASTColumn() throws JSQLParserException {
    String sql = "SELECT  a,  b FROM  mytable  order by   b,  c";
    StringBuilder b = new StringBuilder(sql);
    Statement stmt = CCJSqlParserUtil.parse(sql);
    Select select = (Select) stmt;
    PlainSelect ps = (PlainSelect) select.getSelectBody();
    for (SelectItem item : ps.getSelectItems()) {
        SelectExpressionItem sei = (SelectExpressionItem) item;
        Column c = (Column) sei.getExpression();
        SimpleNode astNode = c.getASTNode();
        assertNotNull(astNode);
        b.setCharAt(astNode.jjtGetFirstToken().beginColumn - 1, '*');
    }
    for (OrderByElement item : ps.getOrderByElements()) {
        Column c = (Column) item.getExpression();
        SimpleNode astNode = c.getASTNode();
        assertNotNull(astNode);
        b.setCharAt(astNode.jjtGetFirstToken().beginColumn - 1, '#');
    }
    assertEquals("SELECT  *,  * FROM  mytable  order by   #,  #", b.toString());
}
Also used : Column(net.sf.jsqlparser.schema.Column) Statement(net.sf.jsqlparser.statement.Statement) SelectItem(net.sf.jsqlparser.statement.select.SelectItem) SelectExpressionItem(net.sf.jsqlparser.statement.select.SelectExpressionItem) PlainSelect(net.sf.jsqlparser.statement.select.PlainSelect) Select(net.sf.jsqlparser.statement.select.Select) PlainSelect(net.sf.jsqlparser.statement.select.PlainSelect) OrderByElement(net.sf.jsqlparser.statement.select.OrderByElement) SimpleNode(net.sf.jsqlparser.parser.SimpleNode) Test(org.junit.Test)

Example 9 with Column

use of net.sf.jsqlparser.schema.Column in project JSqlParser by JSQLParser.

the class InsertDeParser method deParse.

public void deParse(Insert insert) {
    buffer.append("INSERT ");
    if (insert.getModifierPriority() != null) {
        buffer.append(insert.getModifierPriority()).append(" ");
    }
    if (insert.isModifierIgnore()) {
        buffer.append("IGNORE ");
    }
    buffer.append("INTO ");
    buffer.append(insert.getTable().toString());
    if (insert.getColumns() != null) {
        buffer.append(" (");
        for (Iterator<Column> iter = insert.getColumns().iterator(); iter.hasNext(); ) {
            Column column = iter.next();
            buffer.append(column.getColumnName());
            if (iter.hasNext()) {
                buffer.append(", ");
            }
        }
        buffer.append(")");
    }
    if (insert.getItemsList() != null) {
        insert.getItemsList().accept(this);
    }
    if (insert.getSelect() != null) {
        buffer.append(" ");
        if (insert.isUseSelectBrackets()) {
            buffer.append("(");
        }
        if (insert.getSelect().getWithItemsList() != null) {
            buffer.append("WITH ");
            for (WithItem with : insert.getSelect().getWithItemsList()) {
                with.accept(selectVisitor);
            }
            buffer.append(" ");
        }
        insert.getSelect().getSelectBody().accept(selectVisitor);
        if (insert.isUseSelectBrackets()) {
            buffer.append(")");
        }
    }
    if (insert.isUseSet()) {
        buffer.append(" SET ");
        for (int i = 0; i < insert.getSetColumns().size(); i++) {
            Column column = insert.getSetColumns().get(i);
            column.accept(expressionVisitor);
            buffer.append(" = ");
            Expression expression = insert.getSetExpressionList().get(i);
            expression.accept(expressionVisitor);
            if (i < insert.getSetColumns().size() - 1) {
                buffer.append(", ");
            }
        }
    }
    if (insert.isUseDuplicate()) {
        buffer.append(" ON DUPLICATE KEY UPDATE ");
        for (int i = 0; i < insert.getDuplicateUpdateColumns().size(); i++) {
            Column column = insert.getDuplicateUpdateColumns().get(i);
            buffer.append(column.getFullyQualifiedName()).append(" = ");
            Expression expression = insert.getDuplicateUpdateExpressionList().get(i);
            expression.accept(expressionVisitor);
            if (i < insert.getDuplicateUpdateColumns().size() - 1) {
                buffer.append(", ");
            }
        }
    }
    if (insert.isReturningAllColumns()) {
        buffer.append(" RETURNING *");
    } else if (insert.getReturningExpressionList() != null) {
        buffer.append(" RETURNING ");
        for (Iterator<SelectExpressionItem> iter = insert.getReturningExpressionList().iterator(); iter.hasNext(); ) {
            buffer.append(iter.next().toString());
            if (iter.hasNext()) {
                buffer.append(", ");
            }
        }
    }
}
Also used : Column(net.sf.jsqlparser.schema.Column) Expression(net.sf.jsqlparser.expression.Expression) Iterator(java.util.Iterator) WithItem(net.sf.jsqlparser.statement.select.WithItem)

Example 10 with Column

use of net.sf.jsqlparser.schema.Column in project JSqlParser by JSQLParser.

the class UpsertDeParser method appendColumns.

private void appendColumns(Upsert upsert) {
    buffer.append(" (");
    for (Iterator<Column> iter = upsert.getColumns().iterator(); iter.hasNext(); ) {
        Column column = iter.next();
        buffer.append(column.getColumnName());
        if (iter.hasNext()) {
            buffer.append(", ");
        }
    }
    buffer.append(")");
}
Also used : Column(net.sf.jsqlparser.schema.Column)

Aggregations

Column (net.sf.jsqlparser.schema.Column)43 Expression (net.sf.jsqlparser.expression.Expression)19 Test (org.junit.Test)19 Table (net.sf.jsqlparser.schema.Table)18 PlainSelect (net.sf.jsqlparser.statement.select.PlainSelect)18 Select (net.sf.jsqlparser.statement.select.Select)18 ArrayList (java.util.ArrayList)9 SelectExpressionItem (net.sf.jsqlparser.statement.select.SelectExpressionItem)8 SelectItem (net.sf.jsqlparser.statement.select.SelectItem)8 OrderByElement (net.sf.jsqlparser.statement.select.OrderByElement)6 LongValue (net.sf.jsqlparser.expression.LongValue)5 AndExpression (net.sf.jsqlparser.expression.operators.conditional.AndExpression)5 Statement (net.sf.jsqlparser.statement.Statement)5 SelectBody (net.sf.jsqlparser.statement.select.SelectBody)5 SimpleNode (net.sf.jsqlparser.parser.SimpleNode)4 SelectVisitorAdapter (net.sf.jsqlparser.statement.select.SelectVisitorAdapter)4 WriteBuilder (com.google.cloud.spanner.Mutation.WriteBuilder)3 ExpressionVisitorAdapter (net.sf.jsqlparser.expression.ExpressionVisitorAdapter)3 CloudSpannerSQLException (nl.topicus.jdbc.exception.CloudSpannerSQLException)3 SQLException (java.sql.SQLException)2