@@ -2273,6 +2273,155 @@ public void testMultiDeviceCompletelyDeleteTable() throws SQLException {
22732273 cleanData (testNum );
22742274 }
22752275
2276+ @ Test
2277+ public void testDeleteDataByTag () throws IoTDBConnectionException , StatementExecutionException {
2278+ try (ITableSession session = EnvFactory .getEnv ().getTableSessionConnectionWithDB ("test" )) {
2279+ session .executeNonQueryStatement (
2280+ "CREATE TABLE IF NOT EXISTS delete_by_tag (deviceId STRING TAG, s1 INT32 FIELD)" );
2281+ // // time=1 and time=2 are INT32 and deleted by drop column
2282+ // Tablet tablet =
2283+ // new Tablet(
2284+ // "delete_by_tag",
2285+ // Arrays.asList("deviceId", "s1"),
2286+ // Arrays.asList(TSDataType.STRING, TSDataType.INT32),
2287+ // Arrays.asList(ColumnCategory.TAG, ColumnCategory.FIELD));
2288+ // tablet.addTimestamp(0, 1);
2289+ // tablet.addValue("deviceId", 0, "sensor");
2290+ // tablet.addValue("s1", 0, genValue(TSDataType.INT32, 1));
2291+ // session.insert(tablet);
2292+ // tablet.reset();
2293+ //
2294+ // session.executeNonQueryStatement("FLUSH");
2295+ //
2296+ // tablet =
2297+ // new Tablet(
2298+ // "delete_by_tag",
2299+ // Arrays.asList("deviceId", "s1"),
2300+ // Arrays.asList(TSDataType.STRING, TSDataType.INT32),
2301+ // Arrays.asList(ColumnCategory.TAG, ColumnCategory.FIELD));
2302+ // tablet.addTimestamp(0, 2);
2303+ // tablet.addValue("deviceId", 0, "sensor");
2304+ // tablet.addValue("s1", 0, genValue(TSDataType.INT32, 2));
2305+ // session.insert(tablet);
2306+ // tablet.reset();
2307+ //
2308+ // // time=3 and time=4 are STRING
2309+ // tablet =
2310+ // new Tablet(
2311+ // "delete_by_tag",
2312+ // Arrays.asList("deviceId", "s1"),
2313+ // Arrays.asList(TSDataType.STRING, TSDataType.INT32),
2314+ // Arrays.asList(ColumnCategory.TAG, ColumnCategory.FIELD));
2315+ // tablet.addTimestamp(0, 3);
2316+ // tablet.addValue("deviceId", 0, "sensor");
2317+ // tablet.addValue("s1", 0, genValue(TSDataType.INT32, 3));
2318+ // session.insert(tablet);
2319+ // tablet.reset();
2320+ //
2321+ // session.executeNonQueryStatement("FLUSH");
2322+ //
2323+ // tablet =
2324+ // new Tablet(
2325+ // "delete_by_tag",
2326+ // Arrays.asList("deviceId", "s1"),
2327+ // Arrays.asList(TSDataType.STRING, TSDataType.INT32),
2328+ // Arrays.asList(ColumnCategory.TAG, ColumnCategory.FIELD));
2329+ // tablet.addTimestamp(0, 4);
2330+ // tablet.addValue("deviceId", 0, "sensor");
2331+ // tablet.addValue("s1", 0, genValue(TSDataType.INT32, 4));
2332+ // session.insert(tablet);
2333+ // tablet.reset();
2334+ //
2335+ // // time=5 and time=6 are TEXT
2336+ // tablet =
2337+ // new Tablet(
2338+ // "delete_by_tag",
2339+ // Arrays.asList("deviceId", "s1"),
2340+ // Arrays.asList(TSDataType.STRING, TSDataType.INT32),
2341+ // Arrays.asList(ColumnCategory.TAG, ColumnCategory.FIELD));
2342+ // tablet.addTimestamp(0, 5);
2343+ // tablet.addValue("deviceId", 0, "rada");
2344+ // tablet.addValue("s1", 0, genValue(TSDataType.INT32, 5));
2345+ // session.insert(tablet);
2346+ // tablet.reset();
2347+ //
2348+ // session.executeNonQueryStatement("FLUSH");
2349+ //
2350+ // tablet =
2351+ // new Tablet(
2352+ // "delete_by_tag",
2353+ // Arrays.asList("deviceId", "s1"),
2354+ // Arrays.asList(TSDataType.STRING, TSDataType.INT32),
2355+ // Arrays.asList(ColumnCategory.TAG, ColumnCategory.FIELD));
2356+ // tablet.addTimestamp(0, 6);
2357+ // tablet.addValue("deviceId", 0, "rada");
2358+ // tablet.addValue("s1", 0, genValue(TSDataType.INT32, 6));
2359+ // session.insert(tablet);
2360+ // tablet.reset();
2361+
2362+ session .executeNonQueryStatement ("SET CONFIGURATION enable_seq_space_compaction='false'" );
2363+ session .executeNonQueryStatement ("SET CONFIGURATION enable_unseq_space_compaction='false'" );
2364+
2365+ session .executeNonQueryStatement (
2366+ "insert into delete_by_tag (time, deviceId, s1) values (1, 'sensor', 1)" );
2367+ session .executeNonQueryStatement (
2368+ "insert into delete_by_tag (time, deviceId, s1) values (2, 'sensor', 2)" );
2369+ session .executeNonQueryStatement (
2370+ "insert into delete_by_tag (time, deviceId, s1) values (3, 'sensor', 3)" );
2371+ session .executeNonQueryStatement (
2372+ "insert into delete_by_tag (time, deviceId, s1) values (4, 'sensor', 4)" );
2373+
2374+ session .executeNonQueryStatement ("DELETE FROM delete_by_tag WHERE deviceId = 'sensor'" );
2375+
2376+ SessionDataSet dataSet =
2377+ session .executeQueryStatement ("select * from delete_by_tag order by time" );
2378+ assertFalse (dataSet .hasNext ());
2379+
2380+ session .executeNonQueryStatement (
2381+ "insert into delete_by_tag (time, deviceId, s1) values (1, 'sensor', 1)" );
2382+ session .executeNonQueryStatement (
2383+ "insert into delete_by_tag (time, deviceId, s1) values (2, 'sensor', 2)" );
2384+ session .executeNonQueryStatement (
2385+ "insert into delete_by_tag (time, deviceId, s1) values (3, 'sensor', 3)" );
2386+ session .executeNonQueryStatement (
2387+ "insert into delete_by_tag (time, deviceId, s1) values (4, 'sensor', 4)" );
2388+ session .executeNonQueryStatement ("FLUSH" );
2389+
2390+ session .executeNonQueryStatement ("DELETE FROM delete_by_tag WHERE deviceId = 'sensor'" );
2391+
2392+ dataSet = session .executeQueryStatement ("select * from delete_by_tag order by time" );
2393+
2394+ // while (dataSet.hasNext()) {
2395+ // RowRecord rec = dataSet.next();
2396+ // LOGGER.error(
2397+ // "time is {}, tag is {}, tag type is {}, col is {}, value type is {}, rec is {}",
2398+ // rec.getFields().get(0).getLongV(),
2399+ // rec.getFields().get(1),
2400+ // rec.getFields().get(1).getDataType(),
2401+ // rec.getFields().get(2),
2402+ // rec.getFields().get(2).getDataType(), rec);
2403+ // }
2404+ // System.exit(0);
2405+
2406+ // s1 is dropped but the time should remain
2407+ RowRecord rec ;
2408+ int cnt = 0 ;
2409+ for (int i = 1 ; i < 5 ; i ++) {
2410+ rec = dataSet .next ();
2411+ assertEquals (i , rec .getFields ().get (0 ).getLongV ());
2412+ Assert .assertEquals (i , rec .getFields ().get (2 ).getIntV ());
2413+ Assert .assertEquals (TSDataType .INT32 , rec .getFields ().get (2 ).getDataType ());
2414+ cnt ++;
2415+ }
2416+ Assert .assertEquals (4 , cnt );
2417+ assertFalse (dataSet .hasNext ());
2418+ } finally {
2419+ try (ITableSession session = EnvFactory .getEnv ().getTableSessionConnectionWithDB ("test" )) {
2420+ session .executeNonQueryStatement ("DROP TABLE IF EXISTS delete_by_tag" );
2421+ }
2422+ }
2423+ }
2424+
22762425 @ Test
22772426 public void testDropAndAlter () throws IoTDBConnectionException , StatementExecutionException {
22782427 try (ITableSession session = EnvFactory .getEnv ().getTableSessionConnectionWithDB ("test" )) {
@@ -2366,6 +2515,13 @@ public void testDropAndAlter() throws IoTDBConnectionException, StatementExecuti
23662515 for (int i = 1 ; i < 7 ; i ++) {
23672516 rec = dataSet .next ();
23682517 assertEquals (i , rec .getFields ().get (0 ).getLongV ());
2518+ LOGGER .error (
2519+ "time is {}, value is {}, value type is {}" ,
2520+ rec .getFields ().get (0 ).getLongV (),
2521+ rec .getFields ().get (1 ),
2522+ rec .getFields ().get (1 ).getDataType ());
2523+ // assertNull(rec.getFields().get(1).getDataType());
2524+ // Assert.assertEquals(TSDataType.TEXT, rec.getFields().get(1).getDataType());
23692525 cnt ++;
23702526 }
23712527 Assert .assertEquals (6 , cnt );
0 commit comments