[
https://issues.apache.org/jira/browse/PHOENIX-900?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14325302#comment-14325302
]
ASF GitHub Bot commented on PHOENIX-900:
----------------------------------------
Github user JamesRTaylor commented on a diff in the pull request:
https://github.com/apache/phoenix/pull/37#discussion_r24874083
--- Diff:
phoenix-core/src/main/java/org/apache/phoenix/execute/MutationState.java ---
@@ -488,7 +488,62 @@ public void rollback(PhoenixConnection connection)
throws SQLException {
numRows = 0;
}
+ private Set<Integer> getUncommittedSattementIndexes() {
+ Set<Integer> result = newHashSet();
+ for (Map<ImmutableBytesPtr, RowMutationState> rowMutations :
mutations.values()) {
+ for (RowMutationState rowMutationState :
rowMutations.values()) {
+
result.addAll(rowMutationState.getOrderOfStatementsInConnection());
+ }
+ }
+ return result;
+ }
+
@Override
public void close() throws SQLException {
}
+
+ public static class RowMutationState {
+ private Map<PColumn,byte[]> columnValues;
+ private Set<Integer> orderOfStatementsInConnection;
+
+ public RowMutationState(@NotNull Map<PColumn,byte[]> columnValues,
int orderOfStatementInConnection) {
+ Preconditions.checkNotNull(columnValues);
+
+ this.columnValues = columnValues;
+ this.orderOfStatementsInConnection =
Sets.newHashSet(orderOfStatementInConnection);
+ }
+
+ public RowMutationState(@NotNull Map<PColumn,byte[]> columnValues,
@NotNull Set<Integer> orderOfStatementsInConnection) {
+ Preconditions.checkNotNull(columnValues);
+ Preconditions.checkNotNull(orderOfStatementsInConnection);
+
+ this.columnValues = columnValues;
+ this.orderOfStatementsInConnection =
orderOfStatementsInConnection;
+ }
+
+ Map<PColumn, byte[]> getColumnValues() {
+ return columnValues;
+ }
+
+ Set<Integer> getOrderOfStatementsInConnection() {
+ return orderOfStatementsInConnection;
+ }
+
+ void join(RowMutationState newRow) {
+ for (Map.Entry<PColumn,byte[]> valueEntry :
newRow.getColumnValues().entrySet()) {
--- End diff --
Can this for loop be replaced with
getColumnValues().putAll(newRow.getColumnValues()) ?
> Partial results for mutations
> -----------------------------
>
> Key: PHOENIX-900
> URL: https://issues.apache.org/jira/browse/PHOENIX-900
> Project: Phoenix
> Issue Type: Bug
> Affects Versions: 3.0.0, 4.0.0
> Reporter: Eli Levine
> Assignee: Eli Levine
> Attachments: PHOENIX-900.patch
>
>
> HBase provides a way to retrieve partial results of a batch operation:
> http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/HTable.html#batch%28java.util.List,%20java.lang.Object[]%29
> Chatted with James about this offline:
> Yes, this could be included in the CommitException we throw
> (MutationState:412). We already include the batches that have been
> successfully committed to the HBase server in this exception. Would you be up
> for adding this additional information? You'd want to surface this in a
> Phoenix-y way in a method on CommitException, something like this: ResultSet
> getPartialCommits(). You can easily create an in memory ResultSet using
> MaterializedResultIterator plus the PhoenixResultSet constructor that accepts
> this (just create a new empty PhoenixStatement with the PhoenixConnection for
> the other arg).
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)