Skip to content

Commit db91645

Browse files
committed
Fixing few test cases
1 parent c32352b commit db91645

File tree

2 files changed

+160
-10
lines changed

2 files changed

+160
-10
lines changed

presto-oracle/src/main/java/com/facebook/presto/plugin/oracle/OracleClient.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import com.facebook.presto.spi.PrestoException;
3030
import com.facebook.presto.spi.SchemaTableName;
3131
import jakarta.inject.Inject;
32+
import oracle.jdbc.OracleTypes;
3233

3334
import java.sql.Connection;
3435
import java.sql.DatabaseMetaData;
@@ -157,6 +158,7 @@ public Optional<ReadMapping> toPrestoType(ConnectorSession session, JdbcTypeHand
157158
return Optional.of(smallintReadMapping());
158159
case Types.FLOAT:
159160
case Types.DOUBLE:
161+
case OracleTypes.BINARY_DOUBLE:
160162
return Optional.of(doubleReadMapping());
161163
case Types.REAL:
162164
return Optional.of(realReadMapping());

presto-oracle/src/test/java/com/facebook/presto/plugin/oracle/TestOracleDistributedQueries.java

Lines changed: 158 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,17 @@
2121
import org.testng.annotations.Optional;
2222
import org.testng.annotations.Test;
2323

24+
import static com.facebook.presto.common.type.BigintType.BIGINT;
2425
import static com.facebook.presto.common.type.VarcharType.VARCHAR;
2526
import static com.facebook.presto.plugin.oracle.OracleQueryRunner.createOracleQueryRunner;
2627
import static com.facebook.presto.testing.MaterializedResult.resultBuilder;
2728
import static com.facebook.presto.testing.assertions.Assert.assertEquals;
29+
import static com.google.common.collect.Iterables.getOnlyElement;
2830
import static java.lang.String.format;
2931
import static java.util.stream.Collectors.joining;
3032
import static java.util.stream.IntStream.range;
3133
import static org.testng.Assert.assertFalse;
34+
import static org.testng.Assert.assertNull;
3235
import static org.testng.Assert.assertTrue;
3336

3437
public class TestOracleDistributedQueries
@@ -167,19 +170,164 @@ public void testShowColumns(@Optional("PARQUET") String storageFormat)
167170
{
168171
MaterializedResult actual = computeActual("SHOW COLUMNS FROM orders");
169172

170-
MaterializedResult expectedParametrizedVarchar = resultBuilder(getSession(), VARCHAR, VARCHAR, VARCHAR, VARCHAR)
171-
.row("orderkey", "bigint", "", "")
172-
.row("custkey", "bigint", "", "")
173-
.row("orderstatus", "varchar(1)", "", "")
174-
.row("totalprice", "double", "", "")
175-
.row("orderdate", "timestamp", "", "")
176-
.row("orderpriority", "varchar(15)", "", "")
177-
.row("clerk", "varchar(15)", "", "")
178-
.row("shippriority", "bigint", "", "")
179-
.row("comment", "varchar(79)", "", "")
173+
MaterializedResult expectedParametrizedVarchar = resultBuilder(getSession(), VARCHAR, VARCHAR, VARCHAR, VARCHAR, BIGINT, BIGINT, BIGINT)
174+
.row("orderkey", "bigint", "", "", 19L, null, null)
175+
.row("custkey", "bigint", "", "", 19L, null, null)
176+
.row("orderstatus", "varchar(1)", "", "", null, null, 1L)
177+
.row("totalprice", "double", "", "", 53L, null, null)
178+
.row("orderdate", "timestamp", "", "", null, null, null)
179+
.row("orderpriority", "varchar(15)", "", "", null, null, 15L)
180+
.row("clerk", "varchar(15)", "", "", null, null, 15L)
181+
.row("shippriority", "bigint", "", "", 19L, null, null)
182+
.row("comment", "varchar(79)", "", "", null, null, 79L)
180183
.build();
181184

182185
// Until we migrate all connectors to parametrized varchar we check two options
183186
assertEquals(actual, expectedParametrizedVarchar, format("%s does not matches %s", actual, expectedParametrizedVarchar));
184187
}
188+
189+
@Test
190+
@Override
191+
public void testNonAutoCommitTransactionWithCommit()
192+
{
193+
//Catalog oracle only supports writes using autocommit
194+
}
195+
196+
@Test
197+
@Override
198+
public void testNonAutoCommitTransactionWithRollback()
199+
{
200+
//Catalog oracle only supports writes using autocommit
201+
}
202+
203+
@Test
204+
@Override
205+
public void testDelete()
206+
{
207+
//This connector does not support deletes
208+
}
209+
210+
@Test
211+
@Override
212+
public void testAddColumn()
213+
{
214+
assertUpdate("CREATE TABLE test_add_column AS SELECT 123 x", 1);
215+
assertUpdate("CREATE TABLE test_add_column_a AS SELECT 234 x, 111 a", 1);
216+
assertUpdate("CREATE TABLE test_add_column_ab AS SELECT 345 x, 222 a, 33.3E0 b", 1);
217+
assertUpdate("CREATE TABLE test_add_column_abc AS SELECT 456 x, 333 a, 66.6E0 b, 'fourth' c", 1);
218+
219+
assertQueryFails("ALTER TABLE test_add_column ADD COLUMN x bigint", ".* Column 'x' already exists");
220+
assertQueryFails("ALTER TABLE test_add_column ADD COLUMN X bigint", ".* Column 'X' already exists");
221+
assertQueryFails("ALTER TABLE test_add_column ADD COLUMN q bad_type", ".* Unknown type 'bad_type' for column 'q'");
222+
223+
assertUpdate("ALTER TABLE test_add_column ADD COLUMN a bigint");
224+
assertUpdate("INSERT INTO test_add_column SELECT * FROM test_add_column_a", 1);
225+
MaterializedResult materializedRows = computeActual("SELECT x, a FROM test_add_column ORDER BY x");
226+
assertEquals(materializedRows.getMaterializedRows().get(0).getField(0), 123L);
227+
assertNull(materializedRows.getMaterializedRows().get(0).getField(1));
228+
assertEquals(materializedRows.getMaterializedRows().get(1).getField(0), 234L);
229+
assertEquals(materializedRows.getMaterializedRows().get(1).getField(1), 111L);
230+
231+
assertUpdate("ALTER TABLE test_add_column ADD COLUMN b double");
232+
assertUpdate("INSERT INTO test_add_column SELECT * FROM test_add_column_ab", 1);
233+
materializedRows = computeActual("SELECT x, a, b FROM test_add_column ORDER BY x");
234+
assertEquals(materializedRows.getMaterializedRows().get(0).getField(0), 123L);
235+
assertNull(materializedRows.getMaterializedRows().get(0).getField(1));
236+
assertNull(materializedRows.getMaterializedRows().get(0).getField(2));
237+
assertEquals(materializedRows.getMaterializedRows().get(1).getField(0), 234L);
238+
assertEquals(materializedRows.getMaterializedRows().get(1).getField(1), 111L);
239+
assertNull(materializedRows.getMaterializedRows().get(1).getField(2));
240+
assertEquals(materializedRows.getMaterializedRows().get(2).getField(0), 345L);
241+
assertEquals(materializedRows.getMaterializedRows().get(2).getField(1), 222L);
242+
assertEquals(materializedRows.getMaterializedRows().get(2).getField(2), 33.3);
243+
244+
assertUpdate("ALTER TABLE test_add_column ADD COLUMN IF NOT EXISTS c varchar");
245+
assertUpdate("ALTER TABLE test_add_column ADD COLUMN IF NOT EXISTS c varchar");
246+
assertUpdate("INSERT INTO test_add_column SELECT * FROM test_add_column_abc", 1);
247+
materializedRows = computeActual("SELECT x, a, b, c FROM test_add_column ORDER BY x");
248+
assertEquals(materializedRows.getMaterializedRows().get(0).getField(0), 123L);
249+
assertNull(materializedRows.getMaterializedRows().get(0).getField(1));
250+
assertNull(materializedRows.getMaterializedRows().get(0).getField(2));
251+
assertNull(materializedRows.getMaterializedRows().get(0).getField(3));
252+
assertEquals(materializedRows.getMaterializedRows().get(1).getField(0), 234L);
253+
assertEquals(materializedRows.getMaterializedRows().get(1).getField(1), 111L);
254+
assertNull(materializedRows.getMaterializedRows().get(1).getField(2));
255+
assertNull(materializedRows.getMaterializedRows().get(1).getField(3));
256+
assertEquals(materializedRows.getMaterializedRows().get(2).getField(0), 345L);
257+
assertEquals(materializedRows.getMaterializedRows().get(2).getField(1), 222L);
258+
assertEquals(materializedRows.getMaterializedRows().get(2).getField(2), 33.3);
259+
assertNull(materializedRows.getMaterializedRows().get(2).getField(3));
260+
assertEquals(materializedRows.getMaterializedRows().get(3).getField(0), 456L);
261+
assertEquals(materializedRows.getMaterializedRows().get(3).getField(1), 333L);
262+
assertEquals(materializedRows.getMaterializedRows().get(3).getField(2), 66.6);
263+
assertEquals(materializedRows.getMaterializedRows().get(3).getField(3), "fourth");
264+
265+
assertUpdate("DROP TABLE test_add_column");
266+
assertUpdate("DROP TABLE test_add_column_a");
267+
assertUpdate("DROP TABLE test_add_column_ab");
268+
assertUpdate("DROP TABLE test_add_column_abc");
269+
assertFalse(getQueryRunner().tableExists(getSession(), "test_add_column"));
270+
assertFalse(getQueryRunner().tableExists(getSession(), "test_add_column_a"));
271+
assertFalse(getQueryRunner().tableExists(getSession(), "test_add_column_ab"));
272+
assertFalse(getQueryRunner().tableExists(getSession(), "test_add_column_abc"));
273+
274+
assertUpdate("ALTER TABLE IF EXISTS test_add_column ADD COLUMN x bigint");
275+
assertUpdate("ALTER TABLE IF EXISTS test_add_column ADD COLUMN IF NOT EXISTS x bigint");
276+
assertFalse(getQueryRunner().tableExists(getSession(), "test_add_column"));
277+
}
278+
279+
@Override
280+
public void testUpdate()
281+
{
282+
// Updates are not supported by the connector
283+
}
284+
@Override
285+
public void testPayloadJoinApplicability()
286+
{
287+
// no op -- test not supported due to lack of support for map(integer, integer) column type.
288+
}
289+
290+
@Override
291+
public void testPayloadJoinCorrectness()
292+
{
293+
// no op -- test not supported due to lack of support for map(integer, integer) column type.
294+
}
295+
296+
@Override
297+
public void testRemoveRedundantCastToVarcharInJoinClause()
298+
{
299+
// no op -- test not supported due to lack of support for map(integer, integer) column type.
300+
}
301+
302+
@Override
303+
public void testRenameTable()
304+
{
305+
assertUpdate("CREATE TABLE test_rename AS SELECT 123 x", 1);
306+
307+
assertUpdate("ALTER TABLE test_rename RENAME TO test_rename_new");
308+
MaterializedResult materializedRows = computeActual("SELECT x FROM test_rename_new");
309+
assertEquals(getOnlyElement(materializedRows.getMaterializedRows()).getField(0), 123L);
310+
311+
assertUpdate("ALTER TABLE IF EXISTS test_rename_new RENAME TO test_rename");
312+
materializedRows = computeActual("SELECT x FROM test_rename");
313+
assertEquals(getOnlyElement(materializedRows.getMaterializedRows()).getField(0), 123L);
314+
315+
assertUpdate("ALTER TABLE IF EXISTS test_rename RENAME TO test_rename_new");
316+
materializedRows = computeActual("SELECT x FROM test_rename_new");
317+
assertEquals(getOnlyElement(materializedRows.getMaterializedRows()).getField(0), 123L);
318+
319+
// provide new table name in uppercase
320+
assertUpdate("ALTER TABLE test_rename_new RENAME TO TEST_RENAME");
321+
materializedRows = computeActual("SELECT x FROM test_rename");
322+
assertEquals(getOnlyElement(materializedRows.getMaterializedRows()).getField(0), 123L);
323+
324+
assertUpdate("DROP TABLE test_rename");
325+
326+
assertFalse(getQueryRunner().tableExists(getSession(), "test_rename"));
327+
assertFalse(getQueryRunner().tableExists(getSession(), "test_rename_new"));
328+
329+
assertUpdate("ALTER TABLE IF EXISTS test_rename RENAME TO test_rename_new");
330+
assertFalse(getQueryRunner().tableExists(getSession(), "test_rename"));
331+
assertFalse(getQueryRunner().tableExists(getSession(), "test_rename_new"));
332+
}
185333
}

0 commit comments

Comments
 (0)