@SuppressWarnings("deprecation") @Test public void testDeprecatedItems() throws Exception { assertEquals( "'2016-08-11'", nativeMeta.getSQLValue(new ValueMetaDate("FOO"), new Date(116, 7, 11), "YYYY-MM-dd")); assertEquals( "\"FOO\".\"BAR\"", nativeMeta.getBackwardsCompatibleSchemaTableCombination("FOO", "BAR")); assertEquals( "\"null\".\"BAR\"", nativeMeta.getBackwardsCompatibleSchemaTableCombination( null, "BAR")); // not sure this is right ... assertEquals( "FOO\".\"BAR\"", nativeMeta.getBackwardsCompatibleSchemaTableCombination("FOO\"", "BAR")); assertEquals( "FOO\".BAR\"", nativeMeta.getBackwardsCompatibleSchemaTableCombination("FOO\"", "BAR\"")); assertEquals("\"FOO\"", nativeMeta.getBackwardsCompatibleTable("FOO")); assertEquals( "\"null\"", nativeMeta.getBackwardsCompatibleTable(null)); // not sure this should happen but it does assertEquals("FOO\"", nativeMeta.getBackwardsCompatibleTable("FOO\"")); assertEquals("\"FOO", nativeMeta.getBackwardsCompatibleTable("\"FOO")); }
@Test public void testDefaultSettings() throws Exception { // Note - this method should only use native or odbc. // The jndi meta is used for mutations of the meta, and it would // not be threadsafe in a multi-threaded testing environment // (each test run in its own thread). assertEquals(-1, nativeMeta.getDefaultDatabasePort()); assertTrue(nativeMeta.supportsSetCharacterStream()); assertTrue(nativeMeta.supportsAutoInc()); assertEquals("", nativeMeta.getLimitClause(5)); assertEquals(0, nativeMeta.getNotFoundTK(true)); assertEquals("", nativeMeta.getSQLNextSequenceValue("FOO")); assertEquals("", nativeMeta.getSQLCurrentSequenceValue("FOO")); assertEquals("", nativeMeta.getSQLSequenceExists("FOO")); assertTrue(nativeMeta.isFetchSizeSupported()); assertFalse(nativeMeta.needsPlaceHolder()); assertTrue(nativeMeta.supportsSchemas()); assertTrue(nativeMeta.supportsCatalogs()); assertTrue(nativeMeta.supportsEmptyTransactions()); assertEquals("SUM", nativeMeta.getFunctionSum()); assertEquals("AVG", nativeMeta.getFunctionAverage()); assertEquals("MIN", nativeMeta.getFunctionMinimum()); assertEquals("MAX", nativeMeta.getFunctionMaximum()); assertEquals("COUNT", nativeMeta.getFunctionCount()); assertEquals("\"", nativeMeta.getStartQuote()); assertEquals("\"", nativeMeta.getEndQuote()); assertEquals("FOO.BAR", nativeMeta.getSchemaTableCombination("FOO", "BAR")); assertEquals(DatabaseMeta.CLOB_LENGTH, nativeMeta.getMaxTextFieldLength()); assertEquals(DatabaseMeta.CLOB_LENGTH, nativeMeta.getMaxVARCHARLength()); assertTrue(nativeMeta.supportsTransactions()); assertFalse(nativeMeta.supportsSequences()); assertTrue(nativeMeta.supportsBitmapIndex()); assertTrue(nativeMeta.supportsSetLong()); assertArrayEquals(new String[] {}, nativeMeta.getReservedWords()); assertTrue(nativeMeta.quoteReservedWords()); assertFalse(nativeMeta.supportsRepository()); assertArrayEquals(new String[] {"TABLE"}, nativeMeta.getTableTypes()); assertArrayEquals(new String[] {"VIEW"}, nativeMeta.getViewTypes()); assertArrayEquals(new String[] {"SYNONYM"}, nativeMeta.getSynonymTypes()); assertFalse(nativeMeta.useSchemaNameForTableList()); assertTrue(nativeMeta.supportsViews()); assertFalse(nativeMeta.supportsSynonyms()); assertNull(nativeMeta.getSQLListOfProcedures()); assertNull(nativeMeta.getSQLListOfSequences()); assertTrue(nativeMeta.supportsFloatRoundingOnUpdate()); assertNull(nativeMeta.getSQLLockTables(new String[] {"FOO"})); assertNull(nativeMeta.getSQLUnlockTables(new String[] {"FOO"})); assertTrue(nativeMeta.supportsTimeStampToDateConversion()); assertTrue(nativeMeta.supportsBatchUpdates()); assertFalse(nativeMeta.supportsBooleanDataType()); assertFalse(nativeMeta.supportsTimestampDataType()); assertTrue(nativeMeta.preserveReservedCase()); assertTrue(nativeMeta.isDefaultingToUppercase()); Map<String, String> emptyMap = new HashMap<String, String>(); assertEquals(emptyMap, nativeMeta.getExtraOptions()); assertEquals(";", nativeMeta.getExtraOptionSeparator()); assertEquals("=", nativeMeta.getExtraOptionValueSeparator()); assertEquals(";", nativeMeta.getExtraOptionIndicator()); assertTrue(nativeMeta.supportsOptionsInURL()); assertNull(nativeMeta.getExtraOptionsHelpText()); assertTrue(nativeMeta.supportsGetBlob()); assertNull(nativeMeta.getConnectSQL()); assertTrue(nativeMeta.supportsSetMaxRows()); assertFalse(nativeMeta.isUsingConnectionPool()); assertEquals(ConnectionPoolUtil.defaultMaximumNrOfConnections, nativeMeta.getMaximumPoolSize()); assertEquals(ConnectionPoolUtil.defaultInitialNrOfConnections, nativeMeta.getInitialPoolSize()); assertFalse(nativeMeta.isPartitioned()); assertArrayEquals(new PartitionDatabaseMeta[0], nativeMeta.getPartitioningInformation()); Properties emptyProps = new Properties(); assertEquals(emptyProps, nativeMeta.getConnectionPoolingProperties()); assertTrue(nativeMeta.needsToLockAllTables()); assertTrue(nativeMeta.isStreamingResults()); assertFalse(nativeMeta.isQuoteAllFields()); assertFalse(nativeMeta.isForcingIdentifiersToLowerCase()); assertFalse(nativeMeta.isForcingIdentifiersToUpperCase()); assertFalse(nativeMeta.isUsingDoubleDecimalAsSchemaTableSeparator()); assertTrue(nativeMeta.isRequiringTransactionsOnQueries()); assertEquals( "org.pentaho.di.core.database.DatabaseFactory", nativeMeta.getDatabaseFactoryName()); assertNull(nativeMeta.getPreferredSchemaName()); assertFalse(nativeMeta.supportsSequenceNoMaxValueOption()); assertFalse(nativeMeta.requiresCreateTablePrimaryKeyAppend()); assertFalse(nativeMeta.requiresCastToVariousForIsNull()); assertFalse(nativeMeta.isDisplaySizeTwiceThePrecision()); assertTrue(nativeMeta.supportsPreparedStatementMetadataRetrieval()); assertFalse(nativeMeta.supportsResultSetMetadataRetrievalOnly()); assertFalse(nativeMeta.isSystemTable("FOO")); assertTrue(nativeMeta.supportsNewLinesInSQL()); assertNull(nativeMeta.getSQLListOfSchemas()); assertEquals(0, nativeMeta.getMaxColumnsInIndex()); assertTrue(nativeMeta.supportsErrorHandlingOnBatchUpdates()); assertTrue(nativeMeta.isExplorable()); assertNull(nativeMeta.getXulOverlayFile()); assertTrue(nativeMeta.onlySpaces(" \t \n \r ")); assertFalse(nativeMeta.isMySQLVariant()); assertTrue(nativeMeta.canTest()); assertTrue(nativeMeta.requiresName()); assertTrue(nativeMeta.releaseSavepoint()); Variables v = new Variables(); v.setVariable("FOOVARIABLE", "FOOVALUE"); DatabaseMeta dm = new DatabaseMeta(); dm.setDatabaseInterface(nativeMeta); assertEquals("", nativeMeta.getDataTablespaceDDL(v, dm)); assertEquals("", nativeMeta.getIndexTablespaceDDL(v, dm)); assertFalse(nativeMeta.useSafePoints()); assertTrue(nativeMeta.supportsErrorHandling()); assertEquals("'DATA'", nativeMeta.getSQLValue(new ValueMetaString("FOO"), "DATA", null)); assertEquals("'15'", nativeMeta.getSQLValue(new ValueMetaString("FOO"), "15", null)); assertEquals("_", nativeMeta.getFieldnameProtector()); assertEquals("_1ABC_123", nativeMeta.getSafeFieldname("1ABC 123")); BaseDatabaseMeta tmpSC = new ConcreteBaseDatabaseMeta() { @Override public String[] getReservedWords() { return new String[] {"SELECT"}; } }; assertEquals("SELECT_", tmpSC.getSafeFieldname("SELECT")); assertEquals("NOMAXVALUE", nativeMeta.getSequenceNoMaxValueOption()); assertTrue(nativeMeta.supportsAutoGeneratedKeys()); assertNull(nativeMeta.customizeValueFromSQLType(new ValueMetaString("FOO"), null, 0)); assertTrue(nativeMeta.fullExceptionLog(new RuntimeException("xxxx"))); }