private void validateGroupNodeItem(GroupObjectNode node) { Set<String> catalog = New.hashSet(); Set<String> schema = New.hashSet(); for (ObjectNode objectNode : node.getItems()) { catalog.add(objectNode.getCatalog()); schema.add(objectNode.getSchema()); } if (catalog.size() > 1) { throw new IllegalStateException("Inconsistent object node catalog " + catalog); } if (schema.size() > 1) { throw new IllegalStateException("Inconsistent object node schema " + schema); } node.setCatalog(catalog.iterator().next()); node.setSchema(schema.iterator().next()); }
GroupObjectNode dbnode = (GroupObjectNode)group[dbindex]; for (Integer tblindex : tableSelect) { selectNode.add(dbnode.getItems()[tblindex]);
@Override public SQLTranslated translate(Column[] searchColumns, TableFilter filter, GroupObjectNode node) { ObjectNode[] items = node.getItems(); List<Value> params = New.arrayList(10 * items.length); StatementBuilder sql = new StatementBuilder(100 * items.length); for (ObjectNode objectNode : items) { SQLTranslated translated = translate(searchColumns, filter, objectNode); sql.appendExceptFirst(" UNION ALL "); sql.append(StringUtils.enclose(translated.sql)); params.addAll(translated.params); } return SQLTranslated.build().sql(sql.toString()).sqlParams(params); }
@Override public SQLTranslated translate(Select select, GroupObjectNode node, Map<ObjectNode, Map<TableFilter, ObjectNode>> consistencyTableNodes,Expression[] selectCols, Integer limit, Integer offset) { ObjectNode[] items = node.getItems(); List<Value> params = New.arrayList(10 * items.length); StatementBuilder sql = new StatementBuilder(100 * items.length); for (ObjectNode objectNode : items) { SQLTranslated translated = translate(select, objectNode, consistencyTableNodes,selectCols, limit, offset); sql.appendExceptFirst(" UNION ALL "); sql.append(StringUtils.enclose(translated.sql)); params.addAll(translated.params); } return SQLTranslated.build().sql(sql.toString()).sqlParams(params); }