Skip to content

Commit

Permalink
improved insert clause
Browse files Browse the repository at this point in the history
  • Loading branch information
wumpz committed Aug 4, 2014
1 parent 24dc08d commit a4de602
Show file tree
Hide file tree
Showing 6 changed files with 264 additions and 184 deletions.
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,12 @@ Also I would like to know about needed examples or documentation stuff.

## Extensions in the latest SNAPSHOT version 0.9.1

* Improved support for insert table using with clause.

```sql
INSERT INTO mytable (mycolumn) WITH a AS (SELECT mycolumn FROM mytable) SELECT mycolumn FROM a
```

* Support for ```limit 0``` and ```limit null``` clause.
* Window functions now allow simple expressions for partition by.
* Support for create table as select syntax:
Expand Down
182 changes: 107 additions & 75 deletions src/main/java/net/sf/jsqlparser/statement/insert/Insert.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,70 +29,72 @@
import net.sf.jsqlparser.statement.Statement;
import net.sf.jsqlparser.statement.StatementVisitor;
import net.sf.jsqlparser.statement.select.PlainSelect;
import net.sf.jsqlparser.statement.select.Select;
import net.sf.jsqlparser.statement.select.SelectExpressionItem;

/**
* The insert statement. Every column name in
* <code>columnNames</code> matches an item in
* <code>itemsList</code>
* The insert statement. Every column name in <code>columnNames</code> matches
* an item in <code>itemsList</code>
*/
public class Insert implements Statement {

private Table table;
private List<Column> columns;
private ItemsList itemsList;
private boolean useValues = true;

private Table table;
private List<Column> columns;
private ItemsList itemsList;
private boolean useValues = true;
private Select select;
private boolean useSelectBrackets = true;

private boolean returningAllColumns = false;

private List<SelectExpressionItem> returningExpressionList = null;

@Override
public void accept(StatementVisitor statementVisitor) {
statementVisitor.visit(this);
}

public Table getTable() {
return table;
}

public void setTable(Table name) {
table = name;
}

/**
* Get the columns (found in "INSERT INTO (col1,col2..) [...]" )
*
* @return a list of {@link net.sf.jsqlparser.schema.Column}
*/
public List<Column> getColumns() {
return columns;
}

public void setColumns(List<Column> list) {
columns = list;
}

/**
* Get the values (as VALUES (...) or SELECT)
*
* @return the values of the insert
*/
public ItemsList getItemsList() {
return itemsList;
}

public void setItemsList(ItemsList list) {
itemsList = list;
}

public boolean isUseValues() {
return useValues;
}

public void setUseValues(boolean useValues) {
this.useValues = useValues;
}
@Override
public void accept(StatementVisitor statementVisitor) {
statementVisitor.visit(this);
}

public Table getTable() {
return table;
}

public void setTable(Table name) {
table = name;
}

/**
* Get the columns (found in "INSERT INTO (col1,col2..) [...]" )
*
* @return a list of {@link net.sf.jsqlparser.schema.Column}
*/
public List<Column> getColumns() {
return columns;
}

public void setColumns(List<Column> list) {
columns = list;
}

/**
* Get the values (as VALUES (...) or SELECT)
*
* @return the values of the insert
*/
public ItemsList getItemsList() {
return itemsList;
}

public void setItemsList(ItemsList list) {
itemsList = list;
}

public boolean isUseValues() {
return useValues;
}

public void setUseValues(boolean useValues) {
this.useValues = useValues;
}

public boolean isReturningAllColumns() {
return returningAllColumns;
Expand All @@ -110,26 +112,56 @@ public void setReturningExpressionList(List<SelectExpressionItem> returningExpre
this.returningExpressionList = returningExpressionList;
}

@Override
public String toString() {
String sql = "";

sql = "INSERT INTO ";
sql += table + " ";
sql += ((columns != null) ? PlainSelect.getStringList(columns, true, true) + " " : "");

if (useValues) {
sql += "VALUES " + itemsList + "";
} else {
sql += "" + itemsList + "";
}

if (isReturningAllColumns())
sql += " RETURNING *";
else if (getReturningExpressionList()!=null) {
sql+= " RETURNING " + PlainSelect.getStringList(getReturningExpressionList(), true, false);
public Select getSelect() {
return select;
}

public void setSelect(Select select) {
this.select = select;
}

public boolean isUseSelectBrackets() {
return useSelectBrackets;
}

public void setUseSelectBrackets(boolean useSelectBrackets) {
this.useSelectBrackets = useSelectBrackets;
}

@Override
public String toString() {
StringBuilder sql = new StringBuilder();

sql.append("INSERT INTO ");
sql.append(table).append(" ");
if (columns != null) {
sql.append(PlainSelect.getStringList(columns, true, true)).append(" ");
}

if (useValues) {
sql.append("VALUES ");
}

return sql;
}
if (itemsList != null) {
sql.append(itemsList);
}

if (useSelectBrackets) {
sql.append("(");
}
if (select != null) {
sql.append(select);
}
if (useSelectBrackets) {
sql.append(")");
}

if (isReturningAllColumns()) {
sql.append(" RETURNING *");
} else if (getReturningExpressionList() != null) {
sql.append(" RETURNING ").append(PlainSelect.getStringList(getReturningExpressionList(), true, false));
}

return sql.toString();
}
}
Loading

0 comments on commit a4de602

Please sign in to comment.