This is an automated email from the ASF dual-hosted git repository.

zyk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new 76d66786814 Rename ViewType values to VIEW/BASE  (#10191) (#10206)
76d66786814 is described below

commit 76d667868142905c84f15618b6694d3daaa3167c
Author: Chen YZ <[email protected]>
AuthorDate: Mon Jun 19 14:12:59 2023 +0800

    Rename ViewType values to VIEW/BASE  (#10191) (#10206)
---
 .../iotdb/db/it/schema/IoTDBExtendTemplateIT.java  | 32 ++++-----
 .../iotdb/db/it/schema/IoTDBMetadataFetchIT.java   | 56 ++++++++--------
 .../it/schema/view/IoTDBCreateAndShowViewIT.java   | 72 ++++++++++----------
 .../iotdb/zeppelin/it/IoTDBInterpreterIT.java      | 12 ++--
 iotdb-client/client-py/tests/test_dataframe.py     |  2 +-
 .../iotdb/commons/schema/filter/SchemaFilter.java  | 12 +++-
 ...FilterVisitor.java => SchemaFilterFactory.java} | 45 ++++++-------
 .../commons/schema/filter/SchemaFilterType.java    |  9 ++-
 .../commons/schema/filter/SchemaFilterVisitor.java | 28 +++++---
 .../impl/{DataTypeFilter.java => AndFilter.java}   | 41 +++++++-----
 .../commons/schema/filter/impl/DataTypeFilter.java |  6 +-
 .../schema/filter/impl/PathContainsFilter.java     |  8 +--
 .../commons/schema/filter/impl/TagFilter.java      |  6 +-
 .../{DataTypeFilter.java => ViewTypeFilter.java}   | 32 ++++-----
 .../apache/iotdb/commons/schema/view/ViewType.java | 67 +++++++++++++++++++
 .../impl/read/SchemaRegionReadPlanFactory.java     |  9 ++-
 .../db/metadata/visitor/DeviceFilterVisitor.java   |  6 +-
 .../metadata/visitor/TimeseriesFilterVisitor.java  | 15 +++--
 .../schema/source/LogicalViewSchemaSource.java     | 77 ++++------------------
 .../schema/source/TimeSeriesSchemaSource.java      |  7 +-
 .../iotdb/db/mpp/plan/parser/ASTVisitor.java       | 14 ++--
 .../schemaRegion/SchemaRegionBasicTest.java        | 25 ++++---
 22 files changed, 320 insertions(+), 261 deletions(-)

diff --git 
a/integration-test/src/test/java/org/apache/iotdb/db/it/schema/IoTDBExtendTemplateIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/db/it/schema/IoTDBExtendTemplateIT.java
index ec0823e85bc..859a7e6ee85 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/db/it/schema/IoTDBExtendTemplateIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/db/it/schema/IoTDBExtendTemplateIT.java
@@ -101,10 +101,10 @@ public class IoTDBExtendTemplateIT extends 
AbstractSchemaIT {
           new Set[] {
             new HashSet<>(
                 Arrays.asList(
-                    
"root.db.d1.s1,null,root.db,INT64,PLAIN,SNAPPY,null,null,null,null,,",
-                    
"root.db.d1.s2,null,root.db,DOUBLE,RLE,SNAPPY,null,null,null,null,,",
-                    
"root.db.d1.s3,null,root.db,INT64,RLE,SNAPPY,null,null,null,null,,",
-                    
"root.db.d1.s4,null,root.db,DOUBLE,GORILLA,SNAPPY,null,null,null,null,,"))
+                    
"root.db.d1.s1,null,root.db,INT64,PLAIN,SNAPPY,null,null,null,null,BASE,",
+                    
"root.db.d1.s2,null,root.db,DOUBLE,RLE,SNAPPY,null,null,null,null,BASE,",
+                    
"root.db.d1.s3,null,root.db,INT64,RLE,SNAPPY,null,null,null,null,BASE,",
+                    
"root.db.d1.s4,null,root.db,DOUBLE,GORILLA,SNAPPY,null,null,null,null,BASE,"))
           };
       for (int n = 0; n < sqls.length; n++) {
         String sql = sqls[n];
@@ -154,18 +154,18 @@ public class IoTDBExtendTemplateIT extends 
AbstractSchemaIT {
           new Set[] {
             new HashSet<>(
                 Arrays.asList(
-                    
"root.db.d1.s1,null,root.db,INT64,PLAIN,SNAPPY,null,null,null,null,,",
-                    
"root.db.d1.s2,null,root.db,DOUBLE,RLE,SNAPPY,null,null,null,null,,",
-                    
"root.db.d1.s3,null,root.db,FLOAT,GORILLA,SNAPPY,null,null,null,null,,",
-                    
"root.db.d1.s4,null,root.db,FLOAT,GORILLA,SNAPPY,null,null,null,null,,",
-                    
"root.db.d1.s5,null,root.db,FLOAT,GORILLA,SNAPPY,null,null,null,null,,",
-                    
"root.db.d2.s1,null,root.db,INT64,PLAIN,SNAPPY,null,null,null,null,,",
-                    
"root.db.d2.s2,null,root.db,DOUBLE,RLE,SNAPPY,null,null,null,null,,",
-                    
"root.db.d2.s3,null,root.db,FLOAT,GORILLA,SNAPPY,null,null,null,null,,",
-                    
"root.db.d2.s4,null,root.db,FLOAT,GORILLA,SNAPPY,null,null,null,null,,",
-                    
"root.db.d2.s5,null,root.db,FLOAT,GORILLA,SNAPPY,null,null,null,null,,",
-                    
"root.db1.d1.s2,null,root.db1,FLOAT,GORILLA,SNAPPY,null,null,null,null,,",
-                    
"root.db1.d1.s3,null,root.db1,FLOAT,GORILLA,SNAPPY,null,null,null,null,,"))
+                    
"root.db.d1.s1,null,root.db,INT64,PLAIN,SNAPPY,null,null,null,null,BASE,",
+                    
"root.db.d1.s2,null,root.db,DOUBLE,RLE,SNAPPY,null,null,null,null,BASE,",
+                    
"root.db.d1.s3,null,root.db,FLOAT,GORILLA,SNAPPY,null,null,null,null,BASE,",
+                    
"root.db.d1.s4,null,root.db,FLOAT,GORILLA,SNAPPY,null,null,null,null,BASE,",
+                    
"root.db.d1.s5,null,root.db,FLOAT,GORILLA,SNAPPY,null,null,null,null,BASE,",
+                    
"root.db.d2.s1,null,root.db,INT64,PLAIN,SNAPPY,null,null,null,null,BASE,",
+                    
"root.db.d2.s2,null,root.db,DOUBLE,RLE,SNAPPY,null,null,null,null,BASE,",
+                    
"root.db.d2.s3,null,root.db,FLOAT,GORILLA,SNAPPY,null,null,null,null,BASE,",
+                    
"root.db.d2.s4,null,root.db,FLOAT,GORILLA,SNAPPY,null,null,null,null,BASE,",
+                    
"root.db.d2.s5,null,root.db,FLOAT,GORILLA,SNAPPY,null,null,null,null,BASE,",
+                    
"root.db1.d1.s2,null,root.db1,FLOAT,GORILLA,SNAPPY,null,null,null,null,BASE,",
+                    
"root.db1.d1.s3,null,root.db1,FLOAT,GORILLA,SNAPPY,null,null,null,null,BASE,"))
           };
       for (int n = 0; n < sqls.length; n++) {
         String sql = sqls[n];
diff --git 
a/integration-test/src/test/java/org/apache/iotdb/db/it/schema/IoTDBMetadataFetchIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/db/it/schema/IoTDBMetadataFetchIT.java
index 552efcbeff6..cbd2e1f1045 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/db/it/schema/IoTDBMetadataFetchIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/db/it/schema/IoTDBMetadataFetchIT.java
@@ -126,40 +126,40 @@ public class IoTDBMetadataFetchIT extends 
AbstractSchemaIT {
           new Set[] {
             new HashSet<>(
                 Collections.singletonList(
-                    
"root.ln.wf01.wt01.status,null,root.ln.wf01.wt01,BOOLEAN,PLAIN,SNAPPY,null,null,null,null,,")),
+                    
"root.ln.wf01.wt01.status,null,root.ln.wf01.wt01,BOOLEAN,PLAIN,SNAPPY,null,null,null,null,BASE,")),
             new HashSet<>(
                 Arrays.asList(
-                    
"root.ln.wf01.wt01.status,null,root.ln.wf01.wt01,BOOLEAN,PLAIN,SNAPPY,null,null,null,null,,",
-                    
"root.ln.wf01.wt01.temperature,null,root.ln.wf01.wt01,FLOAT,RLE,SNAPPY,null,null,null,null,,",
-                    
"root.ln.wf01.wt02.s1,null,root.ln.wf01.wt02,INT32,RLE,SNAPPY,null,null,null,null,,",
-                    
"root.ln.wf01.wt02.s2,null,root.ln.wf01.wt02,DOUBLE,GORILLA,SNAPPY,null,null,null,null,,")),
+                    
"root.ln.wf01.wt01.status,null,root.ln.wf01.wt01,BOOLEAN,PLAIN,SNAPPY,null,null,null,null,BASE,",
+                    
"root.ln.wf01.wt01.temperature,null,root.ln.wf01.wt01,FLOAT,RLE,SNAPPY,null,null,null,null,BASE,",
+                    
"root.ln.wf01.wt02.s1,null,root.ln.wf01.wt02,INT32,RLE,SNAPPY,null,null,null,null,BASE,",
+                    
"root.ln.wf01.wt02.s2,null,root.ln.wf01.wt02,DOUBLE,GORILLA,SNAPPY,null,null,null,null,BASE,")),
             new HashSet<>(
                 Arrays.asList(
-                    
"root.ln.wf01.wt01.status,null,root.ln.wf01.wt01,BOOLEAN,PLAIN,SNAPPY,null,null,null,null,,",
-                    
"root.ln.wf01.wt01.temperature,null,root.ln.wf01.wt01,FLOAT,RLE,SNAPPY,null,null,null,null,,")),
+                    
"root.ln.wf01.wt01.status,null,root.ln.wf01.wt01,BOOLEAN,PLAIN,SNAPPY,null,null,null,null,BASE,",
+                    
"root.ln.wf01.wt01.temperature,null,root.ln.wf01.wt01,FLOAT,RLE,SNAPPY,null,null,null,null,BASE,")),
             new HashSet<>(
                 Arrays.asList(
-                    
"root.ln.wf01.wt01.status,null,root.ln.wf01.wt01,BOOLEAN,PLAIN,SNAPPY,null,null,null,null,,",
-                    
"root.ln.wf01.wt01.temperature,null,root.ln.wf01.wt01,FLOAT,RLE,SNAPPY,null,null,null,null,,",
-                    
"root.ln.wf01.wt02.s1,null,root.ln.wf01.wt02,INT32,RLE,SNAPPY,null,null,null,null,,",
-                    
"root.ln.wf01.wt02.s2,null,root.ln.wf01.wt02,DOUBLE,GORILLA,SNAPPY,null,null,null,null,,",
-                    
"root.ln1.wf01.wt01.status,null,root.ln1.wf01.wt01,BOOLEAN,PLAIN,SNAPPY,null,null,null,null,,",
-                    
"root.ln1.wf01.wt01.temperature,null,root.ln1.wf01.wt01,FLOAT,RLE,SNAPPY,null,null,null,null,,",
-                    
"root.ln2.wf01.wt01.status,null,root.ln2.wf01.wt01,BOOLEAN,PLAIN,SNAPPY,null,null,null,null,,",
-                    
"root.ln2.wf01.wt01.temperature,null,root.ln2.wf01.wt01,FLOAT,RLE,SNAPPY,null,null,null,null,,")),
+                    
"root.ln.wf01.wt01.status,null,root.ln.wf01.wt01,BOOLEAN,PLAIN,SNAPPY,null,null,null,null,BASE,",
+                    
"root.ln.wf01.wt01.temperature,null,root.ln.wf01.wt01,FLOAT,RLE,SNAPPY,null,null,null,null,BASE,",
+                    
"root.ln.wf01.wt02.s1,null,root.ln.wf01.wt02,INT32,RLE,SNAPPY,null,null,null,null,BASE,",
+                    
"root.ln.wf01.wt02.s2,null,root.ln.wf01.wt02,DOUBLE,GORILLA,SNAPPY,null,null,null,null,BASE,",
+                    
"root.ln1.wf01.wt01.status,null,root.ln1.wf01.wt01,BOOLEAN,PLAIN,SNAPPY,null,null,null,null,BASE,",
+                    
"root.ln1.wf01.wt01.temperature,null,root.ln1.wf01.wt01,FLOAT,RLE,SNAPPY,null,null,null,null,BASE,",
+                    
"root.ln2.wf01.wt01.status,null,root.ln2.wf01.wt01,BOOLEAN,PLAIN,SNAPPY,null,null,null,null,BASE,",
+                    
"root.ln2.wf01.wt01.temperature,null,root.ln2.wf01.wt01,FLOAT,RLE,SNAPPY,null,null,null,null,BASE,")),
             new HashSet<>(),
             new HashSet<>(
                 Arrays.asList(
-                    
"root.ln.wf01.wt01.status,null,root.ln.wf01.wt01,BOOLEAN,PLAIN,SNAPPY,null,null,null,null,,",
-                    
"root.ln1.wf01.wt01.status,null,root.ln1.wf01.wt01,BOOLEAN,PLAIN,SNAPPY,null,null,null,null,,",
-                    
"root.ln2.wf01.wt01.status,null,root.ln2.wf01.wt01,BOOLEAN,PLAIN,SNAPPY,null,null,null,null,,")),
+                    
"root.ln.wf01.wt01.status,null,root.ln.wf01.wt01,BOOLEAN,PLAIN,SNAPPY,null,null,null,null,BASE,",
+                    
"root.ln1.wf01.wt01.status,null,root.ln1.wf01.wt01,BOOLEAN,PLAIN,SNAPPY,null,null,null,null,BASE,",
+                    
"root.ln2.wf01.wt01.status,null,root.ln2.wf01.wt01,BOOLEAN,PLAIN,SNAPPY,null,null,null,null,BASE,")),
             new HashSet<>(
                 Arrays.asList(
-                    
"root.ln.wf01.wt01.status,null,root.ln.wf01.wt01,BOOLEAN,PLAIN,SNAPPY,null,null,null,null,,",
-                    
"root.ln.wf01.wt01.temperature,null,root.ln.wf01.wt01,FLOAT,RLE,SNAPPY,null,null,null,null,,")),
+                    
"root.ln.wf01.wt01.status,null,root.ln.wf01.wt01,BOOLEAN,PLAIN,SNAPPY,null,null,null,null,BASE,",
+                    
"root.ln.wf01.wt01.temperature,null,root.ln.wf01.wt01,FLOAT,RLE,SNAPPY,null,null,null,null,BASE,")),
             new HashSet<>(
                 Collections.singletonList(
-                    
"root.ln.wf01.wt01.status,null,root.ln.wf01.wt01,BOOLEAN,PLAIN,SNAPPY,null,null,null,null,,"))
+                    
"root.ln.wf01.wt01.status,null,root.ln.wf01.wt01,BOOLEAN,PLAIN,SNAPPY,null,null,null,null,BASE,"))
           };
       for (int n = 0; n < sqls.length; n++) {
         String sql = sqls[n];
@@ -715,8 +715,8 @@ public class IoTDBMetadataFetchIT extends AbstractSchemaIT {
           "create aligned timeseries root.sg.d(s1(alias1) int32 
tags('tag1'='v1', 'tag2'='v2'), s2 double attributes('attr3'='v3'))");
       String[] expected =
           new String[] {
-            
"root.sg.d.s1,alias1,root.sg,INT32,RLE,SNAPPY,{\"tag1\":\"v1\",\"tag2\":\"v2\"},null,null,null,,",
-            
"root.sg.d.s2,null,root.sg,DOUBLE,GORILLA,SNAPPY,null,{\"attr3\":\"v3\"},null,null,,"
+            
"root.sg.d.s1,alias1,root.sg,INT32,RLE,SNAPPY,{\"tag1\":\"v1\",\"tag2\":\"v2\"},null,null,null,BASE,",
+            
"root.sg.d.s2,null,root.sg,DOUBLE,GORILLA,SNAPPY,null,{\"attr3\":\"v3\"},null,null,BASE,"
           };
 
       int num = 0;
@@ -745,8 +745,8 @@ public class IoTDBMetadataFetchIT extends AbstractSchemaIT {
       Set<String> standard =
           new HashSet<>(
               Arrays.asList(
-                  
"root.ln.wf01.wt01.temperature,null,root.ln.wf01.wt01,FLOAT,RLE,SNAPPY,null,null,null,null,,",
-                  
"root.ln.wf01.wt01.status,null,root.ln.wf01.wt01,BOOLEAN,PLAIN,SNAPPY,null,null,null,null,,"));
+                  
"root.ln.wf01.wt01.temperature,null,root.ln.wf01.wt01,FLOAT,RLE,SNAPPY,null,null,null,null,BASE,",
+                  
"root.ln.wf01.wt01.status,null,root.ln.wf01.wt01,BOOLEAN,PLAIN,SNAPPY,null,null,null,null,BASE,"));
       try (ResultSet resultSet = statement.executeQuery(sql)) {
         ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
         while (resultSet.next()) {
@@ -783,9 +783,9 @@ public class IoTDBMetadataFetchIT extends AbstractSchemaIT {
       Set<String> standard =
           new HashSet<>(
               Arrays.asList(
-                  
"root.sg1.d0.s0,null,root.sg1,INT32,RLE,SNAPPY,null,null,null,null,,\n",
-                  
"root.sg1.d0.s1,null,root.sg1,INT32,PLAIN,SNAPPY,null,null,SDT,{compdev=2},,\n",
-                  
"root.sg1.d0.s2,null,root.sg1,INT32,PLAIN,SNAPPY,null,null,SDT,{compdev=0.01, 
compmintime=2, compmaxtime=15},,\n"));
+                  
"root.sg1.d0.s0,null,root.sg1,INT32,RLE,SNAPPY,null,null,null,null,BASE,\n",
+                  
"root.sg1.d0.s1,null,root.sg1,INT32,PLAIN,SNAPPY,null,null,SDT,{compdev=2},BASE,\n",
+                  
"root.sg1.d0.s2,null,root.sg1,INT32,PLAIN,SNAPPY,null,null,SDT,{compdev=0.01, 
compmintime=2, compmaxtime=15},BASE,\n"));
       try (ResultSet resultSet = statement.executeQuery("SHOW TIMESERIES 
root.sg1.d0.*")) {
         ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
         while (resultSet.next()) {
diff --git 
a/integration-test/src/test/java/org/apache/iotdb/db/it/schema/view/IoTDBCreateAndShowViewIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/db/it/schema/view/IoTDBCreateAndShowViewIT.java
index 758ffad2209..e86f26fd36b 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/db/it/schema/view/IoTDBCreateAndShowViewIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/db/it/schema/view/IoTDBCreateAndShowViewIT.java
@@ -101,10 +101,10 @@ public class IoTDBCreateAndShowViewIT {
     Set<String> retSet =
         new HashSet<>(
             Arrays.asList(
-                "root.db.d01.s01,null,root.db,INT32,RLE,SNAPPY,null,null,;",
-                "root.db.d01.s02,null,root.db,INT32,RLE,SNAPPY,null,null,;",
-                "root.db.d02.s01,null,root.db,INT32,RLE,SNAPPY,null,null,;",
-                "root.db.d02.s02,null,root.db,INT32,RLE,SNAPPY,null,null,;"));
+                
"root.db.d01.s01,null,root.db,INT32,RLE,SNAPPY,null,null,BASE;",
+                
"root.db.d01.s02,null,root.db,INT32,RLE,SNAPPY,null,null,BASE;",
+                
"root.db.d02.s01,null,root.db,INT32,RLE,SNAPPY,null,null,BASE;",
+                
"root.db.d02.s02,null,root.db,INT32,RLE,SNAPPY,null,null,BASE;"));
 
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
@@ -150,10 +150,10 @@ public class IoTDBCreateAndShowViewIT {
     Set<String> retSet =
         new HashSet<>(
             Arrays.asList(
-                
"root.view.myview.d01.s01,null,root.view,INT32,null,null,{\"tag1\":\"value1\",\"tag2\":\"value2\"},{\"attribute1\":\"value1\"},logical;",
-                
"root.view.myview.d01.s02,null,root.view,INT32,null,null,null,null,logical;",
-                
"root.view.myview.d02.s01,null,root.view,INT32,null,null,{\"tag1\":\"value2\",\"tag2\":\"value3\"},{\"attribute1\":\"value1\"},logical;",
-                
"root.view.myview.d02.s02,null,root.view,INT32,null,null,null,null,logical;"));
+                
"root.view.myview.d01.s01,null,root.view,INT32,null,null,{\"tag1\":\"value1\",\"tag2\":\"value2\"},{\"attribute1\":\"value1\"},VIEW;",
+                
"root.view.myview.d01.s02,null,root.view,INT32,null,null,null,null,VIEW;",
+                
"root.view.myview.d02.s01,null,root.view,INT32,null,null,{\"tag1\":\"value2\",\"tag2\":\"value3\"},{\"attribute1\":\"value1\"},VIEW;",
+                
"root.view.myview.d02.s02,null,root.view,INT32,null,null,null,null,VIEW;"));
 
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
@@ -199,10 +199,10 @@ public class IoTDBCreateAndShowViewIT {
     Set<String> retSet =
         new HashSet<>(
             Arrays.asList(
-                
"root.view.cal_view.avg,null,root.view,DOUBLE,null,null,null,null,logical;",
-                
"root.view.cal_view.multiple,null,root.view,DOUBLE,null,null,null,null,logical;",
-                
"root.view.cal_view.divide,null,root.view,DOUBLE,null,null,null,null,logical;",
-                
"root.view.cal_view.cast_view,null,root.view,TEXT,null,null,null,null,logical;"));
+                
"root.view.cal_view.avg,null,root.view,DOUBLE,null,null,null,null,VIEW;",
+                
"root.view.cal_view.multiple,null,root.view,DOUBLE,null,null,null,null,VIEW;",
+                
"root.view.cal_view.divide,null,root.view,DOUBLE,null,null,null,null,VIEW;",
+                
"root.view.cal_view.cast_view,null,root.view,TEXT,null,null,null,null,VIEW;"));
 
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
@@ -248,10 +248,10 @@ public class IoTDBCreateAndShowViewIT {
     Set<String> retSet =
         new HashSet<>(
             Arrays.asList(
-                
"root.view.multi_view.all_in_one.d01_s01,null,root.view,INT32,null,null,null,null,logical;",
-                
"root.view.multi_view.all_in_one.d01_s02,null,root.view,INT32,null,null,null,null,logical;",
-                
"root.view.multi_view.all_in_one.d02_s01,null,root.view,INT32,null,null,null,null,logical;",
-                
"root.view.multi_view.all_in_one.d02_s02,null,root.view,INT32,null,null,null,null,logical;"));
+                
"root.view.multi_view.all_in_one.d01_s01,null,root.view,INT32,null,null,null,null,VIEW;",
+                
"root.view.multi_view.all_in_one.d01_s02,null,root.view,INT32,null,null,null,null,VIEW;",
+                
"root.view.multi_view.all_in_one.d02_s01,null,root.view,INT32,null,null,null,null,VIEW;",
+                
"root.view.multi_view.all_in_one.d02_s02,null,root.view,INT32,null,null,null,null,VIEW;"));
 
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
@@ -297,10 +297,10 @@ public class IoTDBCreateAndShowViewIT {
     Set<String> retSet =
         new HashSet<>(
             Arrays.asList(
-                
"root.view.copy_view.d01.s01,null,root.view,INT32,null,null,null,null,logical;",
-                
"root.view.copy_view.d01.s02,null,root.view,INT32,null,null,null,null,logical;",
-                
"root.view.copy_view.d02.s01,null,root.view,INT32,null,null,null,null,logical;",
-                
"root.view.copy_view.d02.s02,null,root.view,INT32,null,null,null,null,logical;"));
+                
"root.view.copy_view.d01.s01,null,root.view,INT32,null,null,null,null,VIEW;",
+                
"root.view.copy_view.d01.s02,null,root.view,INT32,null,null,null,null,VIEW;",
+                
"root.view.copy_view.d02.s01,null,root.view,INT32,null,null,null,null,VIEW;",
+                
"root.view.copy_view.d02.s02,null,root.view,INT32,null,null,null,null,VIEW;"));
 
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
@@ -348,22 +348,22 @@ public class IoTDBCreateAndShowViewIT {
     Set<String> retSet =
         new HashSet<>(
             Arrays.asList(
-                
"root.view.myview.d01.s01,root.view,INT32,{\"tag1\":\"value1\",\"tag2\":\"value2\"},{\"attribute1\":\"value1\"},logical,root.db.d01.s01;",
-                
"root.view.myview.d01.s02,root.view,INT32,null,null,logical,root.db.d01.s02;",
-                
"root.view.myview.d02.s01,root.view,INT32,{\"tag1\":\"value2\",\"tag2\":\"value3\"},{\"attribute1\":\"value1\"},logical,root.db.d02.s01;",
-                
"root.view.myview.d02.s02,root.view,INT32,null,null,logical,root.db.d02.s02;",
-                
"root.view.cal_view.avg,root.view,DOUBLE,null,null,logical,(root.db.d01.s01 + 
root.db.d01.s02) / 2;",
-                
"root.view.cal_view.multiple,root.view,DOUBLE,null,null,logical,root.db.d02.s01 
* root.db.d02.s02;",
-                
"root.view.cal_view.divide,root.view,DOUBLE,null,null,logical,root.db.d02.s01 / 
root.db.d02.s02;",
-                
"root.view.cal_view.cast_view,root.view,TEXT,null,null,logical,cast(type=TEXT)(root.db.d01.s01);",
-                
"root.view.multi_view.all_in_one.d01_s01,root.view,INT32,null,null,logical,root.db.d01.s01;",
-                
"root.view.multi_view.all_in_one.d01_s02,root.view,INT32,null,null,logical,root.db.d01.s02;",
-                
"root.view.multi_view.all_in_one.d02_s01,root.view,INT32,null,null,logical,root.db.d02.s01;",
-                
"root.view.multi_view.all_in_one.d02_s02,root.view,INT32,null,null,logical,root.db.d02.s02;",
-                
"root.view.copy_view.d01.s01,root.view,INT32,null,null,logical,root.db.d01.s01;",
-                
"root.view.copy_view.d01.s02,root.view,INT32,null,null,logical,root.db.d01.s02;",
-                
"root.view.copy_view.d02.s01,root.view,INT32,null,null,logical,root.db.d02.s01;",
-                
"root.view.copy_view.d02.s02,root.view,INT32,null,null,logical,root.db.d02.s02;"));
+                
"root.view.myview.d01.s01,root.view,INT32,{\"tag1\":\"value1\",\"tag2\":\"value2\"},{\"attribute1\":\"value1\"},VIEW,root.db.d01.s01;",
+                
"root.view.myview.d01.s02,root.view,INT32,null,null,VIEW,root.db.d01.s02;",
+                
"root.view.myview.d02.s01,root.view,INT32,{\"tag1\":\"value2\",\"tag2\":\"value3\"},{\"attribute1\":\"value1\"},VIEW,root.db.d02.s01;",
+                
"root.view.myview.d02.s02,root.view,INT32,null,null,VIEW,root.db.d02.s02;",
+                
"root.view.cal_view.avg,root.view,DOUBLE,null,null,VIEW,(root.db.d01.s01 + 
root.db.d01.s02) / 2;",
+                
"root.view.cal_view.multiple,root.view,DOUBLE,null,null,VIEW,root.db.d02.s01 * 
root.db.d02.s02;",
+                
"root.view.cal_view.divide,root.view,DOUBLE,null,null,VIEW,root.db.d02.s01 / 
root.db.d02.s02;",
+                
"root.view.cal_view.cast_view,root.view,TEXT,null,null,VIEW,cast(type=TEXT)(root.db.d01.s01);",
+                
"root.view.multi_view.all_in_one.d01_s01,root.view,INT32,null,null,VIEW,root.db.d01.s01;",
+                
"root.view.multi_view.all_in_one.d01_s02,root.view,INT32,null,null,VIEW,root.db.d01.s02;",
+                
"root.view.multi_view.all_in_one.d02_s01,root.view,INT32,null,null,VIEW,root.db.d02.s01;",
+                
"root.view.multi_view.all_in_one.d02_s02,root.view,INT32,null,null,VIEW,root.db.d02.s02;",
+                
"root.view.copy_view.d01.s01,root.view,INT32,null,null,VIEW,root.db.d01.s01;",
+                
"root.view.copy_view.d01.s02,root.view,INT32,null,null,VIEW,root.db.d01.s02;",
+                
"root.view.copy_view.d02.s01,root.view,INT32,null,null,VIEW,root.db.d02.s01;",
+                
"root.view.copy_view.d02.s02,root.view,INT32,null,null,VIEW,root.db.d02.s02;"));
 
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
diff --git 
a/integration-test/src/test/java/org/apache/iotdb/zeppelin/it/IoTDBInterpreterIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/zeppelin/it/IoTDBInterpreterIT.java
index 514b66c13e9..f88537b2b9b 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/zeppelin/it/IoTDBInterpreterIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/zeppelin/it/IoTDBInterpreterIT.java
@@ -308,12 +308,12 @@ public class IoTDBInterpreterIT {
     InterpreterResult actual = interpreter.internalInterpret("show 
timeseries", null);
     String gt =
         
"Timeseries\tAlias\tDatabase\tDataType\tEncoding\tCompression\tTags\tAttributes\tDeadband\tDeadbandParameters\tViewType\n"
-            + 
"root.test.wf01.wt01.temperature\tnull\troot.test.wf01\tFLOAT\tGORILLA\tSNAPPY\tnull\tnull\tnull\tnull\t\n"
-            + 
"root.test.wf01.wt01.status\tnull\troot.test.wf01\tBOOLEAN\tRLE\tSNAPPY\tnull\tnull\tnull\tnull\t\n"
-            + 
"root.test.wf01.wt01.hardware\tnull\troot.test.wf01\tFLOAT\tGORILLA\tSNAPPY\tnull\tnull\tnull\tnull\t\n"
-            + 
"root.test.wf02.wt02.temperature\tnull\troot.test.wf02\tFLOAT\tGORILLA\tSNAPPY\tnull\tnull\tnull\tnull\t\n"
-            + 
"root.test.wf02.wt02.status\tnull\troot.test.wf02\tBOOLEAN\tRLE\tSNAPPY\tnull\tnull\tnull\tnull\t\n"
-            + 
"root.test.wf02.wt02.hardware\tnull\troot.test.wf02\tFLOAT\tGORILLA\tSNAPPY\tnull\tnull\tnull\tnull\t";
+            + 
"root.test.wf01.wt01.temperature\tnull\troot.test.wf01\tFLOAT\tGORILLA\tSNAPPY\tnull\tnull\tnull\tnull\tBASE\n"
+            + 
"root.test.wf01.wt01.status\tnull\troot.test.wf01\tBOOLEAN\tRLE\tSNAPPY\tnull\tnull\tnull\tnull\tBASE\n"
+            + 
"root.test.wf01.wt01.hardware\tnull\troot.test.wf01\tFLOAT\tGORILLA\tSNAPPY\tnull\tnull\tnull\tnull\tBASE\n"
+            + 
"root.test.wf02.wt02.temperature\tnull\troot.test.wf02\tFLOAT\tGORILLA\tSNAPPY\tnull\tnull\tnull\tnull\tBASE\n"
+            + 
"root.test.wf02.wt02.status\tnull\troot.test.wf02\tBOOLEAN\tRLE\tSNAPPY\tnull\tnull\tnull\tnull\tBASE\n"
+            + 
"root.test.wf02.wt02.hardware\tnull\troot.test.wf02\tFLOAT\tGORILLA\tSNAPPY\tnull\tnull\tnull\tnull\tBASE";
     Assert.assertNotNull(actual);
     Assert.assertEquals(Code.SUCCESS, actual.code());
     Assert.assertEquals(gt, actual.message().get(0).getData());
diff --git a/iotdb-client/client-py/tests/test_dataframe.py 
b/iotdb-client/client-py/tests/test_dataframe.py
index 7cdabac6e00..d7dfcf78f2d 100644
--- a/iotdb-client/client-py/tests/test_dataframe.py
+++ b/iotdb-client/client-py/tests/test_dataframe.py
@@ -87,7 +87,7 @@ def test_non_time_query():
                 None,
                 None,
                 None,
-                "",
+                "BASE",
             ]
         ],
     )
diff --git 
a/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/SchemaFilter.java
 
b/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/SchemaFilter.java
index ccf9708c66b..21189924030 100644
--- 
a/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/SchemaFilter.java
+++ 
b/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/SchemaFilter.java
@@ -18,9 +18,11 @@
  */
 package org.apache.iotdb.commons.schema.filter;
 
+import org.apache.iotdb.commons.schema.filter.impl.AndFilter;
 import org.apache.iotdb.commons.schema.filter.impl.DataTypeFilter;
 import org.apache.iotdb.commons.schema.filter.impl.PathContainsFilter;
 import org.apache.iotdb.commons.schema.filter.impl.TagFilter;
+import org.apache.iotdb.commons.schema.filter.impl.ViewTypeFilter;
 import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
@@ -60,16 +62,20 @@ public abstract class SchemaFilter {
         return new PathContainsFilter(byteBuffer);
       case DATA_TYPE:
         return new DataTypeFilter(byteBuffer);
+      case VIEW_TYPE:
+        return new ViewTypeFilter(byteBuffer);
+      case AND:
+        return new AndFilter(byteBuffer);
       default:
         throw new IllegalArgumentException("Unsupported schema filter type: " 
+ type);
     }
   }
 
-  public abstract <R, C> R accept(SchemaFilterVisitor<R, C> visitor, C node);
+  public abstract <C> boolean accept(SchemaFilterVisitor<C> visitor, C node);
 
   public abstract SchemaFilterType getSchemaFilterType();
 
-  protected abstract void serialize(ByteBuffer byteBuffer);
+  public abstract void serialize(ByteBuffer byteBuffer);
 
-  protected abstract void serialize(DataOutputStream stream) throws 
IOException;
+  public abstract void serialize(DataOutputStream stream) throws IOException;
 }
diff --git 
a/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/SchemaFilterVisitor.java
 
b/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/SchemaFilterFactory.java
similarity index 52%
copy from 
node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/SchemaFilterVisitor.java
copy to 
node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/SchemaFilterFactory.java
index 2c32e8a7129..84dcc5b8a2a 100644
--- 
a/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/SchemaFilterVisitor.java
+++ 
b/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/SchemaFilterFactory.java
@@ -18,42 +18,39 @@
  */
 package org.apache.iotdb.commons.schema.filter;
 
+import org.apache.iotdb.commons.schema.filter.impl.AndFilter;
 import org.apache.iotdb.commons.schema.filter.impl.DataTypeFilter;
 import org.apache.iotdb.commons.schema.filter.impl.PathContainsFilter;
 import org.apache.iotdb.commons.schema.filter.impl.TagFilter;
+import org.apache.iotdb.commons.schema.filter.impl.ViewTypeFilter;
+import org.apache.iotdb.commons.schema.view.ViewType;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
-/**
- * This class provides a visitor of {@link SchemaFilter}, which can be 
extended to create a visitor
- * which only needs to handle a subset of the available methods.
- *
- * @param <R> The return type of the visit operation.
- */
-public abstract class SchemaFilterVisitor<R, C> {
+public class SchemaFilterFactory {
 
-  public R process(SchemaFilter filter, C context) {
-    if (filter == null) {
-      return visitNode(null, context);
-    } else {
-      return filter.accept(this, context);
-    }
+  public static SchemaFilter createTagFilter(String key, String value, boolean 
isContains) {
+    return new TagFilter(key, value, isContains);
   }
 
-  /** Top Level Description */
-  protected abstract R visitNode(SchemaFilter filter, C context);
-
-  public R visitFilter(SchemaFilter filter, C context) {
-    return visitNode(filter, context);
+  public static SchemaFilter createPathContainsFilter(String containString) {
+    return new PathContainsFilter(containString);
   }
 
-  public R visitTagFilter(TagFilter tagFilter, C context) {
-    return visitFilter(tagFilter, context);
+  public static SchemaFilter createDataTypeFilter(TSDataType dataType) {
+    return new DataTypeFilter(dataType);
   }
 
-  public R visitPathContainsFilter(PathContainsFilter pathContainsFilter, C 
context) {
-    return visitFilter(pathContainsFilter, context);
+  public static SchemaFilter createViewTypeFilter(ViewType viewType) {
+    return new ViewTypeFilter(viewType);
   }
 
-  public R visitDataTypeFilter(DataTypeFilter dataTypeFilter, C context) {
-    return visitFilter(dataTypeFilter, context);
+  public static SchemaFilter and(SchemaFilter left, SchemaFilter right) {
+    if (left == null) {
+      return right;
+    } else if (right == null) {
+      return left;
+    } else {
+      return new AndFilter(left, right);
+    }
   }
 }
diff --git 
a/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/SchemaFilterType.java
 
b/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/SchemaFilterType.java
index fc02cd99525..cf7abdca63a 100644
--- 
a/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/SchemaFilterType.java
+++ 
b/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/SchemaFilterType.java
@@ -22,7 +22,10 @@ public enum SchemaFilterType {
   NULL((short) -1),
   TAGS_FILTER((short) 1),
   PATH_CONTAINS((short) 2),
-  DATA_TYPE((short) 3);
+  DATA_TYPE((short) 3),
+  VIEW_TYPE((short) 4),
+  AND((short) 5),
+  ;
 
   private final short code;
 
@@ -44,6 +47,10 @@ public enum SchemaFilterType {
         return PATH_CONTAINS;
       case 3:
         return DATA_TYPE;
+      case 4:
+        return VIEW_TYPE;
+      case 5:
+        return AND;
       default:
         throw new IllegalArgumentException("Invalid input: " + code);
     }
diff --git 
a/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/SchemaFilterVisitor.java
 
b/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/SchemaFilterVisitor.java
index 2c32e8a7129..56084dd377f 100644
--- 
a/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/SchemaFilterVisitor.java
+++ 
b/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/SchemaFilterVisitor.java
@@ -11,26 +11,26 @@
  *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * "AS IS" BASIS, WITHOUT WARRANTIES Oboolean CONDITIONS OF ANY
  * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
 package org.apache.iotdb.commons.schema.filter;
 
+import org.apache.iotdb.commons.schema.filter.impl.AndFilter;
 import org.apache.iotdb.commons.schema.filter.impl.DataTypeFilter;
 import org.apache.iotdb.commons.schema.filter.impl.PathContainsFilter;
 import org.apache.iotdb.commons.schema.filter.impl.TagFilter;
+import org.apache.iotdb.commons.schema.filter.impl.ViewTypeFilter;
 
 /**
  * This class provides a visitor of {@link SchemaFilter}, which can be 
extended to create a visitor
  * which only needs to handle a subset of the available methods.
- *
- * @param <R> The return type of the visit operation.
  */
-public abstract class SchemaFilterVisitor<R, C> {
+public abstract class SchemaFilterVisitor<C> {
 
-  public R process(SchemaFilter filter, C context) {
+  public boolean process(SchemaFilter filter, C context) {
     if (filter == null) {
       return visitNode(null, context);
     } else {
@@ -39,21 +39,29 @@ public abstract class SchemaFilterVisitor<R, C> {
   }
 
   /** Top Level Description */
-  protected abstract R visitNode(SchemaFilter filter, C context);
+  protected abstract boolean visitNode(SchemaFilter filter, C context);
 
-  public R visitFilter(SchemaFilter filter, C context) {
+  public boolean visitFilter(SchemaFilter filter, C context) {
     return visitNode(filter, context);
   }
 
-  public R visitTagFilter(TagFilter tagFilter, C context) {
+  public boolean visitTagFilter(TagFilter tagFilter, C context) {
     return visitFilter(tagFilter, context);
   }
 
-  public R visitPathContainsFilter(PathContainsFilter pathContainsFilter, C 
context) {
+  public boolean visitPathContainsFilter(PathContainsFilter 
pathContainsFilter, C context) {
     return visitFilter(pathContainsFilter, context);
   }
 
-  public R visitDataTypeFilter(DataTypeFilter dataTypeFilter, C context) {
+  public boolean visitDataTypeFilter(DataTypeFilter dataTypeFilter, C context) 
{
     return visitFilter(dataTypeFilter, context);
   }
+
+  public boolean visitViewTypeFilter(ViewTypeFilter viewTypeFilter, C context) 
{
+    return visitFilter(viewTypeFilter, context);
+  }
+
+  public boolean visitAndFilter(AndFilter andFilter, C context) {
+    return andFilter.getLeft().accept(this, context) && 
andFilter.getRight().accept(this, context);
+  }
 }
diff --git 
a/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/DataTypeFilter.java
 
b/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/AndFilter.java
similarity index 58%
copy from 
node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/DataTypeFilter.java
copy to 
node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/AndFilter.java
index d48f8893ccb..5bcf0ca8c59 100644
--- 
a/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/DataTypeFilter.java
+++ 
b/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/AndFilter.java
@@ -21,45 +21,54 @@ package org.apache.iotdb.commons.schema.filter.impl;
 import org.apache.iotdb.commons.schema.filter.SchemaFilter;
 import org.apache.iotdb.commons.schema.filter.SchemaFilterType;
 import org.apache.iotdb.commons.schema.filter.SchemaFilterVisitor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 
-public class DataTypeFilter extends SchemaFilter {
+public class AndFilter extends SchemaFilter {
 
-  private final TSDataType dataType;
+  private final SchemaFilter left;
+  private final SchemaFilter right;
 
-  public DataTypeFilter(TSDataType dataType) {
-    this.dataType = dataType;
+  public AndFilter(SchemaFilter left, SchemaFilter right) {
+    // left and right should not be null
+    this.left = left;
+    this.right = right;
   }
 
-  public DataTypeFilter(ByteBuffer byteBuffer) {
-    this.dataType = TSDataType.deserializeFrom(byteBuffer);
+  public AndFilter(ByteBuffer byteBuffer) {
+    this.left = SchemaFilter.deserialize(byteBuffer);
+    this.right = SchemaFilter.deserialize(byteBuffer);
   }
 
-  public TSDataType getDataType() {
-    return dataType;
+  public SchemaFilter getLeft() {
+    return left;
+  }
+
+  public SchemaFilter getRight() {
+    return right;
   }
 
   @Override
-  public <R, C> R accept(SchemaFilterVisitor<R, C> visitor, C node) {
-    return visitor.visitDataTypeFilter(this, node);
+  public <C> boolean accept(SchemaFilterVisitor<C> visitor, C node) {
+    return visitor.visitAndFilter(this, node);
   }
 
   @Override
   public SchemaFilterType getSchemaFilterType() {
-    return SchemaFilterType.DATA_TYPE;
+    return SchemaFilterType.AND;
   }
 
   @Override
-  protected void serialize(ByteBuffer byteBuffer) {
-    dataType.serializeTo(byteBuffer);
+  public void serialize(ByteBuffer byteBuffer) {
+    left.serialize(byteBuffer);
+    right.serialize(byteBuffer);
   }
 
   @Override
-  protected void serialize(DataOutputStream stream) throws IOException {
-    dataType.serializeTo(stream);
+  public void serialize(DataOutputStream stream) throws IOException {
+    left.serialize(stream);
+    right.serialize(stream);
   }
 }
diff --git 
a/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/DataTypeFilter.java
 
b/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/DataTypeFilter.java
index d48f8893ccb..520718b1401 100644
--- 
a/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/DataTypeFilter.java
+++ 
b/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/DataTypeFilter.java
@@ -44,7 +44,7 @@ public class DataTypeFilter extends SchemaFilter {
   }
 
   @Override
-  public <R, C> R accept(SchemaFilterVisitor<R, C> visitor, C node) {
+  public <C> boolean accept(SchemaFilterVisitor<C> visitor, C node) {
     return visitor.visitDataTypeFilter(this, node);
   }
 
@@ -54,12 +54,12 @@ public class DataTypeFilter extends SchemaFilter {
   }
 
   @Override
-  protected void serialize(ByteBuffer byteBuffer) {
+  public void serialize(ByteBuffer byteBuffer) {
     dataType.serializeTo(byteBuffer);
   }
 
   @Override
-  protected void serialize(DataOutputStream stream) throws IOException {
+  public void serialize(DataOutputStream stream) throws IOException {
     dataType.serializeTo(stream);
   }
 }
diff --git 
a/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/PathContainsFilter.java
 
b/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/PathContainsFilter.java
index 871bea510e8..e0fdfae35c8 100644
--- 
a/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/PathContainsFilter.java
+++ 
b/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/PathContainsFilter.java
@@ -43,8 +43,8 @@ public class PathContainsFilter extends SchemaFilter {
   }
 
   @Override
-  public <R, C> R accept(SchemaFilterVisitor<R, C> visitor, C context) {
-    return visitor.visitPathContainsFilter(this, context);
+  public <C> boolean accept(SchemaFilterVisitor<C> visitor, C node) {
+    return visitor.visitPathContainsFilter(this, node);
   }
 
   @Override
@@ -53,12 +53,12 @@ public class PathContainsFilter extends SchemaFilter {
   }
 
   @Override
-  protected void serialize(ByteBuffer byteBuffer) {
+  public void serialize(ByteBuffer byteBuffer) {
     ReadWriteIOUtils.write(containString, byteBuffer);
   }
 
   @Override
-  protected void serialize(DataOutputStream stream) throws IOException {
+  public void serialize(DataOutputStream stream) throws IOException {
     ReadWriteIOUtils.write(containString, stream);
   }
 }
diff --git 
a/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/TagFilter.java
 
b/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/TagFilter.java
index 5a3388fc072..4fbe0008fd2 100644
--- 
a/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/TagFilter.java
+++ 
b/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/TagFilter.java
@@ -58,7 +58,7 @@ public class TagFilter extends SchemaFilter {
   }
 
   @Override
-  public <R, C> R accept(SchemaFilterVisitor<R, C> visitor, C node) {
+  public <C> boolean accept(SchemaFilterVisitor<C> visitor, C node) {
     return visitor.visitTagFilter(this, node);
   }
 
@@ -68,14 +68,14 @@ public class TagFilter extends SchemaFilter {
   }
 
   @Override
-  protected void serialize(ByteBuffer byteBuffer) {
+  public void serialize(ByteBuffer byteBuffer) {
     ReadWriteIOUtils.write(key, byteBuffer);
     ReadWriteIOUtils.write(value, byteBuffer);
     ReadWriteIOUtils.write(isContains, byteBuffer);
   }
 
   @Override
-  protected void serialize(DataOutputStream stream) throws IOException {
+  public void serialize(DataOutputStream stream) throws IOException {
     ReadWriteIOUtils.write(key, stream);
     ReadWriteIOUtils.write(value, stream);
     ReadWriteIOUtils.write(isContains, stream);
diff --git 
a/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/DataTypeFilter.java
 
b/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/ViewTypeFilter.java
similarity index 63%
copy from 
node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/DataTypeFilter.java
copy to 
node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/ViewTypeFilter.java
index d48f8893ccb..ed21a5719be 100644
--- 
a/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/DataTypeFilter.java
+++ 
b/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/ViewTypeFilter.java
@@ -21,45 +21,45 @@ package org.apache.iotdb.commons.schema.filter.impl;
 import org.apache.iotdb.commons.schema.filter.SchemaFilter;
 import org.apache.iotdb.commons.schema.filter.SchemaFilterType;
 import org.apache.iotdb.commons.schema.filter.SchemaFilterVisitor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+import org.apache.iotdb.commons.schema.view.ViewType;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 
-public class DataTypeFilter extends SchemaFilter {
+public class ViewTypeFilter extends SchemaFilter {
 
-  private final TSDataType dataType;
+  private final ViewType viewType;
 
-  public DataTypeFilter(TSDataType dataType) {
-    this.dataType = dataType;
+  public ViewTypeFilter(ViewType viewType) {
+    this.viewType = viewType;
   }
 
-  public DataTypeFilter(ByteBuffer byteBuffer) {
-    this.dataType = TSDataType.deserializeFrom(byteBuffer);
+  public ViewTypeFilter(ByteBuffer byteBuffer) {
+    this.viewType = ViewType.deserializeFrom(byteBuffer);
   }
 
-  public TSDataType getDataType() {
-    return dataType;
+  public ViewType getViewType() {
+    return viewType;
   }
 
   @Override
-  public <R, C> R accept(SchemaFilterVisitor<R, C> visitor, C node) {
-    return visitor.visitDataTypeFilter(this, node);
+  public <C> boolean accept(SchemaFilterVisitor<C> visitor, C node) {
+    return visitor.visitViewTypeFilter(this, node);
   }
 
   @Override
   public SchemaFilterType getSchemaFilterType() {
-    return SchemaFilterType.DATA_TYPE;
+    return SchemaFilterType.VIEW_TYPE;
   }
 
   @Override
-  protected void serialize(ByteBuffer byteBuffer) {
-    dataType.serializeTo(byteBuffer);
+  public void serialize(ByteBuffer byteBuffer) {
+    viewType.serializeTo(byteBuffer);
   }
 
   @Override
-  protected void serialize(DataOutputStream stream) throws IOException {
-    dataType.serializeTo(stream);
+  public void serialize(DataOutputStream stream) throws IOException {
+    viewType.serializeTo(stream);
   }
 }
diff --git 
a/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/ViewType.java 
b/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/ViewType.java
new file mode 100644
index 00000000000..d47558990a8
--- /dev/null
+++ 
b/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/ViewType.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.iotdb.commons.schema.view;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+
+public enum ViewType {
+  /** BASE */
+  BASE((byte) 0),
+  /** VIEW */
+  VIEW((byte) 1);
+
+  private final byte type;
+
+  ViewType(byte type) {
+    this.type = type;
+  }
+
+  public byte getType() {
+    return type;
+  }
+
+  public static ViewType deserialize(byte type) {
+    return getViewType(type);
+  }
+
+  public static ViewType deserializeFrom(ByteBuffer buffer) {
+    return deserialize(buffer.get());
+  }
+
+  public void serializeTo(ByteBuffer byteBuffer) {
+    byteBuffer.put(getType());
+  }
+
+  public void serializeTo(DataOutputStream outputStream) throws IOException {
+    outputStream.write(getType());
+  }
+
+  public static ViewType getViewType(byte type) {
+    switch (type) {
+      case 0:
+        return ViewType.BASE;
+      case 1:
+        return ViewType.VIEW;
+      default:
+        throw new IllegalArgumentException("Invalid input: " + type);
+    }
+  }
+}
diff --git 
a/server/src/main/java/org/apache/iotdb/db/metadata/plan/schemaregion/impl/read/SchemaRegionReadPlanFactory.java
 
b/server/src/main/java/org/apache/iotdb/db/metadata/plan/schemaregion/impl/read/SchemaRegionReadPlanFactory.java
index 57a801e4532..0156822a166 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/metadata/plan/schemaregion/impl/read/SchemaRegionReadPlanFactory.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/metadata/plan/schemaregion/impl/read/SchemaRegionReadPlanFactory.java
@@ -21,7 +21,7 @@ package 
org.apache.iotdb.db.metadata.plan.schemaregion.impl.read;
 
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.commons.schema.filter.SchemaFilter;
-import org.apache.iotdb.commons.schema.filter.impl.TagFilter;
+import org.apache.iotdb.commons.schema.filter.SchemaFilterFactory;
 import org.apache.iotdb.commons.utils.TestOnly;
 import org.apache.iotdb.db.metadata.plan.schemaregion.read.IShowDevicesPlan;
 import org.apache.iotdb.db.metadata.plan.schemaregion.read.IShowNodesPlan;
@@ -70,7 +70,12 @@ public class SchemaRegionReadPlanFactory {
   public static IShowTimeSeriesPlan getShowTimeSeriesPlan(
       PartialPath path, boolean isContains, String key, String value) {
     return new ShowTimeSeriesPlanImpl(
-        path, Collections.emptyMap(), 0, 0, false, new TagFilter(key, value, 
isContains));
+        path,
+        Collections.emptyMap(),
+        0,
+        0,
+        false,
+        SchemaFilterFactory.createTagFilter(key, value, isContains));
   }
 
   public static IShowTimeSeriesPlan getShowTimeSeriesPlan(
diff --git 
a/server/src/main/java/org/apache/iotdb/db/metadata/visitor/DeviceFilterVisitor.java
 
b/server/src/main/java/org/apache/iotdb/db/metadata/visitor/DeviceFilterVisitor.java
index 09dd2848d88..8f9c6a9c60d 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/metadata/visitor/DeviceFilterVisitor.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/metadata/visitor/DeviceFilterVisitor.java
@@ -23,14 +23,14 @@ import 
org.apache.iotdb.commons.schema.filter.SchemaFilterVisitor;
 import org.apache.iotdb.commons.schema.filter.impl.PathContainsFilter;
 import org.apache.iotdb.db.metadata.query.info.IDeviceSchemaInfo;
 
-public class DeviceFilterVisitor extends SchemaFilterVisitor<Boolean, 
IDeviceSchemaInfo> {
+public class DeviceFilterVisitor extends 
SchemaFilterVisitor<IDeviceSchemaInfo> {
   @Override
-  public Boolean visitNode(SchemaFilter filter, IDeviceSchemaInfo info) {
+  public boolean visitNode(SchemaFilter filter, IDeviceSchemaInfo info) {
     return true;
   }
 
   @Override
-  public Boolean visitPathContainsFilter(
+  public boolean visitPathContainsFilter(
       PathContainsFilter pathContainsFilter, IDeviceSchemaInfo info) {
     if (pathContainsFilter.getContainString() == null) {
       return true;
diff --git 
a/server/src/main/java/org/apache/iotdb/db/metadata/visitor/TimeseriesFilterVisitor.java
 
b/server/src/main/java/org/apache/iotdb/db/metadata/visitor/TimeseriesFilterVisitor.java
index 743c209722d..5910d52527f 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/metadata/visitor/TimeseriesFilterVisitor.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/metadata/visitor/TimeseriesFilterVisitor.java
@@ -22,16 +22,18 @@ import org.apache.iotdb.commons.schema.filter.SchemaFilter;
 import org.apache.iotdb.commons.schema.filter.SchemaFilterVisitor;
 import org.apache.iotdb.commons.schema.filter.impl.DataTypeFilter;
 import org.apache.iotdb.commons.schema.filter.impl.PathContainsFilter;
+import org.apache.iotdb.commons.schema.filter.impl.ViewTypeFilter;
+import org.apache.iotdb.commons.schema.view.ViewType;
 import org.apache.iotdb.db.metadata.query.info.ITimeSeriesSchemaInfo;
 
-public class TimeseriesFilterVisitor extends SchemaFilterVisitor<Boolean, 
ITimeSeriesSchemaInfo> {
+public class TimeseriesFilterVisitor extends 
SchemaFilterVisitor<ITimeSeriesSchemaInfo> {
   @Override
-  public Boolean visitNode(SchemaFilter filter, ITimeSeriesSchemaInfo info) {
+  public boolean visitNode(SchemaFilter filter, ITimeSeriesSchemaInfo info) {
     return true;
   }
 
   @Override
-  public Boolean visitPathContainsFilter(
+  public boolean visitPathContainsFilter(
       PathContainsFilter pathContainsFilter, ITimeSeriesSchemaInfo info) {
     if (pathContainsFilter.getContainString() == null) {
       return true;
@@ -40,7 +42,12 @@ public class TimeseriesFilterVisitor extends 
SchemaFilterVisitor<Boolean, ITimeS
   }
 
   @Override
-  public Boolean visitDataTypeFilter(DataTypeFilter dataTypeFilter, 
ITimeSeriesSchemaInfo info) {
+  public boolean visitDataTypeFilter(DataTypeFilter dataTypeFilter, 
ITimeSeriesSchemaInfo info) {
     return info.getSchema().getType() == dataTypeFilter.getDataType();
   }
+
+  @Override
+  public boolean visitViewTypeFilter(ViewTypeFilter viewTypeFilter, 
ITimeSeriesSchemaInfo info) {
+    return info.isLogicalView() == (viewTypeFilter.getViewType() == 
ViewType.VIEW);
+  }
 }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/source/LogicalViewSchemaSource.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/source/LogicalViewSchemaSource.java
index 1e1fc529987..ad72bd8b496 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/source/LogicalViewSchemaSource.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/source/LogicalViewSchemaSource.java
@@ -22,7 +22,9 @@ package 
org.apache.iotdb.db.mpp.execution.operator.schema.source;
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.commons.schema.filter.SchemaFilter;
+import org.apache.iotdb.commons.schema.filter.SchemaFilterFactory;
 import org.apache.iotdb.commons.schema.view.LogicalViewSchema;
+import org.apache.iotdb.commons.schema.view.ViewType;
 import 
org.apache.iotdb.db.metadata.plan.schemaregion.impl.read.SchemaRegionReadPlanFactory;
 import org.apache.iotdb.db.metadata.query.info.ITimeSeriesSchemaInfo;
 import org.apache.iotdb.db.metadata.query.reader.ISchemaReader;
@@ -35,7 +37,6 @@ import 
org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
-import java.util.NoSuchElementException;
 import java.util.stream.Collectors;
 
 import static org.apache.iotdb.db.metadata.MetadataConstant.ALL_MATCH_PATTERN;
@@ -48,7 +49,6 @@ public class LogicalViewSchemaSource implements 
ISchemaSource<ITimeSeriesSchemaI
   private final long offset;
 
   private final SchemaFilter schemaFilter;
-  private static final String viewTypeOfLogicalView = "logical";
 
   LogicalViewSchemaSource(
       PartialPath pathPattern, long limit, long offset, SchemaFilter 
schemaFilter) {
@@ -63,11 +63,16 @@ public class LogicalViewSchemaSource implements 
ISchemaSource<ITimeSeriesSchemaI
   @Override
   public ISchemaReader<ITimeSeriesSchemaInfo> getSchemaReader(ISchemaRegion 
schemaRegion) {
     try {
-      return new SchemaReaderLimitOffsetWrapper<ITimeSeriesSchemaInfo>(
-          new LogicalViewSchemaReader(
-              schemaRegion.getTimeSeriesReader(
-                  SchemaRegionReadPlanFactory.getShowTimeSeriesPlan(
-                      pathPattern, Collections.emptyMap(), 0, 0, false, 
schemaFilter))),
+      return new SchemaReaderLimitOffsetWrapper<>(
+          schemaRegion.getTimeSeriesReader(
+              SchemaRegionReadPlanFactory.getShowTimeSeriesPlan(
+                  pathPattern,
+                  Collections.emptyMap(),
+                  0,
+                  0,
+                  false,
+                  SchemaFilterFactory.and(
+                      schemaFilter, 
SchemaFilterFactory.createViewTypeFilter(ViewType.VIEW)))),
           limit,
           offset);
     } catch (MetadataException e) {
@@ -92,7 +97,7 @@ public class LogicalViewSchemaSource implements 
ISchemaSource<ITimeSeriesSchemaI
     builder.writeNullableText(3, mapToString(series.getTags()));
     builder.writeNullableText(4, mapToString(series.getAttributes()));
 
-    builder.writeNullableText(5, viewTypeOfLogicalView);
+    builder.writeNullableText(5, ViewType.VIEW.name());
     builder.writeNullableText(
         6, ((LogicalViewSchema) 
series.getSchema()).getExpression().toString());
     builder.declarePosition();
@@ -118,60 +123,4 @@ public class LogicalViewSchemaSource implements 
ISchemaSource<ITimeSeriesSchemaI
             .collect(Collectors.joining(","));
     return "{" + content + "}";
   }
-
-  // TODO: this reader may be replaced by filter in the future
-  private static class LogicalViewSchemaReader implements 
ISchemaReader<ITimeSeriesSchemaInfo> {
-
-    private final ISchemaReader<ITimeSeriesSchemaInfo> timeSeriesReader;
-
-    private ITimeSeriesSchemaInfo nextResult;
-
-    LogicalViewSchemaReader(ISchemaReader<ITimeSeriesSchemaInfo> 
timeSeriesReader) {
-      this.timeSeriesReader = timeSeriesReader;
-    }
-
-    @Override
-    public boolean isSuccess() {
-      return timeSeriesReader.isSuccess();
-    }
-
-    @Override
-    public Throwable getFailure() {
-      return timeSeriesReader.getFailure();
-    }
-
-    @Override
-    public void close() throws Exception {
-      timeSeriesReader.close();
-    }
-
-    @Override
-    public boolean hasNext() {
-      if (nextResult == null) {
-        getNext();
-      }
-      return nextResult != null;
-    }
-
-    @Override
-    public ITimeSeriesSchemaInfo next() {
-      if (!hasNext()) {
-        throw new NoSuchElementException();
-      }
-      ITimeSeriesSchemaInfo result = nextResult;
-      nextResult = null;
-      return result;
-    }
-
-    private void getNext() {
-      ITimeSeriesSchemaInfo timeSeriesSchemaInfo;
-      while (timeSeriesReader.hasNext()) {
-        timeSeriesSchemaInfo = timeSeriesReader.next();
-        if (timeSeriesSchemaInfo.isLogicalView()) {
-          nextResult = timeSeriesSchemaInfo;
-          return;
-        }
-      }
-    }
-  }
 }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/source/TimeSeriesSchemaSource.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/source/TimeSeriesSchemaSource.java
index d202e1e4c39..6752ee3ad55 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/source/TimeSeriesSchemaSource.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/source/TimeSeriesSchemaSource.java
@@ -22,6 +22,7 @@ package 
org.apache.iotdb.db.mpp.execution.operator.schema.source;
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.commons.schema.filter.SchemaFilter;
+import org.apache.iotdb.commons.schema.view.ViewType;
 import 
org.apache.iotdb.db.metadata.plan.schemaregion.impl.read.SchemaRegionReadPlanFactory;
 import org.apache.iotdb.db.metadata.query.info.ITimeSeriesSchemaInfo;
 import org.apache.iotdb.db.metadata.query.reader.ISchemaReader;
@@ -50,8 +51,6 @@ public class TimeSeriesSchemaSource implements 
ISchemaSource<ITimeSeriesSchemaIn
   private final SchemaFilter schemaFilter;
 
   private final Map<Integer, Template> templateMap;
-  private static final String viewTypeOfLogicalView = "logical";
-  private static final String viewTypeOfNonView = "";
 
   TimeSeriesSchemaSource(
       PartialPath pathPattern,
@@ -99,11 +98,11 @@ public class TimeSeriesSchemaSource implements 
ISchemaSource<ITimeSeriesSchemaIn
     if (series.isLogicalView()) {
       builder.writeNullableText(4, null);
       builder.writeNullableText(5, null);
-      builder.writeNullableText(10, viewTypeOfLogicalView);
+      builder.writeNullableText(10, ViewType.VIEW.name());
     } else {
       builder.writeNullableText(4, 
series.getSchema().getEncodingType().toString());
       builder.writeNullableText(5, 
series.getSchema().getCompressor().toString());
-      builder.writeNullableText(10, viewTypeOfNonView);
+      builder.writeNullableText(10, ViewType.BASE.name());
     }
     builder.writeNullableText(6, mapToString(series.getTags()));
     builder.writeNullableText(7, mapToString(series.getAttributes()));
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java
index 79d6fbe187b..ed6df252389 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java
@@ -29,9 +29,7 @@ import org.apache.iotdb.commons.cq.TimeoutPolicy;
 import org.apache.iotdb.commons.exception.IllegalPathException;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.commons.schema.filter.SchemaFilter;
-import org.apache.iotdb.commons.schema.filter.impl.DataTypeFilter;
-import org.apache.iotdb.commons.schema.filter.impl.PathContainsFilter;
-import org.apache.iotdb.commons.schema.filter.impl.TagFilter;
+import org.apache.iotdb.commons.schema.filter.SchemaFilterFactory;
 import org.apache.iotdb.commons.utils.PathUtils;
 import org.apache.iotdb.db.conf.IoTDBConfig;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
@@ -610,19 +608,19 @@ public class ASTVisitor extends 
IoTDBSqlParserBaseVisitor<Statement> {
   private SchemaFilter 
parseTimeseriesWhereClause(IoTDBSqlParser.TimeseriesWhereClauseContext ctx) {
     if (ctx.timeseriesContainsExpression() != null) {
       // path contains filter
-      return new PathContainsFilter(
+      return SchemaFilterFactory.createPathContainsFilter(
           
parseStringLiteral(ctx.timeseriesContainsExpression().value.getText()));
     } else if (ctx.columnEqualsExpression() != null) {
       return parseColumnEqualsExpressionContext(ctx.columnEqualsExpression());
     } else {
       // tag filter
       if (ctx.tagContainsExpression() != null) {
-        return new TagFilter(
+        return SchemaFilterFactory.createTagFilter(
             parseAttributeKey(ctx.tagContainsExpression().attributeKey()),
             parseStringLiteral(ctx.tagContainsExpression().value.getText()),
             true);
       } else {
-        return new TagFilter(
+        return SchemaFilterFactory.createTagFilter(
             parseAttributeKey(ctx.tagEqualsExpression().attributeKey()),
             parseAttributeValue(ctx.tagEqualsExpression().attributeValue()),
             false);
@@ -637,7 +635,7 @@ public class ASTVisitor extends 
IoTDBSqlParserBaseVisitor<Statement> {
     if (column.equalsIgnoreCase(IoTDBConstant.COLUMN_TIMESERIES_DATATYPE)) {
       try {
         TSDataType dataType = TSDataType.valueOf(value.toUpperCase());
-        return new DataTypeFilter(dataType);
+        return SchemaFilterFactory.createDataTypeFilter(dataType);
       } catch (Exception e) {
         throw new SemanticException(String.format("unsupported datatype: %s", 
value));
       }
@@ -698,7 +696,7 @@ public class ASTVisitor extends 
IoTDBSqlParserBaseVisitor<Statement> {
 
   private SchemaFilter 
parseDevicesWhereClause(IoTDBSqlParser.DevicesWhereClauseContext ctx) {
     // path contains filter
-    return new PathContainsFilter(
+    return SchemaFilterFactory.createPathContainsFilter(
         parseStringLiteral(ctx.deviceContainsExpression().value.getText()));
   }
 
diff --git 
a/server/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionBasicTest.java
 
b/server/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionBasicTest.java
index fe5025f59f2..1a0503f3553 100644
--- 
a/server/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionBasicTest.java
+++ 
b/server/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionBasicTest.java
@@ -22,8 +22,7 @@ import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.path.MeasurementPath;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.commons.path.PathPatternTree;
-import org.apache.iotdb.commons.schema.filter.impl.DataTypeFilter;
-import org.apache.iotdb.commons.schema.filter.impl.PathContainsFilter;
+import org.apache.iotdb.commons.schema.filter.SchemaFilterFactory;
 import org.apache.iotdb.commons.schema.node.MNodeType;
 import org.apache.iotdb.db.exception.metadata.AliasAlreadyExistException;
 import org.apache.iotdb.db.exception.metadata.MeasurementAlreadyExistException;
@@ -722,7 +721,11 @@ public class SchemaRegionBasicTest extends 
AbstractSchemaRegionTest {
         SchemaRegionTestUtil.getMatchedDevices(
             schemaRegion,
             SchemaRegionReadPlanFactory.getShowDevicesPlan(
-                new PartialPath("root.**"), 0, 0, false, new 
PathContainsFilter("laptop")));
+                new PartialPath("root.**"),
+                0,
+                0,
+                false,
+                SchemaFilterFactory.createPathContainsFilter("laptop")));
     expectedHashset = new HashSet<>(expectedList);
     actualHashset = new HashSet<>(actualResult);
     Assert.assertEquals(expectedHashset, actualHashset);
@@ -735,7 +738,11 @@ public class SchemaRegionBasicTest extends 
AbstractSchemaRegionTest {
         SchemaRegionTestUtil.getMatchedDevices(
             schemaRegion,
             SchemaRegionReadPlanFactory.getShowDevicesPlan(
-                new PartialPath("root.**"), 2, 0, false, new 
PathContainsFilter("laptop.d")));
+                new PartialPath("root.**"),
+                2,
+                0,
+                false,
+                SchemaFilterFactory.createPathContainsFilter("laptop.d")));
     expectedHashset = new HashSet<>(expectedList);
     actualHashset = new HashSet<>(actualResult);
     Assert.assertEquals(expectedHashset, actualHashset);
@@ -807,7 +814,7 @@ public class SchemaRegionBasicTest extends 
AbstractSchemaRegionTest {
                 0,
                 0,
                 false,
-                new PathContainsFilter("s")));
+                SchemaFilterFactory.createPathContainsFilter("s")));
     expectedPathList =
         new HashSet<>(
             Arrays.asList(
@@ -834,7 +841,7 @@ public class SchemaRegionBasicTest extends 
AbstractSchemaRegionTest {
                 0,
                 0,
                 false,
-                new PathContainsFilter("1")));
+                SchemaFilterFactory.createPathContainsFilter("1")));
     expectedPathList =
         new HashSet<>(
             Arrays.asList(
@@ -860,7 +867,7 @@ public class SchemaRegionBasicTest extends 
AbstractSchemaRegionTest {
                 0,
                 0,
                 false,
-                new PathContainsFilter("laptop.d")));
+                SchemaFilterFactory.createPathContainsFilter("laptop.d")));
     expectedPathList =
         new HashSet<>(
             Arrays.asList(
@@ -888,7 +895,7 @@ public class SchemaRegionBasicTest extends 
AbstractSchemaRegionTest {
                 0,
                 0,
                 false,
-                new DataTypeFilter(TSDataType.INT64)));
+                SchemaFilterFactory.createDataTypeFilter(TSDataType.INT64)));
     expectedPathList =
         new HashSet<>(
             Arrays.asList(
@@ -916,7 +923,7 @@ public class SchemaRegionBasicTest extends 
AbstractSchemaRegionTest {
                 0,
                 0,
                 false,
-                new DataTypeFilter(TSDataType.BOOLEAN)));
+                SchemaFilterFactory.createDataTypeFilter(TSDataType.BOOLEAN)));
     expectedPathList = new HashSet<>(Collections.emptyList());
     expectedSize = expectedPathList.size();
     Assert.assertEquals(expectedSize, result.size());

Reply via email to