if (plainSelect.getDistinct() != null) { buffer.append("DISTINCT "); if (plainSelect.getDistinct().getOnSelectItems() != null) { buffer.append("ON ("); for (Iterator iter = plainSelect.getDistinct().getOnSelectItems().iterator(); iter.hasNext();) { SelectItem selectItem = (SelectItem) iter.next(); selectItem.accept(this);
case K_DISTINCT: jj_consume_token(K_DISTINCT); Distinct distinct = new Distinct(); plainSelect.setDistinct(distinct); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case K_ON: jj_consume_token(79); distinctOn = SelectItemsList(); plainSelect.getDistinct().setOnSelectItems(distinctOn); jj_consume_token(80); break;
if (plainSelect.getDistinct().isUseUnique()) { buffer.append("UNIQUE "); } else { buffer.append("DISTINCT "); if (plainSelect.getDistinct().getOnSelectItems() != null) { buffer.append("ON ("); for (Iterator<SelectItem> iter = plainSelect.getDistinct().getOnSelectItems(). iterator(); iter.hasNext();) { SelectItem selectItem = iter.next();
Distinct distinct = new Distinct(); plainSelect.setDistinct(distinct); if (tk.specialToken != null) { distinct.setComment(tk.specialToken.image); tk = jj_consume_token(K_ON); if (tk.specialToken != null) { distinct.setCommentOn(tk.specialToken.image); distinct.setCommentBeginBracket(tk.specialToken.image); plainSelect.getDistinct().setOnSelectItems(distinctOn); plainSelect.getDistinct().setCommentsComma(commentCommaDistinct); tk = jj_consume_token(RPAREN); if (tk.specialToken != null) { distinct.setCommentEndBracket(tk.specialToken.image);
buffer.append(aPlainSelect.getDistinct().getComment() != null ? aPlainSelect.getDistinct().getComment() + " " + ExpressionDeParser.LINE_SEPARATOR : "").append("Distinct "); if (aPlainSelect.getDistinct().getOnSelectItems() != null) { buffer.append(aPlainSelect.getDistinct().getCommentOn() != null ? aPlainSelect.getDistinct().getCommentOn() + " " + ExpressionDeParser.LINE_SEPARATOR : "").append("on") .append(aPlainSelect.getDistinct().getCommentBeginBracket() != null ? " " + aPlainSelect.getDistinct().getCommentBeginBracket() + ExpressionDeParser.LINE_SEPARATOR : "").append(" ("); for (int i = 0; i < aPlainSelect.getDistinct().getOnSelectItems().size(); i++) { SelectItem selectItem = (SelectItem) aPlainSelect.getDistinct().getOnSelectItems().get(i); selectItem.accept(this); if (i < aPlainSelect.getDistinct().getOnSelectItems().size() - 1) { buffer.append(!"".equals(aPlainSelect.getDistinct().getCommentsComma().get(i)) ? " " + aPlainSelect.getDistinct().getCommentsComma().get(i) + ExpressionDeParser.LINE_SEPARATOR : "") .append(", "); buffer.append(aPlainSelect.getDistinct().getCommentEndBracket() != null ? aPlainSelect.getDistinct().getCommentEndBracket() + " " + ExpressionDeParser.LINE_SEPARATOR : "").append(") ");
/** The query for obtaining values of parameters is almost the same with the original source query, except that we only need to distinct project the columns needed for the template expansion */ private static String getTemplateValuesQuery(String sql, List<SelectExpressionItem> templateColumns) throws JSQLParserException { Select select = (Select)CCJSqlParserUtil.parse(sql); PlainSelect plainSelect = (PlainSelect)select.getSelectBody(); plainSelect.setDistinct(new Distinct()); plainSelect.setSelectItems(ImmutableList.copyOf(templateColumns)); // SelectExpressionItem -> SelectItem return select.toString(); }
@Override public String toString() { String sql = (getComment() != null ? getComment()+" " : "")+"DISTINCT"; if (onSelectItems != null && onSelectItems.size() > 0) { sql += (getCommentOn() != null ? " "+getCommentOn() : "") + " ON " + (getCommentBeginBracket() != null ? getCommentBeginBracket()+" " : "") + PlainSelect.getStringListWithCommaComment(onSelectItems, commentsComma, true, true, commentEndBracket); } return sql; }
if (plainSelect.getDistinct().isUseUnique()) { buffer.append("UNIQUE "); } else { buffer.append("DISTINCT "); if (plainSelect.getDistinct().getOnSelectItems() != null) { buffer.append("ON ("); for (Iterator<SelectItem> iter = plainSelect.getDistinct().getOnSelectItems(). iterator(); iter.hasNext();) { SelectItem selectItem = iter.next();
/** The query for obtaining values of parameters is almost the same with the original source query, except that we only need to distinct project the columns needed for the template expansion */ private static String getTemplateValuesQuery(String sql, List<SelectExpressionItem> templateColumns) throws JSQLParserException { Select select = (Select)CCJSqlParserUtil.parse(sql); PlainSelect plainSelect = (PlainSelect)select.getSelectBody(); plainSelect.setDistinct(new Distinct()); plainSelect.setSelectItems(ImmutableList.copyOf(templateColumns)); // SelectExpressionItem -> SelectItem return select.toString(); }
Distinct distinct = new Distinct(); plainSelect.setDistinct(distinct); switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case K_ON:{ jj_consume_token(198); distinctOn = SelectItemsList(); plainSelect.getDistinct().setOnSelectItems(distinctOn); jj_consume_token(200); break; Distinct distinct = new Distinct(true); plainSelect.setDistinct(distinct); break;
/** * Handle use of the DISTINCT construct. The implementation logs and visits explicit expressions (itself) in the optional * ON(...) since they are not part of the select list. */ @SuppressWarnings("unchecked") protected void handleDistinct(Distinct distinct) { log.debug("handleDistinct: " + distinct); List<SelectItem> onSelectItems = distinct.getOnSelectItems(); if (onSelectItems != null) for (SelectItem si : onSelectItems) { if (si != null) si.accept(this.expressionNavigator); } }
@Override public void visit(PlainSelect plainSelect) { if (proj.getType().equals("select distinct on")) { List<SelectItem> distinctList = new ArrayList<>(); for (SelectExpressionItem seItem : proj.getColumnList()) distinctList.add(seItem); Distinct distinct = new Distinct(); distinct.setOnSelectItems(distinctList); plainSelect.setDistinct(distinct); } else if (proj.getType().equals("select distinct")) { Distinct distinct = new Distinct(); plainSelect.setDistinct(distinct); plainSelect.getSelectItems().clear(); plainSelect.getSelectItems().addAll(proj.getColumnList()); } else { plainSelect.getSelectItems().clear(); List<SelectExpressionItem> columnList = proj.getColumnList(); if (!columnList.isEmpty()) { plainSelect.getSelectItems().addAll(columnList); } else { plainSelect.getSelectItems().add(new AllColumns()); } } }
@Override public void visit(PlainSelect plainSelect) { /* working with getProjection we visit the SelectItems and distinguish between select distinct, select distinct on, select all */ Distinct distinct = plainSelect.getDistinct(); if (distinct != null) { // for SELECT DISTINCT [ON (...)] if (distinct.getOnSelectItems() != null) { for(SelectItem item : distinct.getOnSelectItems()) item.accept(this); } } for (SelectItem item : plainSelect.getSelectItems()) item.accept(this); }
Distinct distinct = new Distinct(); plainSelect.setDistinct(distinct); switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case K_ON:{ jj_consume_token(79); distinctOn = SelectItemsList(); plainSelect.getDistinct().setOnSelectItems(distinctOn); jj_consume_token(80); break;
@Override public void visit(PlainSelect plainSelect) { // visit the SelectItems and distinguish between select distinct, // select distinct on, select all projection = new ProjectionJSQL(); Distinct distinct = plainSelect.getDistinct(); if (distinct != null) { // for SELECT DISTINCT [ON (...)] if (distinct.getOnSelectItems() != null) { bdistinctOn = true; for (SelectItem item : distinct.getOnSelectItems()) item.accept(this); bdistinctOn = false; } else projection.setType(ProjectionJSQL.SELECT_DISTINCT); } for (SelectItem item : plainSelect.getSelectItems()) item.accept(this); }
Distinct distinct = new Distinct(); plainSelect.setDistinct(distinct); switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case K_ON:{ jj_consume_token(195); distinctOn = SelectItemsList(); plainSelect.getDistinct().setOnSelectItems(distinctOn); jj_consume_token(197); break; Distinct distinct = new Distinct(true); plainSelect.setDistinct(distinct); break;
if (plainSelect.getDistinct() != null) { buffer.append("DISTINCT "); if (plainSelect.getDistinct().getOnSelectItems() != null) { buffer.append("ON ("); for (Iterator iter = plainSelect.getDistinct().getOnSelectItems().iterator(); iter.hasNext();) { SelectItem selectItem = (SelectItem) iter.next(); selectItem.accept(this);
if (plainSelect.getDistinct().getOnSelectItems() != null) { buffer.append("ON ("); for (Iterator iter = plainSelect.getDistinct().getOnSelectItems().iterator(); iter.hasNext();) { SelectItem selectItem = (SelectItem) iter.next(); selectItem.accept(this);
@Override public void visit(PlainSelect plainSelect) { if (plainSelect.getDistinct() != null && plainSelect.getDistinct().getOnSelectItems() != null) { plainSelect.getDistinct().getOnSelectItems().forEach(s -> s.accept(this));