File tree Expand file tree Collapse file tree 1 file changed +11
-1
lines changed
packages/powersync-sdk-react-native/src/db/adapters/react-native-quick-sqlite Expand file tree Collapse file tree 1 file changed +11
-1
lines changed Original file line number Diff line number Diff line change @@ -25,7 +25,7 @@ export class RNQSDBAdapter extends BaseObserver<DBAdapterListener> implements DB
2525 this . iterateListeners ( ( cb ) => cb . tablesUpdated ?.( update ) ) ;
2626 } ) ;
2727
28- const topLevelUtils = this . generateDBHelpers ( { execute : this . baseDB . execute } ) ;
28+ const topLevelUtils = this . generateDBHelpers ( { execute : this . readOnlyExecute } ) ;
2929 this . getAll = topLevelUtils . getAll ;
3030 this . getOptional = topLevelUtils . getOptional ;
3131 this . get = topLevelUtils . get ;
@@ -55,6 +55,16 @@ export class RNQSDBAdapter extends BaseObserver<DBAdapterListener> implements DB
5555 return this . baseDB . execute ( query , params ) ;
5656 }
5757
58+ /**
59+ * This provides a top-level read only execute method which is executed inside a read lock.
60+ * This is necessary since the high level `execute` method uses a write-lock under
61+ * the hood. Helper methods such as `get`, `getAll` and `getOptional` are read only,
62+ * and should use this method.
63+ */
64+ private readOnlyExecute ( sql : string , params ?: any [ ] ) {
65+ return this . readLock ( ctx => ctx . execute ( sql , params ) ) ;
66+ }
67+
5868 /**
5969 * Adds DB get utils to lock contexts and transaction contexts
6070 * @param tx
You can’t perform that action at this time.
0 commit comments