public void setComponentType(Class<?> baseType) { if (baseType != null) { this.type = DataTypeManager.getArrayType(baseType); } else { this.type = null; } }
public void setComponentType(Class<?> baseType) { if (baseType != null) { this.type = DataTypeManager.getArrayType(baseType); } else { this.type = null; } }
public void setComponentType(Class<?> baseType) { if (baseType != null) { this.type = DataTypeManager.getArrayType(baseType); } else { this.type = null; } }
@Override public Class<?> getOutputType(AggregateSymbol function) { return DataTypeManager.getArrayType(DataTypeManager.DefaultDataClasses.OBJECT); }
@Override public Class<?> getOutputType(AggregateSymbol function) { return DataTypeManager.getArrayType(DataTypeManager.DefaultDataClasses.OBJECT); }
@Override public Class<?> getType() { return DataTypeManager.getArrayType(baseType); }
@Override public Class<?> getOutputType(AggregateSymbol function) { return DataTypeManager.getArrayType(DataTypeManager.DefaultDataClasses.INTEGER); }
@Override public Class<?> getOutputType(AggregateSymbol function) { return DataTypeManager.getArrayType(DataTypeManager.DefaultDataClasses.INTEGER); }
/** * Construct a constant with a value, which may be null. The data type * is determined automatically from the type of the value. * @param value Constant value, may be null */ public Constant(Object value) { this.value = value; if (this.value == null) { this.type = DataTypeManager.DefaultDataClasses.NULL; } else { this.type = this.value.getClass(); Class<?> originalType = type; while (type.isArray() && !type.getComponentType().isPrimitive()) { type = type.getComponentType(); } if (DataTypeManager.getAllDataTypeClasses().contains(type)) { //array of a runtime-type this.type = originalType; } else if (originalType.isArray() && !originalType.getComponentType().isPrimitive()) { this.type = DataTypeManager.getArrayType(DataTypeManager.DefaultDataClasses.OBJECT); } else { this.type = DataTypeManager.DefaultDataClasses.OBJECT; } } }
/** * Get data type class. * <br/>IMPORTANT: only valid for default runtime types * * @param name * Data type name * @return Data type class */ public static Class<?> getDataTypeClass(String name) { if (name == null) { return DefaultDataClasses.NULL; } // Hope this is the correct case (as it will be if using the constants Class<?> dataTypeClass = dataTypeNames.get(name); // If that fails, do a lower case to make sure we match if (dataTypeClass == null) { dataTypeClass = dataTypeNames.get(name.toLowerCase()); } if (dataTypeClass == null) { if (isArrayType(name)) { return getArrayType(getDataTypeClass(name.substring(0, name.length() - 2))); } dataTypeClass = DefaultDataClasses.OBJECT; } return dataTypeClass; }
@Override public Class<?> getDataTypeClass(String typeOrDomainName) throws QueryMetadataException { if (typeOrDomainName == null) { return DefaultDataClasses.NULL; } Datatype type = store.getDatatypes().get(typeOrDomainName); if (type != null) { return DataTypeManager.getDataTypeClass(type.getRuntimeTypeName()); } if (DataTypeManager.isArrayType(typeOrDomainName)) { return DataTypeManager.getArrayType(getDataTypeClass(typeOrDomainName.substring(0, typeOrDomainName.length() - 2))); } throw new QueryMetadataException(QueryPlugin.Event.TEIID31254, QueryPlugin.Util.gs(QueryPlugin.Event.TEIID31254, typeOrDomainName)); }
@Override public Class<?> getDataTypeClass(String typeOrDomainName) throws QueryMetadataException { if (typeOrDomainName == null) { return DefaultDataClasses.NULL; } Datatype type = store.getDatatypes().get(typeOrDomainName); if (type != null) { return DataTypeManager.getDataTypeClass(type.getRuntimeTypeName()); } if (DataTypeManager.isArrayType(typeOrDomainName)) { return DataTypeManager.getArrayType(getDataTypeClass(typeOrDomainName.substring(0, typeOrDomainName.length() - 2))); } throw new QueryMetadataException(QueryPlugin.Event.TEIID31254, QueryPlugin.Util.gs(QueryPlugin.Event.TEIID31254, typeOrDomainName)); }
@Override public Class<?> getDataTypeClass(String typeOrDomainName) throws QueryMetadataException { if (typeOrDomainName == null) { return DefaultDataClasses.NULL; } Datatype type = store.getDatatypes().get(typeOrDomainName); if (type != null) { return DataTypeManager.getDataTypeClass(type.getRuntimeTypeName()); } if (DataTypeManager.isArrayType(typeOrDomainName)) { return DataTypeManager.getArrayType(getDataTypeClass(typeOrDomainName.substring(0, typeOrDomainName.length() - 2))); } throw new QueryMetadataException(QueryPlugin.Event.TEIID31254, QueryPlugin.Util.gs(QueryPlugin.Event.TEIID31254, typeOrDomainName)); }
@Test public void testArrayCompare() { Constant c = new Constant(new ArrayImpl(new Integer[0])); assertEquals(DataTypeManager.getArrayType(DefaultDataClasses.OBJECT), c.getType()); }
@Test public void testArrayImplType() { Constant c = new Constant(new ArrayImpl(new Integer[0])); assertEquals(DataTypeManager.getArrayType(DefaultDataClasses.OBJECT), c.getType()); }
@Test public void testJDBCSQLTypeInfo() { Set<String> types = JDBCSQLTypeInfo.getMMTypeNames(); for (String type : types) { assertEquals("Didn't get match for "+ type, JDBCSQLTypeInfo.getSQLType(type), JDBCSQLTypeInfo.getSQLTypeFromRuntimeType(DataTypeManager.getDataTypeClass(type))); //$NON-NLS-1$ //the classnames will not match the runtime types for xml, clob, blob if (!type.equalsIgnoreCase(DataTypeManager.DefaultDataTypes.NULL) && !type.equalsIgnoreCase(DataTypeManager.DefaultDataTypes.VARBINARY) && !type.equalsIgnoreCase(DataTypeManager.DefaultDataTypes.XML) && !type.equalsIgnoreCase(DataTypeManager.DefaultDataTypes.CLOB) && !type.equalsIgnoreCase(DataTypeManager.DefaultDataTypes.BLOB) && !type.equalsIgnoreCase(DataTypeManager.DefaultDataTypes.JSON)) { assertEquals("Didn't get match for "+ type, JDBCSQLTypeInfo.getSQLType(type), JDBCSQLTypeInfo.getSQLTypeFromClass(DataTypeManager.getDataTypeClass(type).getName())); //$NON-NLS-1$ } } assertEquals(Types.TIMESTAMP, JDBCSQLTypeInfo.getSQLTypeFromRuntimeType(DataTypeManager.DefaultDataClasses.TIMESTAMP)); assertEquals(Types.SQLXML, JDBCSQLTypeInfo.getSQLTypeFromRuntimeType(DataTypeManager.DefaultDataClasses.XML)); assertEquals(DataTypeManager.DefaultDataTypes.STRING, JDBCSQLTypeInfo.getTypeName(Types.CHAR)); assertEquals(Types.CHAR, JDBCSQLTypeInfo.getSQLTypeFromRuntimeType(DataTypeManager.DefaultDataClasses.CHAR)); assertEquals(Types.ARRAY, JDBCSQLTypeInfo.getSQLType(DataTypeManager.getDataTypeName(DataTypeManager.getArrayType(DataTypeManager.DefaultDataClasses.BIG_DECIMAL)))); }
private Table add_pg_constraint() { Table t = createView("pg_constraint"); //$NON-NLS-1$ addColumn("oid", DataTypeManager.DefaultDataTypes.INTEGER, t); //$NON-NLS-1$ addColumn("conname", DataTypeManager.DefaultDataTypes.STRING, t); //$NON-NLS-1$ addColumn("connamespace", DataTypeManager.DefaultDataTypes.INTEGER, t); //$NON-NLS-1$ addColumn("contype", DataTypeManager.DefaultDataTypes.STRING, t); //$NON-NLS-1$ addColumn("condeferrable", DataTypeManager.DefaultDataTypes.BOOLEAN, t); //$NON-NLS-1$ addColumn("condeferred", DataTypeManager.DefaultDataTypes.BOOLEAN, t); //$NON-NLS-1$ addColumn("consrc", DataTypeManager.DefaultDataTypes.STRING, t); //$NON-NLS-1$ addColumn("conrelid", DataTypeManager.DefaultDataTypes.INTEGER, t); //$NON-NLS-1$ addColumn("confrelid", DataTypeManager.DefaultDataTypes.INTEGER, t); //$NON-NLS-1$ addColumn("conkey", DataTypeManager.getDataTypeName(DataTypeManager.getArrayType(DataTypeManager.DefaultDataClasses.SHORT)), t); //$NON-NLS-1$ String transformation = "SELECT pg_catalog.getOid(UID) as oid, name as conname, pg_catalog.getOid(SchemaUID), " //$NON-NLS-1$ + "lower(left(Type, 1)) as contype, false as condeferrable, " //$NON-NLS-1$ + "false as condeferred, null as consrc, " //$NON-NLS-1$ + "pg_catalog.getOid(TableUID) as conrelid, pg_catalog.getOid(RefTableUID) as confrelid, " //$NON-NLS-1$ + "ColPositions as conkey " + //$NON-NLS-1$ "FROM Sys.Keys WHERE Type in ('Primary', 'Unique', 'Foreign')"; //$NON-NLS-1$ t.setSelectTransformation(transformation); return t; }
@Override public void loadMetadata(MetadataFactory factory, ExecutionFactory executionFactory, Object connectionFactory) throws TranslatorException { if (executionFactory != null && executionFactory.supportsDirectQueryProcedure() && factory.getSchema().getProcedure(executionFactory.getDirectQueryProcedureName()) == null) { Procedure p = factory.addProcedure(executionFactory.getDirectQueryProcedureName()); p.setAnnotation("Invokes translator with a native query that returns results in an array of values"); //$NON-NLS-1$ ProcedureParameter param = factory.addProcedureParameter("request", TypeFacility.RUNTIME_NAMES.STRING, Type.In, p); //$NON-NLS-1$ param.setAnnotation("The native query to execute"); //$NON-NLS-1$ param.setNullType(NullType.No_Nulls); param = factory.addProcedureParameter("variable", TypeFacility.RUNTIME_NAMES.OBJECT, Type.In, p); //$NON-NLS-1$ param.setAnnotation("Any number of varaibles; usage will vary by translator"); //$NON-NLS-1$ param.setNullType(NullType.Nullable); param.setVarArg(true); factory.addProcedureResultSetColumn("tuple", DataTypeManager.getDataTypeName(DataTypeManager.getArrayType(TypeFacility.RUNTIME_TYPES.OBJECT)), p); //$NON-NLS-1$ } } }
@Override public void loadMetadata(MetadataFactory factory, ExecutionFactory executionFactory, Object connectionFactory) throws TranslatorException { if (executionFactory != null && executionFactory.supportsDirectQueryProcedure() && factory.getSchema().getProcedure(executionFactory.getDirectQueryProcedureName()) == null) { Procedure p = factory.addProcedure(executionFactory.getDirectQueryProcedureName()); p.setAnnotation("Invokes translator with a native query that returns results in an array of values"); //$NON-NLS-1$ ProcedureParameter param = factory.addProcedureParameter("request", TypeFacility.RUNTIME_NAMES.STRING, Type.In, p); //$NON-NLS-1$ param.setAnnotation("The native query to execute"); //$NON-NLS-1$ param.setNullType(NullType.No_Nulls); param = factory.addProcedureParameter("variable", TypeFacility.RUNTIME_NAMES.OBJECT, Type.In, p); //$NON-NLS-1$ param.setAnnotation("Any number of varaibles; usage will vary by translator"); //$NON-NLS-1$ param.setNullType(NullType.Nullable); param.setVarArg(true); factory.addProcedureResultSetColumn("tuple", DataTypeManager.getDataTypeName(DataTypeManager.getArrayType(TypeFacility.RUNTIME_TYPES.OBJECT)), p); //$NON-NLS-1$ } } }
@Override public void loadMetadata(MetadataFactory factory, ExecutionFactory executionFactory, Object connectionFactory) throws TranslatorException { if (executionFactory != null && executionFactory.supportsDirectQueryProcedure() && factory.getSchema().getProcedure(executionFactory.getDirectQueryProcedureName()) == null) { Procedure p = factory.addProcedure(executionFactory.getDirectQueryProcedureName()); p.setAnnotation("Invokes translator with a native query that returns results in an array of values"); //$NON-NLS-1$ ProcedureParameter param = factory.addProcedureParameter("request", TypeFacility.RUNTIME_NAMES.STRING, Type.In, p); //$NON-NLS-1$ param.setAnnotation("The native query to execute"); //$NON-NLS-1$ param.setNullType(NullType.No_Nulls); param = factory.addProcedureParameter("variable", TypeFacility.RUNTIME_NAMES.OBJECT, Type.In, p); //$NON-NLS-1$ param.setAnnotation("Any number of varaibles; usage will vary by translator"); //$NON-NLS-1$ param.setNullType(NullType.Nullable); param.setVarArg(true); factory.addProcedureResultSetColumn("tuple", DataTypeManager.getDataTypeName(DataTypeManager.getArrayType(TypeFacility.RUNTIME_TYPES.OBJECT)), p); //$NON-NLS-1$ } } }