stalary commented on code in PR #9786:
URL: https://github.com/apache/incubator-doris/pull/9786#discussion_r882408928


##########
fe/fe-core/src/main/java/org/apache/doris/policy/Policy.java:
##########
@@ -17,106 +17,97 @@
 
 package org.apache.doris.policy;
 
-import org.apache.doris.analysis.CreatePolicyStmt;
-import org.apache.doris.analysis.Expr;
-import org.apache.doris.analysis.SqlParser;
-import org.apache.doris.analysis.SqlScanner;
+import org.apache.doris.analysis.CreateTablePolicyStmt;
 import org.apache.doris.analysis.UserIdentity;
 import org.apache.doris.catalog.Catalog;
 import org.apache.doris.catalog.Database;
 import org.apache.doris.catalog.Table;
 import org.apache.doris.common.AnalysisException;
 import org.apache.doris.common.io.Text;
 import org.apache.doris.common.io.Writable;
-import org.apache.doris.common.util.SqlParserUtils;
 import org.apache.doris.persist.gson.GsonPostProcessable;
 import org.apache.doris.persist.gson.GsonUtils;
 import org.apache.doris.qe.ConnectContext;
 
-import com.google.common.collect.Lists;
 import com.google.gson.annotations.SerializedName;
-import lombok.AllArgsConstructor;
-import lombok.Data;
+
+import org.apache.commons.lang.StringUtils;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
-import java.io.StringReader;
 import java.util.List;
 
+import lombok.Data;
+
 /**
  * Save policy for filtering data.
  **/
 @Data
-@AllArgsConstructor
-public class Policy implements Writable, GsonPostProcessable {
-
-    public static final String ROW_POLICY = "ROW";
+public abstract class Policy implements Writable, GsonPostProcessable {
 
     private static final Logger LOG = LogManager.getLogger(Policy.class);
 
-    @SerializedName(value = "dbId")
-    private long dbId;
-
-    @SerializedName(value = "tableId")
-    private long tableId;
-
-    @SerializedName(value = "policyName")
-    private String policyName;
-
-    /**
-     * ROW.
-     **/
     @SerializedName(value = "type")
-    private PolicyTypeEnum type;
+    protected PolicyTypeEnum type;
 
-    /**
-     * PERMISSIVE | RESTRICTIVE, If multiple types exist, the last type 
prevails.
-     **/
-    @SerializedName(value = "filterType")
-    private final FilterType filterType;
+    @SerializedName(value = "policyName")
+    protected String policyName;
 
-    private Expr wherePredicate;
+    @SerializedName(value = "dbId")
+    protected long dbId;

Review Comment:
   Is it possible that stroage is not for DB, but for be nodes?



##########
fe/fe-core/src/main/java/org/apache/doris/policy/Policy.java:
##########
@@ -17,106 +17,97 @@
 
 package org.apache.doris.policy;
 
-import org.apache.doris.analysis.CreatePolicyStmt;
-import org.apache.doris.analysis.Expr;
-import org.apache.doris.analysis.SqlParser;
-import org.apache.doris.analysis.SqlScanner;
+import org.apache.doris.analysis.CreateTablePolicyStmt;
 import org.apache.doris.analysis.UserIdentity;
 import org.apache.doris.catalog.Catalog;
 import org.apache.doris.catalog.Database;
 import org.apache.doris.catalog.Table;
 import org.apache.doris.common.AnalysisException;
 import org.apache.doris.common.io.Text;
 import org.apache.doris.common.io.Writable;
-import org.apache.doris.common.util.SqlParserUtils;
 import org.apache.doris.persist.gson.GsonPostProcessable;
 import org.apache.doris.persist.gson.GsonUtils;
 import org.apache.doris.qe.ConnectContext;
 
-import com.google.common.collect.Lists;
 import com.google.gson.annotations.SerializedName;
-import lombok.AllArgsConstructor;
-import lombok.Data;
+
+import org.apache.commons.lang.StringUtils;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
-import java.io.StringReader;
 import java.util.List;
 
+import lombok.Data;
+
 /**
  * Save policy for filtering data.
  **/
 @Data
-@AllArgsConstructor
-public class Policy implements Writable, GsonPostProcessable {
-
-    public static final String ROW_POLICY = "ROW";
+public abstract class Policy implements Writable, GsonPostProcessable {
 
     private static final Logger LOG = LogManager.getLogger(Policy.class);
 
-    @SerializedName(value = "dbId")
-    private long dbId;
-
-    @SerializedName(value = "tableId")
-    private long tableId;
-
-    @SerializedName(value = "policyName")
-    private String policyName;
-
-    /**
-     * ROW.
-     **/
     @SerializedName(value = "type")
-    private PolicyTypeEnum type;
+    protected PolicyTypeEnum type;
 
-    /**
-     * PERMISSIVE | RESTRICTIVE, If multiple types exist, the last type 
prevails.
-     **/
-    @SerializedName(value = "filterType")
-    private final FilterType filterType;
+    @SerializedName(value = "policyName")
+    protected String policyName;
 
-    private Expr wherePredicate;
+    @SerializedName(value = "dbId")
+    protected long dbId;
 
     /**
      * Policy bind user.
      **/
     @SerializedName(value = "user")
-    private final UserIdentity user;
+    protected final UserIdentity user;
 
     /**
      * Use for Serialization/deserialization.
      **/
     @SerializedName(value = "originStmt")
-    private String originStmt;
+    protected String originStmt;
+
+    public Policy() {
+        user = null;

Review Comment:
   Maybe we can not use final for user?



##########
fe/fe-core/src/main/java/org/apache/doris/policy/Policy.java:
##########
@@ -17,106 +17,97 @@
 
 package org.apache.doris.policy;
 
-import org.apache.doris.analysis.CreatePolicyStmt;
-import org.apache.doris.analysis.Expr;
-import org.apache.doris.analysis.SqlParser;
-import org.apache.doris.analysis.SqlScanner;
+import org.apache.doris.analysis.CreateTablePolicyStmt;
 import org.apache.doris.analysis.UserIdentity;
 import org.apache.doris.catalog.Catalog;
 import org.apache.doris.catalog.Database;
 import org.apache.doris.catalog.Table;
 import org.apache.doris.common.AnalysisException;
 import org.apache.doris.common.io.Text;
 import org.apache.doris.common.io.Writable;
-import org.apache.doris.common.util.SqlParserUtils;
 import org.apache.doris.persist.gson.GsonPostProcessable;
 import org.apache.doris.persist.gson.GsonUtils;
 import org.apache.doris.qe.ConnectContext;
 
-import com.google.common.collect.Lists;
 import com.google.gson.annotations.SerializedName;
-import lombok.AllArgsConstructor;
-import lombok.Data;
+
+import org.apache.commons.lang.StringUtils;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
-import java.io.StringReader;
 import java.util.List;
 
+import lombok.Data;
+
 /**
  * Save policy for filtering data.
  **/
 @Data
-@AllArgsConstructor
-public class Policy implements Writable, GsonPostProcessable {
-
-    public static final String ROW_POLICY = "ROW";
+public abstract class Policy implements Writable, GsonPostProcessable {
 
     private static final Logger LOG = LogManager.getLogger(Policy.class);
 
-    @SerializedName(value = "dbId")
-    private long dbId;
-
-    @SerializedName(value = "tableId")
-    private long tableId;
-
-    @SerializedName(value = "policyName")
-    private String policyName;
-
-    /**
-     * ROW.
-     **/
     @SerializedName(value = "type")
-    private PolicyTypeEnum type;
+    protected PolicyTypeEnum type;
 
-    /**
-     * PERMISSIVE | RESTRICTIVE, If multiple types exist, the last type 
prevails.
-     **/
-    @SerializedName(value = "filterType")
-    private final FilterType filterType;
+    @SerializedName(value = "policyName")
+    protected String policyName;
 
-    private Expr wherePredicate;
+    @SerializedName(value = "dbId")
+    protected long dbId;
 
     /**
      * Policy bind user.
      **/
     @SerializedName(value = "user")
-    private final UserIdentity user;
+    protected final UserIdentity user;
 
     /**
      * Use for Serialization/deserialization.
      **/
     @SerializedName(value = "originStmt")
-    private String originStmt;
+    protected String originStmt;
+
+    public Policy() {
+        user = null;
+    }
 
+    public Policy(final PolicyTypeEnum type, final String policyName, long 
dbId,
+                  UserIdentity user, String originStmt) {
+        this.type = type;
+        this.policyName = policyName;
+        this.dbId = dbId;
+        this.user = user;
+        this.originStmt = originStmt;
+    }
     /**
      * Trans stmt to Policy.
      **/
-    public static Policy fromCreateStmt(CreatePolicyStmt stmt) throws 
AnalysisException {
+    public static Policy fromCreateStmt(CreateTablePolicyStmt stmt) throws 
AnalysisException {

Review Comment:
   Is it better to use CreateTablePolicyStmt in TablePolicy?



##########
fe/fe-core/src/main/java/org/apache/doris/policy/PolicyMgr.java:
##########
@@ -68,7 +68,7 @@ public class PolicyMgr implements Writable {
      * Cache merge policy for match.
      * key:dbId:tableId-type-user
      **/
-    private Map<Long, Map<String, Policy>> dbIdToMergePolicyMap = 
Maps.newConcurrentMap();
+    private Map<Long, Map<String, TablePolicy>> dbIdToMergePolicyMap = 
Maps.newConcurrentMap();

Review Comment:
   ```suggestion
       private Map<Long, Map<String, TablePolicy>> dbIdToMergeTablePolicyMap = 
Maps.newConcurrentMap();
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to