@Test public final void testCreateAndPurgeExternalTableByExecuteQuery() throws IOException, ServiceException { TajoConf conf = cluster.getConfiguration(); final String tableName = "testCreateAndPurgeExternalTableByExecuteQuery"; Path tablePath = writeTmpTable(tableName); assertFalse(client.existTable(tableName)); String sql = "create external table " + tableName + " (deptname text, score int4) " + "using csv location '" + tablePath + "'"; client.executeQueryAndGetResult(sql); assertTrue(client.existTable(tableName)); client.updateQuery("drop table " + tableName + " purge"); assertFalse(client.existTable(tableName)); FileSystem localFS = FileSystem.getLocal(conf); assertFalse(localFS.exists(tablePath)); }
@Test public final void testFailCreateTablePartitionedOtherExceptColumn() throws IOException, ServiceException, SQLException { TajoConf conf = cluster.getConfiguration(); final String tableName = "testFailCreateTablePartitionedOtherExceptColumn"; assertFalse(client.existTable(tableName)); String rangeSql = "create table " + tableName + " (deptname text, score int4)"; rangeSql += "PARTITION BY RANGE (score)"; rangeSql += "( PARTITION sub_part1 VALUES LESS THAN (2),"; rangeSql += "PARTITION sub_part2 VALUES LESS THAN (5),"; rangeSql += "PARTITION sub_part2 VALUES LESS THAN (MAXVALUE) )"; assertFalse(client.updateQuery(rangeSql)); String listSql = "create table " + tableName + " (deptname text, score int4)"; listSql += "PARTITION BY LIST (deptname)"; listSql += "( PARTITION sub_part1 VALUES('r&d', 'design'),"; listSql += "PARTITION sub_part2 VALUES('sales', 'hr') )"; assertFalse(client.updateQuery(listSql)); String hashSql = "create table " + tableName + " (deptname text, score int4)"; hashSql += "PARTITION BY HASH (deptname)"; hashSql += "PARTITIONS 2"; assertFalse(client.updateQuery(hashSql)); }
@Test public final void testDDLByExecuteQuery() throws IOException, ServiceException { final String tableName = "testDDLByExecuteQuery"; Path tablePath = writeTmpTable(tableName); assertFalse(client.existTable(tableName)); String sql = "create external table " + tableName + " (deptname text, score int4) " + "using csv location '" + tablePath + "'"; client.executeQueryAndGetResult(sql); assertTrue(client.existTable(tableName)); }
@Test public final void testGetTableList() throws IOException, ServiceException { String tableName1 = "GetTableList1".toLowerCase(); String tableName2 = "GetTableList2".toLowerCase(); assertFalse(client.existTable(tableName1)); assertFalse(client.existTable(tableName2)); client.updateQuery("create table GetTableList1 (age int, name text);"); client.updateQuery("create table GetTableList2 (age int, name text);"); assertTrue(client.existTable(tableName1)); assertTrue(client.existTable(tableName2)); Set<String> tables = Sets.newHashSet(client.getTableList()); assertTrue(tables.contains(tableName1)); assertTrue(tables.contains(tableName2)); }
@Test public final void testCreateAndDropExternalTable() throws IOException, ServiceException, SQLException { final String tableName = "testCreateAndDropExternalTable"; Path tablePath = writeTmpTable(tableName); LOG.error("Full path:" + tablePath.toUri().getRawPath()); FileSystem fs = tablePath.getFileSystem(conf); assertTrue(fs.exists(tablePath)); assertFalse(client.existTable(tableName)); client.createExternalTable( tableName, BackendTestingUtil.mockupSchema, tablePath, BackendTestingUtil.mockupMeta); assertTrue(client.existTable(tableName)); client.dropTable(tableName); assertFalse(client.existTable(tableName)); fs = tablePath.getFileSystem(conf); assertTrue(fs.exists(tablePath)); }
@Test public final void testGetFunctions() throws IOException, ServiceException, SQLException { Collection<FunctionDesc> catalogFunctions = cluster.getMaster().getCatalog().getFunctions(); String functionName = "sum"; int numFunctions = 0; for (FunctionDesc eachFunction : catalogFunctions) { if (functionName.equals(eachFunction.getSignature())) { numFunctions++; } } List<CatalogProtos.FunctionDescProto> functions = client.getFunctions(functionName); assertEquals(numFunctions, functions.size()); functions = client.getFunctions("notmatched"); assertEquals(0, functions.size()); functions = client.getFunctions(null); assertEquals(catalogFunctions.size(), functions.size()); }
@Test public final void testGetTableDesc() throws IOException, ServiceException, SQLException { final String tableName1 = "table3"; Path tablePath = writeTmpTable(tableName1); LOG.error("Full path:" + tablePath.toUri().getRawPath()); FileSystem fs = tablePath.getFileSystem(conf); assertTrue(fs.exists(tablePath)); assertNotNull(tablePath); assertFalse(client.existTable(tableName1)); client.createExternalTable( "table3", BackendTestingUtil.mockupSchema, tablePath, BackendTestingUtil.mockupMeta); assertTrue(client.existTable(tableName1)); TableDesc desc = client.getTableDesc(tableName1); assertNotNull(desc); assertEquals(tableName1, desc.getName()); assertTrue(desc.getStats().getNumBytes() > 0); }
@Test public final void testCreateAndPurgeTableByExecuteQuery() throws IOException, ServiceException, SQLException { TajoConf conf = cluster.getConfiguration(); final String tableName = "testCreateAndPurgeTableByExecuteQuery"; assertFalse(client.existTable(tableName)); String sql = "create table " + tableName + " (deptname text, score int4)"; client.updateQuery(sql); assertTrue(client.existTable(tableName)); Path tablePath = client.getTableDesc(tableName).getPath(); FileSystem hdfs = tablePath.getFileSystem(conf); assertTrue(hdfs.exists(tablePath)); client.updateQuery("drop table " + tableName + " purge"); assertFalse(client.existTable(tableName)); assertFalse(hdfs.exists(tablePath)); }
// @Test public final void testCreateAndDropTablePartitionedHash1ByExecuteQuery() throws IOException, ServiceException, SQLException { TajoConf conf = cluster.getConfiguration(); final String tableName = "testCreateAndDropTablePartitionedHash1ByExecuteQuery"; assertFalse(client.existTable(tableName)); String sql = "create table " + tableName + " (deptname text, score int4)"; sql += " PARTITION BY HASH (deptname)"; sql += " (PARTITION sub_part1, PARTITION sub_part2, PARTITION sub_part3)"; client.updateQuery(sql); assertTrue(client.existTable(tableName)); Path tablePath = client.getTableDesc(tableName).getPath(); FileSystem hdfs = tablePath.getFileSystem(conf); assertTrue(hdfs.exists(tablePath)); client.updateQuery("drop table " + tableName); assertFalse(client.existTable(tableName)); assertTrue(hdfs.exists(tablePath)); }