Skip to content

Commit 129fc3f

Browse files
authored
Merge pull request #1034 from dolthub/perf/autocommit-next
Optimize write transaction begin refresh
2 parents d127e5e + 309d527 commit 129fc3f

1 file changed

Lines changed: 14 additions & 6 deletions

File tree

src/prolly_btree.c

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4967,15 +4967,20 @@ static int prollyBtreeBeginTrans(Btree *p, int wrFlag, int *pSchemaVersion){
49674967
return SQLITE_BUSY_SNAPSHOT;
49684968
}
49694969

4970-
rc = btreeRefreshFromDisk(p);
4971-
if( rc!=SQLITE_OK ) return rc;
4972-
if( p->inTrans==TRANS_NONE ){
4970+
if( !wrFlag ){
4971+
rc = btreeRefreshFromDisk(p);
4972+
if( rc!=SQLITE_OK ) return rc;
4973+
if( p->inTrans==TRANS_NONE ){
4974+
rc = btreeRefreshSharedWorkingState(p);
4975+
if( rc!=SQLITE_OK ) return rc;
4976+
}
4977+
if( pSchemaVersion ){
4978+
*pSchemaVersion = (int)p->aMeta[BTREE_SCHEMA_VERSION];
4979+
}
4980+
}else if( p->inTrans==TRANS_NONE ){
49734981
rc = btreeRefreshSharedWorkingState(p);
49744982
if( rc!=SQLITE_OK ) return rc;
49754983
}
4976-
if( pSchemaVersion ){
4977-
*pSchemaVersion = (int)p->aMeta[BTREE_SCHEMA_VERSION];
4978-
}
49794984

49804985
if( wrFlag ){
49814986
int bStoreChanged = 0;
@@ -5041,6 +5046,9 @@ static int prollyBtreeBeginTrans(Btree *p, int wrFlag, int *pSchemaVersion){
50415046
}
50425047
}
50435048

5049+
if( pSchemaVersion ){
5050+
*pSchemaVersion = (int)p->aMeta[BTREE_SCHEMA_VERSION];
5051+
}
50445052
pBt->store.snapshotPinned = 1;
50455053

50465054
return SQLITE_OK;

0 commit comments

Comments
 (0)