@Override public void visit(ColumnReference obj) { this.onGoingExpression.push(obj.getMetadataObject()); }
@Override public void visit(ColumnReference column) { AbstractMetadataRecord record = column.getMetadataObject(); if (record != null) { String name = record.getProperty(JPAMetadataProcessor.KEY_ASSOSIATED_WITH_FOREIGN_TABLE, false); if (name == null) { buffer.append(this.visitor.correlatedName.get(column.getTable().getMetadataObject().getName())).append(Tokens.DOT).append(column.getMetadataObject().getName()); } else { buffer.append(this.visitor.correlatedName.get(name)).append(Tokens.DOT).append(column.getMetadataObject().getName()); } } else { buffer.append(column.getName()); } } }
private ColumnReference createTempColumn(int i, Expression ex) { if (ex instanceof ColumnReference) { ColumnReference left = (ColumnReference)ex; return new ColumnReference(null, COL_PREFIX + i, left.getMetadataObject(), ex.getType()); } //just an expression - there's a lot of metadata lost here return new ColumnReference(null, COL_PREFIX + i, null, ex.getType()); }
public String getColumnName(ColumnReference obj) { String elemShortName = null; AbstractMetadataRecord elementID = obj.getMetadataObject(); if(elementID != null) { elemShortName = getRecordName(elementID); } else { elemShortName = obj.getName(); } return elemShortName; }
private boolean isFixedChar(Expression obj) { if (!isOracleSuppliedDriver() || !(obj instanceof ColumnReference)) { return false; } ColumnReference cr = (ColumnReference)obj; return (cr.getType() == TypeFacility.RUNTIME_TYPES.STRING || cr.getType() == TypeFacility.RUNTIME_TYPES.CHAR) && cr.getMetadataObject() != null && ("CHAR".equalsIgnoreCase(cr.getMetadataObject().getNativeType()) //$NON-NLS-1$ || "NCHAR".equalsIgnoreCase(cr.getMetadataObject().getNativeType())); //$NON-NLS-1$ }
@Override public void visit(ColumnReference obj) { AbstractMetadataRecord record = obj.getMetadataObject(); if (record != null) { String name = record.getProperty(JPAMetadataProcessor.KEY_ASSOSIATED_WITH_FOREIGN_TABLE, false); if (name != null) { try { Table t = this.metadata.getTable(name); String correlationName = obj.getTable().getCorrelationName(); String attrName = record.getProperty(JPAMetadataProcessor.RELATION_PROPERTY, false); String groupName = correlationName + Tokens.DOT + attrName; NamedTable nt = this.implicitGroups.get(groupName); if (nt == null) { nt = new NamedTable(groupName, "J_"+this.aliasCounter.getAndIncrement(), t); this.implicitGroups.put(groupName, nt); //$NON-NLS-1$ } } catch (TranslatorException e) { exceptions.add(e); } } } }
ColumnReference translate(ElementSymbol symbol) { ColumnReference element = new ColumnReference(translate(symbol.getGroupSymbol()), Symbol.getShortName(symbol.getOutputName()), null, symbol.getType()); if (element.getTable().getMetadataObject() == null) { //handle procedure resultset columns if (symbol.getMetadataID() instanceof TempMetadataID) { TempMetadataID tid = (TempMetadataID)symbol.getMetadataID(); if (tid.getOriginalMetadataID() instanceof Column && !(((Column)tid.getOriginalMetadataID()).getParent() instanceof Table)) { element.setMetadataObject(metadataFactory.getElement(tid.getOriginalMetadataID())); } } return element; } Object mid = symbol.getMetadataID(); element.setMetadataObject(metadataFactory.getElement(mid)); return element; }
public String getCreateTempTableSQL(String name, List<ColumnReference> cols, boolean transactional) { SQLDialect d = getDialect(); StringBuilder sb = new StringBuilder(getCreateTemporaryTableString(transactional)).append(" "); //$NON-NLS-1$ sb.append(name).append(" ("); //$NON-NLS-1$ for (Iterator<ColumnReference> iter = cols.iterator(); iter.hasNext();) { ColumnReference col = iter.next(); sb.append(col.getName()); sb.append(" "); //$NON-NLS-1$ Integer defaultValue = JDBCSQLTypeInfo.getDefaultPrecision(col.getType()); int precision = defaultValue == null?255:defaultValue; int scale = col.getType() == TypeFacility.RUNTIME_TYPES.BIG_DECIMAL?2:0; long length = precision; if (col.getMetadataObject() != null) { precision = col.getMetadataObject().getPrecision(); scale = col.getMetadataObject().getScale(); length = col.getMetadataObject().getLength(); } sb.append(d.getTypeName(TypeFacility.getSQLTypeFromRuntimeType(col.getType()), length, precision, scale)); //sb.append(" NOT NULL"); -- needed if we will add an index if (iter.hasNext()) { sb.append(", "); //$NON-NLS-1$ } } sb.append(") "); if (getCreateTemporaryTablePostfix(transactional) != null) { sb.append(getCreateTemporaryTablePostfix(transactional)); } String sql = sb.toString(); return sql; }
private Object getRowValue(Expression obj) throws TranslatorException { if (!(obj instanceof ColumnReference)) { throw new TranslatorException(MongoDBPlugin.Util.gs(MongoDBPlugin.Event.TEIID18017)); } ColumnReference column = (ColumnReference)obj; Object value = null; if (MongoDBSelectVisitor.isPartOfPrimaryKey(column.getTable().getMetadataObject(), column.getName())) { // this is true one to many case value = this.row.get("_id"); //$NON-NLS-1$ if (value == null) { value = getValueFromRowInfo(column, value); } } if (value == null && MongoDBSelectVisitor.isPartOfForeignKey(column.getTable().getMetadataObject(), column.getName())) { value = getValueFromRowInfo(column, value); } if (value == null) { value = this.row.get(column.getName()); } if (value instanceof DBRef) { value = ((DBRef)value).getId(); } if (value instanceof DBObject) { value = ((DBObject) value).get(column.getName()); } return this.executionFactory.retrieveValue(value, column.getType(), this.mongoDB, column.getName(), column.getName()); }
@Override public void visit(Comparison obj) { // this for $cond in the select statement, and formatting of command for $cond vs $match is different if (this.processingDerivedColumn) { visitDerivedExpression(obj); return; } // this for the normal where clause ColumnDetail leftExprDetails = getExpressionAlias(obj.getLeftExpression()); append(obj.getRightExpression()); Object rightExpr = this.onGoingExpression.pop(); if (this.expressionMap.get(rightExpr) != null) { rightExpr = this.expressionMap.get(rightExpr).getProjectedName(); } QueryBuilder query = leftExprDetails.getQueryBuilder(); rightExpr = checkAndConvertToObjectId(obj.getLeftExpression(), obj.getRightExpression(), rightExpr); buildComparisionQuery(obj, rightExpr, query); if (leftExprDetails.partOfProject || obj.getLeftExpression() instanceof ColumnReference) { this.onGoingExpression.push(query.get()); } else { this.onGoingExpression.push(buildFunctionQuery(obj, (BasicDBObject)leftExprDetails.expression, rightExpr)); } if (obj.getLeftExpression() instanceof ColumnReference) { ColumnReference column = (ColumnReference)obj.getLeftExpression(); this.mongoDoc.updateReferenceColumnValue(column.getTable().getName(), column.getName(), rightExpr); } }
public ColumnReference createColumnReference(String name, NamedTable group, Column metadataReference, Class<?> type) { return new ColumnReference(group, name, metadataReference, type); }
/** * This is a utility method for a common use of this visitor, which is to collect * all groups used by all elements in an object tree. * @param type Language object type to look for * @param object Root of the language object tree * @return Set of IGroup */ public static Set<NamedTable> collectGroupsUsedByElements(LanguageObject object) { Set<NamedTable> groups = new HashSet<NamedTable>(); for (ColumnReference element : CollectorVisitor.collectElements(object)) { if(element.getTable() != null) { groups.add(element.getTable()); } } return groups; }
private boolean includeInPullCriteria(Expression expr) throws TranslatorException { if (!this.mongoDoc.isMerged()) { return false; } Collection<ColumnReference> columns = CollectorVisitor.collectElements(expr); for (ColumnReference column:columns) { if (this.mongoDoc.isPartOfForeignKey(column.getName())) { return false; } } return true; }
private void loadTempTable(List<ColumnReference> cols, List<Expression> params, String tableName, NamedTable table, List<? extends List<?>> vals) throws TranslatorException, SQLException { LogManager.logDetail(LogConstants.CTX_CONNECTOR, "loading temporary table", tableName, "with", vals.size(), "rows"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ ExpressionValueSource evs = new ExpressionValueSource(params); for (ColumnReference col : cols) { col.setMetadataObject(null); //we don't want to confuse the insert handling } Insert insert = new Insert(table, cols, evs); insert.setParameterValues(vals.iterator()); JDBCUpdateExecution ex = this.executionFactory.createUpdateExecution(insert, context, context.getRuntimeMetadata(), getConnection()); int size = this.executionFactory.getMaxDependentInPredicates() * this.executionFactory.getMaxInCriteriaSize() / cols.size(); ex.setMaxPreparedInsertBatchSize(Math.max(size, this.executionFactory.getMaxPreparedInsertBatchSize())); ex.setAtomic(false); ex.execute(); ex.statement.close(); this.executionFactory.loadedTemporaryTable(tableName, this.context, this.connection); }
public void testGetType() throws Exception { Object metadataID = TstLanguageBridgeFactory.metadata.getElementID("pm1.g1.e2"); //$NON-NLS-1$ assertTrue(example("pm1.g1", "e2", metadataID).getType().equals(Integer.class)); //$NON-NLS-1$ //$NON-NLS-2$ }
boolean useSelector = false; ColumnReference cr = (ColumnReference)expr; Column c = cr.getMetadataObject(); if (c != null) { if ("\"mode:properties\"".equalsIgnoreCase(c.getSourceName())) { //$NON-NLS-1$ NamedTable nt = ((ColumnReference)expr).getTable(); if (nt.getCorrelationName() != null) { objs.add(nt.getCorrelationName());
@Override public List<?> translate(LanguageObject obj, ExecutionContext context) { if (obj instanceof ColumnReference) { ColumnReference elem = (ColumnReference)obj; if (elem.getType() == TypeFacility.RUNTIME_TYPES.BOOLEAN && elem.getMetadataObject() != null && TINYINT.equalsIgnoreCase(elem.getMetadataObject().getNativeType())) { return Arrays.asList("case when ", elem, " is null then null when ", elem, " = -1 or ", elem, " > 0 then 1 else 0 end"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ } } return super.translate(obj, context); }
ColumnReference translate(ElementSymbol symbol) { ColumnReference element = new ColumnReference(translate(symbol.getGroupSymbol()), Symbol.getShortName(symbol.getOutputName()), null, symbol.getType()); if (element.getTable().getMetadataObject() == null) { //handle procedure resultset columns if (symbol.getMetadataID() instanceof TempMetadataID) { TempMetadataID tid = (TempMetadataID)symbol.getMetadataID(); if (tid.getOriginalMetadataID() instanceof Column && !(((Column)tid.getOriginalMetadataID()).getParent() instanceof Table)) { element.setMetadataObject(metadataFactory.getElement(tid.getOriginalMetadataID())); } } return element; } Object mid = symbol.getMetadataID(); element.setMetadataObject(metadataFactory.getElement(mid)); return element; }
public ColumnReference createElement(NamedTable group, String name) { return new ColumnReference(group, name, null, String.class); }