这是indexloc提供的服务,不要输入任何密码
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 25 additions & 22 deletions server/src-exec/Ops.hs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import TH

import Hasura.Prelude
import Hasura.RQL.DDL.Schema.Table
import Hasura.RQL.DDL.Utils (clearHdbViews)
import Hasura.RQL.Types
import Hasura.Server.Query
import Hasura.SQL.Types
Expand Down Expand Up @@ -157,8 +158,8 @@ getCatalogVersion = do
|] () False
return $ runIdentity $ Q.getRow res

migrateFrom08 :: Q.TxE QErr ()
migrateFrom08 = Q.catchE defaultTxErrorHandler $ do
from08To1 :: Q.TxE QErr ()
from08To1 = Q.catchE defaultTxErrorHandler $ do
Q.unitQ "ALTER TABLE hdb_catalog.hdb_relationship ADD COLUMN comment TEXT NULL" () False
Q.unitQ "ALTER TABLE hdb_catalog.hdb_permission ADD COLUMN comment TEXT NULL" () False
Q.unitQ "ALTER TABLE hdb_catalog.hdb_query_template ADD COLUMN comment TEXT NULL" () False
Expand All @@ -168,8 +169,8 @@ migrateFrom08 = Q.catchE defaultTxErrorHandler $ do
json_build_object('type', 'select', 'args', template_defn->'select');
|] () False

migrateFrom1 :: Q.TxE QErr ()
migrateFrom1 = do
from1To2 :: Q.TxE QErr ()
from1To2 = do
-- migrate database
Q.Discard () <- Q.multiQE defaultTxErrorHandler
$(Q.sqlFromFile "src-rsr/migrate_from_1.sql")
Expand All @@ -180,8 +181,8 @@ migrateFrom1 = do
-- set as system defined
setAsSystemDefined

migrateFrom2 :: Q.TxE QErr ()
migrateFrom2 = Q.catchE defaultTxErrorHandler $ do
from2To3 :: Q.TxE QErr ()
from2To3 = Q.catchE defaultTxErrorHandler $ do
Q.unitQ "ALTER TABLE hdb_catalog.event_triggers ADD COLUMN headers JSON" () False
Q.unitQ "ALTER TABLE hdb_catalog.event_log ADD COLUMN next_retry_at TIMESTAMP" () False
Q.unitQ "CREATE INDEX ON hdb_catalog.event_log (trigger_id)" () False
Expand All @@ -191,28 +192,30 @@ migrateCatalog :: UTCTime -> Q.TxE QErr String
migrateCatalog migrationTime = do
preVer <- getCatalogVersion
if | preVer == curCatalogVer ->
return "migrate: already at the latest version"
| preVer == "0.8" -> do
migrateFrom08
migrateFrom1
migrateFrom2
afterMigrate
| preVer == "1" -> do
migrateFrom1
migrateFrom2
afterMigrate
| preVer == "2" -> do
migrateFrom2
afterMigrate
return "migrate: already at the latest version"
| preVer == "0.8" -> from08ToCurrent
| preVer == "1" -> from1ToCurrent
| preVer == "2" -> from2ToCurrent
| otherwise -> throw400 NotSupported $
"migrate: unsupported version : " <> preVer
where
afterMigrate = do
from2ToCurrent = do
from2To3
postMigrate

from1ToCurrent = do
from1To2
from2ToCurrent

from08ToCurrent = do
from08To1
from1ToCurrent

postMigrate = do
-- update the catalog version
updateVersion
-- clean hdb_views
Q.unitQE defaultTxErrorHandler "DROP SCHEMA IF EXISTS hdb_views CASCADE" () False
Q.unitQE defaultTxErrorHandler "CREATE SCHEMA hdb_views" () False
Q.catchE defaultTxErrorHandler clearHdbViews
-- try building the schema cache
void buildSchemaCache
return $ "migrate: successfully migrated to " ++ show curCatalogVer
Expand Down
4 changes: 3 additions & 1 deletion server/src-lib/Hasura/RQL/DDL/Utils.hs
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
{-# LANGUAGE OverloadedStrings #-}

module Hasura.RQL.DDL.Utils where
module Hasura.RQL.DDL.Utils
( clearHdbViews
) where

import qualified Data.ByteString.Builder as BB
import qualified Database.PG.Query as Q
Expand Down