-
Notifications
You must be signed in to change notification settings - Fork 98
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
IGNITE-23604 Start a table driven implicit transaction for key-value plans #4927
base: main
Are you sure you want to change the base?
Conversation
8932980
to
c543788
Compare
75a0461
to
df4379c
Compare
3b856f2
to
9b0563b
Compare
// underlying table will initiate transaction by itself, but we need stub to reuse | ||
// TxAwareAsyncCursor | ||
txWrapper = NoopTransactionWrapper.INSTANCE; | ||
txWrapper = plan.transactional() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the only "non-transactional" plan is SelectCountPlan
which is more like temporal solution. I would prefer not to introduce transactional
property on ExecutablePlan
interface, and get rid of NoopTransactionWrapper
instead
@@ -221,7 +221,7 @@ public <RowT> Publisher<RowT> indexLookup( | |||
@Override | |||
public <RowT> CompletableFuture<RowT> primaryKeyLookup( | |||
ExecutionContext<RowT> ctx, | |||
@Nullable InternalTransaction explicitTx, | |||
InternalTransaction tx, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think, it worth to add assertion making sure no-one is passing null
instead of transaction
|
||
if (projection != null) { | ||
row = projection.apply(row); | ||
try { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
does it make sense to move this try-catch
on ExecutionServiceImpl
level? This way we cover all the problem in a single place
* @param tableDriven Indicates whether the implicit transaction will be managed by the table storage or the SQL engine. | ||
* @return Transaction wrapper. | ||
*/ | ||
QueryTransactionWrapper getOrStartImplicit(boolean readOnly, boolean tableDriven); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
perhaps, it would be better to change names to getOrStartSqlManaged(readOnly, implicit)
, WDYT?
https://issues.apache.org/jira/browse/IGNITE-23604