diff --git a/modules/core/shared/src/main/scala/data/Completion.scala b/modules/core/shared/src/main/scala/data/Completion.scala index 01b7c3d7..0dec4639 100644 --- a/modules/core/shared/src/main/scala/data/Completion.scala +++ b/modules/core/shared/src/main/scala/data/Completion.scala @@ -39,6 +39,7 @@ object Completion { case object Show extends Completion case object Do extends Completion case object CreateView extends Completion + case object AlterView extends Completion case object DropView extends Completion case object CreateProcedure extends Completion case object DropProcedure extends Completion @@ -55,6 +56,7 @@ object Completion { case object DropRole extends Completion case object AlterRole extends Completion case object CreateMaterializedView extends Completion + case object AlterMaterializedView extends Completion case object RefreshMaterializedView extends Completion case object DropMaterializedView extends Completion case object CreateExtension extends Completion diff --git a/modules/core/shared/src/main/scala/net/message/CommandComplete.scala b/modules/core/shared/src/main/scala/net/message/CommandComplete.scala index 60c7114d..1330ed99 100644 --- a/modules/core/shared/src/main/scala/net/message/CommandComplete.scala +++ b/modules/core/shared/src/main/scala/net/message/CommandComplete.scala @@ -76,6 +76,7 @@ object CommandComplete { case "DROP PROCEDURE" => apply(Completion.DropProcedure) case "CALL" => apply(Completion.Call) case "CREATE VIEW" => apply(Completion.CreateView) + case "ALTER VIEW" => apply(Completion.AlterView) case "DROP VIEW" => apply(Completion.DropView) case "CREATE DOMAIN" => apply(Completion.CreateDomain) case "DROP DOMAIN" => apply(Completion.DropDomain) @@ -89,6 +90,7 @@ object CommandComplete { case "DROP ROLE" => apply(Completion.DropRole) case "ALTER ROLE" => apply(Completion.AlterRole) case "CREATE MATERIALIZED VIEW" => apply(Completion.CreateMaterializedView) + case "ALTER MATERIALIZED VIEW" => apply(Completion.AlterMaterializedView) case "REFRESH MATERIALIZED VIEW" => apply(Completion.RefreshMaterializedView) case "DROP MATERIALIZED VIEW" => apply(Completion.DropMaterializedView) case "CREATE EXTENSION" => apply(Completion.CreateExtension) diff --git a/modules/tests/shared/src/test/scala/CommandTest.scala b/modules/tests/shared/src/test/scala/CommandTest.scala index 006a1567..7cd16441 100644 --- a/modules/tests/shared/src/test/scala/CommandTest.scala +++ b/modules/tests/shared/src/test/scala/CommandTest.scala @@ -167,6 +167,9 @@ class CommandTest extends SkunkTest { SELECT * FROM city """.command + val alterView: Command[Void] = + sql"ALTER VIEW city_view SET (security_barrier = true)".command + val dropView: Command[Void] = sql""" DROP VIEW city_view @@ -278,6 +281,9 @@ class CommandTest extends SkunkTest { SELECT now() """.command + val alterMaterializedView: Command[Void] = + sql"ALTER MATERIALIZED VIEW my_foo_mv SET (fillfactor = 90)".command + val createUniqueIndexForMaterializedView: Command[Void] = sql""" CREATE UNIQUE INDEX IF NOT exists my_foo_mv_unique ON my_foo_mv(now) @@ -469,22 +475,26 @@ class CommandTest extends SkunkTest { } yield "ok" } - sessionTest("create view, drop view"){ s=> + sessionTest("create view, alter view, drop view"){ s=> for{ c <- s.execute(createView) _ <- assertEqual("completion", c, Completion.CreateView) + c <- s.execute(alterView) + _ <- assertEqual("completion", c, Completion.AlterView) c <- s.execute(dropView) _ <- assertEqual("completion", c, Completion.DropView) _ <- s.assertHealthy } yield "ok" } - sessionTest("refresh materialized view, refresh materialized view concurrently") { s => + sessionTest("alter materialized view, refresh materialized view, refresh materialized view concurrently") { s => for { c <- s.execute(createMaterializedView) _ <- assertEqual("completion", c, Completion.Select(1)) c <- s.execute(createMaterializedView) _ <- assertEqual("completion", c, Completion.CreateMaterializedView) + c <- s.execute(alterMaterializedView) + _ <- assertEqual("completion", c, Completion.AlterMaterializedView) c <- s.execute(refreshMaterializedView) _ <- assertEqual("completion", c, Completion.RefreshMaterializedView) c <- s.execute(createUniqueIndexForMaterializedView)