Skip to content

Commit f85caed

Browse files
committed
Fix an issue where sequential scans were used
1 parent e8d949e commit f85caed

File tree

3 files changed

+35
-9
lines changed

3 files changed

+35
-9
lines changed

cardano-db-sync/src/Cardano/DbSync.hs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import qualified Cardano.Crypto as Crypto
2828
import Cardano.Db (textShow)
2929
import qualified Cardano.Db as Db
3030
import Cardano.DbSync.Api
31-
import Cardano.DbSync.Api.Types (InsertOptions (..), RunMigration, SyncOptions (..), envLedgerEnv)
31+
import Cardano.DbSync.Api.Types (InsertOptions (..), RunMigration, SyncOptions (..), SyncEnv (..), envLedgerEnv)
3232
import Cardano.DbSync.Config (configureLogging, readSyncNodeConfig)
3333
import Cardano.DbSync.Config.Cardano
3434
import Cardano.DbSync.Config.Types (
@@ -51,6 +51,7 @@ import Cardano.DbSync.Rollback (unsafeRollback)
5151
import Cardano.DbSync.Sync (runSyncNodeClient)
5252
import Cardano.DbSync.Tracing.ToObjectOrphans ()
5353
import Cardano.DbSync.Types
54+
import Cardano.DbSync.Util.Constraint (addRewardConstraintsIfNotExist)
5455
import Cardano.Prelude hiding (Nat, (%))
5556
import Cardano.Slotting.Slot (EpochNo (..))
5657
import Control.Concurrent.Async
@@ -178,6 +179,7 @@ runSyncNode metricsSetters trce iomgr dbConnString ranMigrations runMigrationFnc
178179
syncNodeParams
179180
ranMigrations
180181
runMigrationFnc
182+
liftIO $ runReaderT (addRewardConstraintsIfNotExist syncEnv trce) (envBackend syncEnv)
181183
liftIO $ runExtraMigrationsMaybe syncEnv
182184
unless (enpShouldUseLedger syncNodeParams) $ liftIO $ do
183185
logInfo trce "Migrating to a no ledger schema"

cardano-db-sync/src/Cardano/DbSync/Util/Constraint.hs

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ module Cardano.DbSync.Util.Constraint (
99
constraintNameReward,
1010
dbConstraintNamesExists,
1111
addConstraintsIfNotExist,
12+
addStakeConstraintsIfNotExist,
13+
addRewardConstraintsIfNotExist,
1214
addRewardTableConstraint,
1315
addEpochStakeTableConstraint,
1416
) where
@@ -58,12 +60,34 @@ addConstraintsIfNotExist ::
5860
Trace IO Text ->
5961
ReaderT SqlBackend m ()
6062
addConstraintsIfNotExist syncEnv trce = do
61-
ManualDbConstraints {..} <- liftIO . readTVarIO $ envDbConstraints syncEnv
62-
unless dbConstraintRewards (addRewardTableConstraint trce)
63-
unless dbConstraintEpochStake (addEpochStakeTableConstraint trce)
63+
addStakeConstraintsIfNotExist syncEnv trce
64+
addRewardConstraintsIfNotExist syncEnv trce
65+
66+
addStakeConstraintsIfNotExist ::
67+
forall m.
68+
(MonadBaseControl IO m, MonadIO m) =>
69+
SyncEnv ->
70+
Trace IO Text ->
71+
ReaderT SqlBackend m ()
72+
addStakeConstraintsIfNotExist syncEnv trce = do
73+
mdbc <- liftIO . readTVarIO $ envDbConstraints syncEnv
74+
unless (dbConstraintEpochStake mdbc) (addEpochStakeTableConstraint trce)
75+
liftIO
76+
. atomically
77+
$ writeTVar (envDbConstraints syncEnv) (mdbc { dbConstraintEpochStake = True})
78+
79+
addRewardConstraintsIfNotExist ::
80+
forall m.
81+
(MonadBaseControl IO m, MonadIO m) =>
82+
SyncEnv ->
83+
Trace IO Text ->
84+
ReaderT SqlBackend m ()
85+
addRewardConstraintsIfNotExist syncEnv trce = do
86+
mdbc <- liftIO . readTVarIO $ envDbConstraints syncEnv
87+
unless (dbConstraintRewards mdbc) (addRewardTableConstraint trce)
6488
liftIO
6589
. atomically
66-
$ writeTVar (envDbConstraints syncEnv) (DB.ManualDbConstraints True True)
90+
$ writeTVar (envDbConstraints syncEnv) (mdbc {dbConstraintRewards = True})
6791

6892
addRewardTableConstraint ::
6993
forall m.

cardano-db/src/Cardano/Db/Insert.hs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ insertManyDrepDistr ::
203203
(MonadBaseControl IO m, MonadIO m) =>
204204
[DrepDistr] ->
205205
ReaderT SqlBackend m ()
206-
insertManyDrepDistr = insertManyUncheckedUnique "Many DrepDistr"
206+
insertManyDrepDistr = insertManyCheckUnique "Many DrepDistr"
207207

208208
insertManyTxIn :: (MonadBaseControl IO m, MonadIO m) => [TxIn] -> ReaderT SqlBackend m [TxInId]
209209
insertManyTxIn = insertMany' "Many TxIn"
@@ -341,7 +341,7 @@ insertExtraMigration token = void . insert $ ExtraMigrations (textShow token) (J
341341

342342
insertEpochStakeProgress :: (MonadBaseControl IO m, MonadIO m) => [EpochStakeProgress] -> ReaderT SqlBackend m ()
343343
insertEpochStakeProgress =
344-
insertManyUncheckedUnique "Many EpochStakeProgress"
344+
insertManyCheckUnique "Many EpochStakeProgress"
345345

346346
updateSetComplete :: MonadIO m => Word64 -> ReaderT SqlBackend m ()
347347
updateSetComplete epoch = do
@@ -527,7 +527,7 @@ insertManyWithManualUnique ::
527527
ReaderT SqlBackend m ()
528528
insertManyWithManualUnique = insertManyUnique
529529

530-
insertManyUncheckedUnique ::
530+
insertManyCheckUnique ::
531531
forall m record.
532532
( MonadBaseControl IO m
533533
, MonadIO m
@@ -536,7 +536,7 @@ insertManyUncheckedUnique ::
536536
String ->
537537
[record] ->
538538
ReaderT SqlBackend m ()
539-
insertManyUncheckedUnique vtype records = do
539+
insertManyCheckUnique vtype records = do
540540
let constraintName = uniqueDBName $ onlyOneUniqueDef (Proxy @record)
541541
insertManyUnique vtype True constraintName records
542542

0 commit comments

Comments
 (0)