From 7cb4b2167c8d83ea80582603f979e92c7d1845ba Mon Sep 17 00:00:00 2001 From: Vamshi Surabhi Date: Fri, 28 Sep 2018 15:32:11 +0530 Subject: [PATCH] do no clean hdb_views by dropping and creating the schema, closes #567 --- server/src-exec/Ops.hs | 47 ++++++++++++++------------ server/src-lib/Hasura/RQL/DDL/Utils.hs | 4 ++- 2 files changed, 28 insertions(+), 23 deletions(-) diff --git a/server/src-exec/Ops.hs b/server/src-exec/Ops.hs index 0143fad2ba195..b19049aeaf2ef 100644 --- a/server/src-exec/Ops.hs +++ b/server/src-exec/Ops.hs @@ -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 @@ -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 @@ -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") @@ -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 @@ -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 diff --git a/server/src-lib/Hasura/RQL/DDL/Utils.hs b/server/src-lib/Hasura/RQL/DDL/Utils.hs index 81fb969928a85..9ac9711c93436 100644 --- a/server/src-lib/Hasura/RQL/DDL/Utils.hs +++ b/server/src-lib/Hasura/RQL/DDL/Utils.hs @@ -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