@Override public List<?> translate(Function function) { function.setName("log"); //$NON-NLS-1$ List<Expression> args = function.getParameters(); args.add(args.get(0)); args.set(0, languageFactory.createLiteral(new Integer(10), TypeFacility.RUNTIME_TYPES.INTEGER)); return null; }
@Override public List<?> translate(Function function) { function.setName("log"); //$NON-NLS-1$ List<Expression> args = function.getParameters(); args.add(args.get(0)); args.set(0, languageFactory.createLiteral(new Integer(10), TypeFacility.RUNTIME_TYPES.INTEGER)); return null; }
@Override public List<?> translate(Function function) { List<Expression> args = function.getParameters(); Function func = langFactory.createFunction("TO_CHAR", //$NON-NLS-1$ Arrays.asList( args.get(0), langFactory.createLiteral(format, TypeFacility.RUNTIME_TYPES.STRING)), TypeFacility.RUNTIME_TYPES.STRING); // For some reason, these values have trailing spaces Function trimFunc = langFactory.createFunction(SourceSystemFunctions.RTRIM, Arrays.asList( func ), TypeFacility.RUNTIME_TYPES.STRING); return Arrays.asList(trimFunc); } }
/** * IMPORTANT: only for use with default runtime type names * @param langFactory * @param expr * @param typeName * @return */ public static Function createConvertFunction(LanguageFactory langFactory, Expression expr, String typeName) { Class<?> type = TypeFacility.getDataTypeClass(typeName); return langFactory.createFunction(SourceSystemFunctions.CONVERT, new Expression[] {expr, langFactory.createLiteral(typeName, type)}, type); }
@Override public List<?> translate(Function function) { List<Expression> args = function.getParameters(); ArrayList<Object> target = new ArrayList<Object>(); if (function.getName().equalsIgnoreCase("left")) { //$NON-NLS-1$ //substr(string, 1, length) target.add("substr("); //$NON-NLS-1$ target.add(args.get(0)); target.add(","); //$NON-NLS-1$ target.add(langFactory.createLiteral(Integer.valueOf(1), TypeFacility.RUNTIME_TYPES.INTEGER)); target.add(","); //$NON-NLS-1$ target.add(args.get(1)); target.add(")"); //$NON-NLS-1$ } else if (function.getName().equalsIgnoreCase("right")) { //$NON-NLS-1$ //substr(case_size, character_length(case_size) -4) target.add("substr("); //$NON-NLS-1$ target.add(args.get(0)); target.add(",(character_length("); //$NON-NLS-1$ target.add(args.get(0)); target.add(")-"); //$NON-NLS-1$ target.add(args.get(1)); target.add("+1))"); //$NON-NLS-1$ // offset for 1 based index } return target; } }
@Override public List<?> translate(Function function) { if (function.getParameters().size() == 2) { function.getParameters().add(getLanguageFactory().createLiteral(" ", TypeFacility.RUNTIME_TYPES.STRING)); //$NON-NLS-1$ } return null; } }
@Override public List<?> translate(Function function) { List<Expression> args = function.getParameters(); Function func = null; if (function.getName().equalsIgnoreCase("left")) { //$NON-NLS-1$ func = langFactory.createFunction(SourceSystemFunctions.SUBSTRING, Arrays.asList( args.get(0), langFactory.createLiteral(Integer.valueOf(1), TypeFacility.RUNTIME_TYPES.INTEGER), args.get(1)), String.class); } else if (function.getName().equalsIgnoreCase("right")) { //$NON-NLS-1$ Function negIndex = langFactory.createFunction("*", //$NON-NLS-1$ Arrays.asList(langFactory.createLiteral(Integer.valueOf(-1), TypeFacility.RUNTIME_TYPES.INTEGER), args.get(1)), Integer.class); func = langFactory.createFunction(SourceSystemFunctions.SUBSTRING, Arrays.asList( args.get(0), negIndex), String.class); } return Arrays.asList(func); } }
@Override public List<?> translate(Function function) { List<Expression> args = function.getParameters(); Expression north = args.get(1); Expression east = args.get(2); Expression west = args.get(3); Expression south = args.get(4); ArrayList<Expression> points = new ArrayList<Expression>(); points.add(new org.teiid.language.Array(TypeFacility.RUNTIME_TYPES.DOUBLE, Arrays.asList(west, north))); points.add(new org.teiid.language.Array(TypeFacility.RUNTIME_TYPES.DOUBLE, Arrays.asList(east, north))); points.add(new org.teiid.language.Array(TypeFacility.RUNTIME_TYPES.DOUBLE, Arrays.asList(east, south))); points.add(new org.teiid.language.Array(TypeFacility.RUNTIME_TYPES.DOUBLE, Arrays.asList(west, south))); points.add(new org.teiid.language.Array(TypeFacility.RUNTIME_TYPES.DOUBLE, Arrays.asList(west, north))); Expression coordinates = new org.teiid.language.Array(TypeFacility.RUNTIME_TYPES.DOUBLE, points); Function func = LanguageFactory.INSTANCE.createFunction(this.functionName, Arrays.asList(args.get(0), LanguageFactory.INSTANCE.createLiteral("Polygon", TypeFacility.RUNTIME_TYPES.STRING), //$NON-NLS-1$ coordinates ), Boolean.class); return Arrays.asList(func); } }
@Override public List<?> translate(Function function) { function.setName("$substr"); //$NON-NLS-1$ ArrayList<Expression> params = new ArrayList<Expression>(); params.add(function.getParameters().get(0)); // MongoDB is zero base index; Teiid is 1 based; params.add(LanguageFactory.INSTANCE.createFunction("-", new Expression[] { function.getParameters().get(1), LanguageFactory.INSTANCE.createLiteral(1, TypeFacility.RUNTIME_TYPES.INTEGER) }, TypeFacility.RUNTIME_TYPES.INTEGER)); if (function.getParameters().size() == 2) { function.getParameters().add(LanguageFactory.INSTANCE.createLiteral(DataTypeManager.MAX_STRING_LENGTH, TypeFacility.RUNTIME_TYPES.INTEGER)); } params.add(function.getParameters().get(2)); function.getParameters().clear(); function.getParameters().addAll(params); return null; } });
@Override public List<?> translate(Function function) { Literal intervalType = (Literal)function.getParameters().get(0); String interval = ((String)intervalType.getValue()).toUpperCase(); if (interval.equals(NonReserved.SQL_TSI_FRAC_SECOND)) { intervalType.setValue("MICROSECOND"); //$NON-NLS-1$ Expression[] args = new Expression[] {function.getParameters().get(1), getLanguageFactory().createLiteral(1000, TypeFacility.RUNTIME_TYPES.INTEGER)}; function.getParameters().set(1, getLanguageFactory().createFunction("/", args, TypeFacility.RUNTIME_TYPES.INTEGER)); //$NON-NLS-1$ } return null; } });
private Expression ensurePositiveStartIndex(Expression startIndex) { if (startIndex instanceof Literal) { Literal literal = (Literal)startIndex; if (literal.getValue() instanceof Integer && ((Integer)literal.getValue() < 1)) { literal.setValue(1); } } else { Comparison whenExpr = langFactory.createCompareCriteria( Operator.LT, startIndex, langFactory.createLiteral(1, Integer.class) ); Literal thenExpr = langFactory.createLiteral(1, Integer.class); startIndex = langFactory.createSearchedCaseExpression(Arrays.asList(langFactory.createSearchedWhenCondition(whenExpr, thenExpr)), startIndex, TypeFacility.RUNTIME_TYPES.INTEGER); } return startIndex; }
List<Condition> crits = new ArrayList<Condition>(); Literal nullValue = langFactory.createLiteral(null, TypeFacility.RUNTIME_TYPES.STRING); if (isNull(a)) { return Arrays.asList(nullValue);
public static void convertCrossJoinToInner(LanguageObject obj, LanguageFactory lf) { if (obj instanceof Join) { Join join = (Join)obj; if (join.getJoinType() == JoinType.CROSS_JOIN) { Literal one = lf.createLiteral(1, TypeFacility.RUNTIME_TYPES.INTEGER); join.setCondition(lf.createCompareCriteria(Operator.EQ, one, one)); join.setJoinType(JoinType.INNER_JOIN); } } }
/** * Translate GEOMETRY literal into an expression that will convert to database * geometry type. * * @param l * @return */ public List<?> translateGeometryLiteral(Literal l) { Literal srid = getLanguageFactory().createLiteral( ((AbstractGeospatialType) l.getValue()).getSrid(), Integer.class ); return createGeometryExpression(l, srid); }
/** * Translate GEOGRAPHY literal into an expression that will convert to database * geography type. * * @param l * @return */ public List<?> translateGeographyLiteral(Literal l) { Function geog = getLanguageFactory().createFunction( SourceSystemFunctions.ST_GEOGFROMWKB, new Expression[] { l }, TypeFacility.RUNTIME_TYPES.GEOGRAPHY); int sridVal = ((AbstractGeospatialType) l.getValue()).getSrid(); if (sridVal == GeographyType.DEFAULT_SRID) { return Arrays.asList(geog); } Literal srid = getLanguageFactory().createLiteral( sridVal, Integer.class); return createGeographyExpression(geog, srid); }
.append(JOIN) .append(Tokens.SPACE); Literal e1 = LanguageFactory.INSTANCE.createLiteral(new Integer(1), Integer.class); Comparison criteria = new Comparison(e1, e1, Operator.EQ); condition = criteria;
new Expression[] {obj.getExpression(), postgreSQLExecutionFactory.getLanguageFactory().createLiteral(castType, TypeFacility.RUNTIME_TYPES.STRING)}, TypeFacility.RUNTIME_TYPES.STRING)); && nativeType.equalsIgnoreCase(PostgreSQLExecutionFactory.UUID_TYPE)) { obj.setExpression(postgreSQLExecutionFactory.getLanguageFactory().createFunction("cast", //$NON-NLS-1$ new Expression[] {obj.getExpression(), postgreSQLExecutionFactory.getLanguageFactory().createLiteral("varchar", TypeFacility.RUNTIME_TYPES.STRING)}, //$NON-NLS-1$ TypeFacility.RUNTIME_TYPES.STRING));