[
https://issues.apache.org/jira/browse/PHOENIX-914?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14942481#comment-14942481
]
Hudson commented on PHOENIX-914:
--------------------------------
FAILURE: Integrated in Phoenix-master #908 (See
[https://builds.apache.org/job/Phoenix-master/908/])
PHOENIX-914 Native HBase timestamp support to optimize date range (samarth: rev
c2cb510048fb07792d4639f211e98b8a95281f2f)
*
phoenix-core/src/main/java/org/apache/phoenix/parse/ColumnDefInPkConstraint.java
* phoenix-core/src/main/java/org/apache/phoenix/schema/PDatum.java
* phoenix-core/src/main/java/org/apache/phoenix/compile/FromCompiler.java
* phoenix-core/src/main/java/org/apache/phoenix/compile/WhereOptimizer.java
*
phoenix-core/src/test/java/org/apache/phoenix/iterate/AggregateResultScannerTest.java
* phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertValuesIT.java
* phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java
* phoenix-core/src/test/java/org/apache/phoenix/compile/QueryCompilerTest.java
* phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertSelectIT.java
* phoenix-core/src/test/java/org/apache/phoenix/parse/QueryParserTest.java
* phoenix-core/src/main/java/org/apache/phoenix/compile/DeleteCompiler.java
* phoenix-core/src/main/java/org/apache/phoenix/compile/TraceQueryPlan.java
*
phoenix-core/src/main/java/org/apache/phoenix/coprocessor/generated/PTableProtos.java
*
phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataProtocol.java
* phoenix-core/src/main/java/org/apache/phoenix/execute/MutationState.java
*
phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixPreparedStatement.java
* phoenix-core/src/main/java/org/apache/phoenix/compile/ScanRanges.java
* phoenix-core/src/main/java/org/apache/phoenix/schema/PTable.java
* phoenix-core/src/test/java/org/apache/phoenix/execute/UnnestArrayPlanTest.java
* phoenix-core/src/main/java/org/apache/phoenix/compile/ListJarsQueryPlan.java
* phoenix-core/src/main/java/org/apache/phoenix/schema/PColumn.java
* phoenix-core/src/main/java/org/apache/phoenix/query/QueryConstants.java
* phoenix-protocol/src/main/PTable.proto
* phoenix-core/src/main/java/org/apache/phoenix/parse/ColumnDef.java
* phoenix-core/src/main/java/org/apache/phoenix/parse/ParseNodeFactory.java
* phoenix-core/src/main/java/org/apache/phoenix/schema/DelegateTable.java
*
phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixDatabaseMetaData.java
* phoenix-core/src/test/java/org/apache/phoenix/jdbc/PhoenixDriverTest.java
* phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixConnection.java
* phoenix-core/src/it/java/org/apache/phoenix/end2end/DeleteIT.java
* phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterTableIT.java
* phoenix-core/src/main/antlr3/PhoenixSQL.g
*
phoenix-core/src/test/java/org/apache/phoenix/expression/ColumnExpressionTest.java
* phoenix-core/src/main/java/org/apache/phoenix/compile/PostDDLCompiler.java
* phoenix-core/src/main/java/org/apache/phoenix/schema/DelegateColumn.java
* phoenix-core/src/main/java/org/apache/phoenix/util/ScanUtil.java
* phoenix-core/src/main/java/org/apache/phoenix/compile/UnionCompiler.java
*
phoenix-core/src/main/java/org/apache/phoenix/compile/PostIndexDDLCompiler.java
* phoenix-core/src/main/java/org/apache/phoenix/schema/PMetaDataImpl.java
* phoenix-core/src/main/java/org/apache/phoenix/compile/UpsertCompiler.java
* phoenix-core/src/main/java/org/apache/phoenix/schema/PColumnImpl.java
* phoenix-core/src/main/java/org/apache/phoenix/schema/PTableImpl.java
* phoenix-core/src/test/java/org/apache/phoenix/compile/WhereOptimizerTest.java
*
phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java
*
phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
* phoenix-core/src/main/java/org/apache/phoenix/schema/SaltingUtil.java
* phoenix-core/src/main/java/org/apache/phoenix/parse/PrimaryKeyConstraint.java
* phoenix-core/src/main/java/org/apache/phoenix/compile/StatementContext.java
* phoenix-core/src/main/java/org/apache/phoenix/execute/BaseQueryPlan.java
* phoenix-core/src/main/java/org/apache/phoenix/exception/SQLExceptionCode.java
* phoenix-core/src/test/java/org/apache/phoenix/execute/CorrelatePlanTest.java
* phoenix-core/src/main/java/org/apache/phoenix/iterate/ExplainTable.java
> Native HBase timestamp support to optimize date range queries in Phoenix
> -------------------------------------------------------------------------
>
> Key: PHOENIX-914
> URL: https://issues.apache.org/jira/browse/PHOENIX-914
> Project: Phoenix
> Issue Type: Improvement
> Affects Versions: 4.0.0
> Reporter: Vladimir Rodionov
> Assignee: Samarth Jain
> Fix For: 4.6.0
>
> Attachments: PHOENIX-914.patch, PHOENIX-914.patch,
> PHOENIX-914_v2.patch, PHOENIX-914_v3.patch, wip.patch
>
>
> For many applications one of the column of a table can be (and must be)
> naturally mapped
> to HBase timestamp. What it gives us is the optimization on StoreScanner
> where HFiles with timestamps out of range of
> a Scan operator will be omitted. Let us say that we have time-series type of
> data (EVENTS) and custom compaction, where we create
> series of HFiles with continuous non-overlapping timestamp ranges.
> CREATE TABLE IF NOT EXISTS ODS.EVENTS (
> METRICID VARCHAR NOT NULL,
> METRICNAME VARCHAR,
> SERVICENAME VARCHAR NOT NULL,
> ORIGIN VARCHAR NOT NULL,
> APPID VARCHAR,
> IPID VARCHAR,
> NVALUE DOUBLE,
> TIME TIMESTAMP NOT NULL /+ TIMESTAMP +/,
> DATA VARCHAR,
> SVALUE VARCHAR
> CONSTRAINT PK PRIMARY KEY (METRICID, SERVICENAME, ORIGIN, APPID, IPID,
> TIME)
> ) SALT_BUCKETS=40, IMMUTABLE_ROWS=true,VERSIONS=1,DATA_BLOCK_ENCODING='NONE';
> Make note on TIME TIMESTAMP NOT NULL /+ TIMESTAMP +/ - this is the Hint to
> Phoenix that the column
> TIME must be mapped to HBase timestamp.
> The Query:
> Select all events of type 'X' for last 7 days
> SELECT * from EVENTS WHERE METRICID = 'X' and TIME < NOW() and TIME > NOW() -
> 7*24*3600000; (this may be not correct SQL syntax of course)
> These types of queries will be efficiently optimized if:
> 1. Phoenix maps TIME column to HBase timestamp
> 2. Phoenix smart enough to map WHERE clause on TIME attribute to Scan
> timerange
> Although this :
> Properties props = new Properties();
> props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts));
> Connection conn = DriverManager.connect(myUrl, props);
> conn.createStatement().execute("UPSERT INTO myTable VALUES ('a')");
> conn.commit();
> will work in my case- it may not be efficient from performance point of view
> because for every INSERT/UPSERT
> new Connection object and new Statement is created, beside this we still need
> the optimization 2. (see above).
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)