Search in sources :

Example 1 with OracleDialect

use of mondrian.spi.impl.OracleDialect in project mondrian by pentaho.

the class DialectTest method testOracleTypeMapQuirks.

public void testOracleTypeMapQuirks() throws SQLException {
    MockResultSetMetadata mockResultSetMeta = new MockResultSetMetadata();
    Dialect oracleDialect = new OracleDialect();
    assertTrue("Oracle dialect NUMERIC type with 0 precision, 0 scale should map " + "to INT, unless column starts with 'm'", oracleDialect.getType(mockResultSetMeta.withColumnName("c0").withColumnType(Types.NUMERIC).withPrecision(0).withScale(0).build(), 0) == SqlStatement.Type.INT);
    assertTrue("Oracle dialect NUMERIC type with non-zero precision, -127 scale " + " should map to DOUBLE.  MONDRIAN-1044", oracleDialect.getType(mockResultSetMeta.withColumnName("c0").withColumnType(Types.NUMERIC).withPrecision(5).withScale(-127).build(), 0) == SqlStatement.Type.DOUBLE);
    assertTrue("Oracle dialect NUMERIC type with precision less than 10, 0 scale " + " should map to INT. ", oracleDialect.getType(mockResultSetMeta.withColumnName("c0").withColumnType(Types.NUMERIC).withPrecision(9).withScale(0).build(), 0) == SqlStatement.Type.INT);
    assertTrue("Oracle dialect NUMERIC type with precision = 38, scale = 0" + " should map to INT.  38 is a magic number in Oracle " + " for integers of unspecified precision.", oracleDialect.getType(mockResultSetMeta.withColumnName("c0").withColumnType(Types.NUMERIC).withPrecision(38).withScale(0).build(), 0) == SqlStatement.Type.INT);
    assertTrue("Oracle dialect DECIMAL type with precision > 9, scale = 0" + " should map to DOUBLE (unless magic #38)", oracleDialect.getType(mockResultSetMeta.withColumnName("c0").withColumnType(Types.NUMERIC).withPrecision(20).withScale(0).build(), 0) == SqlStatement.Type.DOUBLE);
    assertTrue("Oracle dialect NUMBER type with precision =0 , scale = -127" + " should map to INT.  GROUPING SETS queries can shift" + " scale for columns to -127, whether INT or other NUMERIC." + " Assume INT unless the column name indicates it is a measure.", oracleDialect.getType(mockResultSetMeta.withColumnName("c0").withColumnType(Types.NUMERIC).withPrecision(0).withScale(-127).build(), 0) == SqlStatement.Type.INT);
    assertTrue("Oracle dialect NUMBER type with precision =0 , scale = -127" + " should map to OBJECT if measure name starts with 'm'", oracleDialect.getType(mockResultSetMeta.withColumnName("m0").withColumnType(Types.NUMERIC).withPrecision(0).withScale(-127).build(), 0) == SqlStatement.Type.OBJECT);
}
Also used : OracleDialect(mondrian.spi.impl.OracleDialect) GoogleBigQueryDialect(mondrian.spi.impl.GoogleBigQueryDialect) MicrosoftSqlServerDialect(mondrian.spi.impl.MicrosoftSqlServerDialect) MonetDbDialect(mondrian.spi.impl.MonetDbDialect) HiveDialect(mondrian.spi.impl.HiveDialect) InfobrightDialect(mondrian.spi.impl.InfobrightDialect) Dialect(mondrian.spi.Dialect) PostgreSqlDialect(mondrian.spi.impl.PostgreSqlDialect) NetezzaDialect(mondrian.spi.impl.NetezzaDialect) MariaDBDialect(mondrian.spi.impl.MariaDBDialect) OracleDialect(mondrian.spi.impl.OracleDialect) MySqlDialect(mondrian.spi.impl.MySqlDialect) VectorwiseDialect(mondrian.spi.impl.VectorwiseDialect) NuoDbDialect(mondrian.spi.impl.NuoDbDialect)

Aggregations

Dialect (mondrian.spi.Dialect)1 GoogleBigQueryDialect (mondrian.spi.impl.GoogleBigQueryDialect)1 HiveDialect (mondrian.spi.impl.HiveDialect)1 InfobrightDialect (mondrian.spi.impl.InfobrightDialect)1 MariaDBDialect (mondrian.spi.impl.MariaDBDialect)1 MicrosoftSqlServerDialect (mondrian.spi.impl.MicrosoftSqlServerDialect)1 MonetDbDialect (mondrian.spi.impl.MonetDbDialect)1 MySqlDialect (mondrian.spi.impl.MySqlDialect)1 NetezzaDialect (mondrian.spi.impl.NetezzaDialect)1 NuoDbDialect (mondrian.spi.impl.NuoDbDialect)1 OracleDialect (mondrian.spi.impl.OracleDialect)1 PostgreSqlDialect (mondrian.spi.impl.PostgreSqlDialect)1 VectorwiseDialect (mondrian.spi.impl.VectorwiseDialect)1