[ 
https://issues.apache.org/jira/browse/PHOENIX-7006?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17793873#comment-17793873
 ] 

ASF GitHub Bot commented on PHOENIX-7006:
-----------------------------------------

gjacoby126 commented on code in PR #1751:
URL: https://github.com/apache/phoenix/pull/1751#discussion_r1417785517


##########
phoenix-core/src/it/java/org/apache/phoenix/end2end/CreateTableIT.java:
##########
@@ -1699,6 +1701,27 @@ public void testCreateTableWithNoVerify() throws 
SQLException, IOException, Inte
         }
     }
 
+    @Test
+    public void testCreateTableWithTableLevelMaxLookbackAge() throws Exception 
{
+        String schemaName = generateUniqueName();
+        String dataTableName = generateUniqueName();
+        String fullTableName = SchemaUtil.getTableName(schemaName, 
dataTableName);
+        try(Connection conn = DriverManager.getConnection(getUrl())) {
+            String createDdl = "CREATE TABLE " + fullTableName +
+                    " (id char(1) NOT NULL," + " col1 integer NOT NULL," + " 
col2 bigint NOT NULL," +
+                    " CONSTRAINT NAME_PK PRIMARY KEY (id, col1, col2)) " +
+                    "MAX_LOOKBACK_AGE=259200000"; // Set table level max 
lookback age to 3 days in milli-seconds

Review Comment:
   nit: 259200000 can be a variable or constant since it's used twice in this 
method. 



##########
phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java:
##########
@@ -3153,6 +3158,7 @@ public boolean isViewReferenced() {
             } else {
                 tableUpsert.setNull(36, Types.VARCHAR);
             }
+            tableUpsert.setLong(37, maxLookbackAge);

Review Comment:
   When creating a table from now on maxlookbackage will default to 0 instead 
of NULL? Are we sure that we aren't introducing assumptions that max lookback 
age is non null elsewhere, since existing tables will have the value be null?



##########
phoenix-core/src/main/java/org/apache/phoenix/schema/PTable.java:
##########
@@ -997,6 +997,8 @@ IndexMaintainer getIndexMaintainer(PTable dataTable, 
PhoenixConnection connectio
      * @throws SQLException
      */
     Set<ColumnReference> getIndexWhereColumns(PhoenixConnection connection) 
throws SQLException;
+
+    long getMaxLookbackAge();

Review Comment:
   We're absolutely sure that every path that can possibly create a PTable from 
a table without a max lookback age will transparently use the default?



##########
phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java:
##########
@@ -5882,6 +5912,14 @@ public void setSchemaVersion(String schemaVersion) {
         public void setStreamingTopicName(String streamingTopicName) {
             this.streamingTopicName = streamingTopicName;
         }
+
+        public Long getMaxLookbackAge() {

Review Comment:
   So here max lookback age is a Long, and we have some logic dealing with it 
being null at, e.g line 5578...but elsewhere like on PTable we're assuming it's 
a long that can't be null. 





> Configure maxLookbackAge at table level
> ---------------------------------------
>
>                 Key: PHOENIX-7006
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-7006
>             Project: Phoenix
>          Issue Type: Improvement
>            Reporter: Viraj Jasani
>            Assignee: Sanjeet Malhotra
>            Priority: Major
>
> Phoenix max lookback age feature preserves live or deleted row versions that 
> are only visible through the max lookback window, it does not preserve any 
> unwanted row versions that should not be visible through the max lookback 
> window. More details on the max lookback redesign: PHOENIX-6888
> As of today, maxlookback age is only configurable at the cluster level 
> (config key: {_}phoenix.max.lookback.age.seconds{_}), meaning the same value 
> is used by all tables. This does not allow individual table level compaction 
> scanner to be able to retain data based on the table level maxlookback age. 
> Setting max lookback age at the table level can serve multiple purposes e.g. 
> change-data-capture (PHOENIX-7001) for individual table should have it's own 
> latest data retention period.
> The purpose of this Jira is to allow maxlookback age as a table level 
> property:
>  * New column in SYSTEM.CATALOG to preserve table level maxlookback age
>  * PTable object to read the value of maxlookback from SYSTEM.CATALOG
>  * Allow CREATE/ALTER TABLE DDLs to provide maxlookback attribute
>  * CompactionScanner should use table level maxlookbackAge, if available, 
> else use cluster level config



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to