@@ -53,7 +53,7 @@ module Squeal.PostgreSQL.Definition
5353 , AlterTable (UnsafeAlterTable, renderAlterTable)
5454 , addConstraint
5555 , dropConstraint
56− -- , AddColumn (addColumn)
56+ , AddColumn (addColumn)
5757 , dropColumn
5858 , renameColumn
5959 , alterColumn
@@ -531,7 +531,7 @@ ALTER statements
531531alterTable
532532 :: HasQualified sch tab db schema ('Table table0)
533533 => QualifiedAlias sch tab -- ^ table to alter
534− -> AlterTable tab table1 db -- ^ alteration to perform
534+ -> AlterTable sch tab db table1 -- ^ alteration to perform
535535 -> Definition db (Alter sch (Alter tab ('Table table1) schema) db)
536536alterTable tab alteration = UnsafeDefinition $
537537 "ALTER TABLE"
@@ -555,9 +555,10 @@ alterTableRename table0 table1 = UnsafeDefinition $
555555-- | An `AlterTable` describes the alteration to perform on the columns
556556-- of a table.
557557newtype AlterTable
558+ (sch :: Symbol)
558559 (tab :: Symbol)
559− (table :: TableType)
560− (db :: DBType) =
560+ (db :: DBType)
561+ (table :: TableType) =
561562 UnsafeAlterTable {renderAlterTable :: ByteString}
562563 deriving (GHC.Generic,Show,Eq,Ord,NFData)
563564
@@ -580,7 +581,7 @@ addConstraint
580581 => Alias alias
581582 -> TableConstraintExpression sch tab db constraint
582583 -- ^ constraint to add
583− -> AlterTable tab table1 db
584+ -> AlterTable sch tab db table1
584585addConstraint alias constraint = UnsafeAlterTable $
585586 "ADD" <+> "CONSTRAINT" <+> renderAlias alias
586587 <+> renderTableConstraintExpression constraint
@@ -598,16 +599,15 @@ addConstraint alias constraint = UnsafeAlterTable $
598599-- ALTER TABLE "tab" DROP CONSTRAINT "positive";
599600dropConstraint
600601 :: ( KnownSymbol constraint
601− , Has tab schema ('Table table0)
602+ , HasQualified sch tab db schema ('Table table0)
602603 , table0 ~ (constraints :=> columns)
603604 , table1 ~ (Drop constraint constraints :=> columns) )
604605 => Alias constraint
605606 -- ^ constraint to drop
606− -> AlterTable tab table1 db
607+ -> AlterTable sch tab db table1
607608dropConstraint constraint = UnsafeAlterTable $
608609 "DROP" <+> "CONSTRAINT" <+> renderAlias constraint
609610
610−{---------FIX ADD COLUMN
611611-- | An `AddColumn` is either @NULL@ or has @DEFAULT@.
612612class AddColumn ty where
613613 -- | `addColumn` adds a new column, initially filled with whatever
@@ -639,18 +639,15 @@ class AddColumn ty where
639639 addColumn
640640 :: ( KnownSymbol column
641641 , HasQualified sch tab db schema ('Table table0)
642− , table0 ~ (constraints :=> columns)
643− , table1 ~ (constraints :=> Create column ty columns) )
642+ , table0 ~ (constraints :=> columns) )
644643 => Alias column -- ^ column to add
645644 -> ColumnTypeExpression db ty -- ^ type of the new column
646− -> AlterTable tab table1 db
645+ -> AlterTable sch tab db (constraints :=> Create column ty columns)
647646 addColumn column ty = UnsafeAlterTable $
648647 "ADD COLUMN" <+> renderAlias column <+> renderColumnTypeExpression ty
649648instance {-# OVERLAPPING #-} AddColumn ('Def :=> ty)
650649instance {-# OVERLAPPABLE #-} AddColumn ('NoDef :=> 'Null ty)
651650
652−-}
653−
654651-- | A `dropColumn` removes a column. Whatever data was in the column
655652-- disappears. Table constraints involving the column are dropped, too.
656653-- However, if the column is referenced by a foreign key constraint of
@@ -669,11 +666,11 @@ instance {-# OVERLAPPABLE #-} AddColumn ('NoDef :=> 'Null ty)
669666-- ALTER TABLE "tab" DROP COLUMN "col2";
670667dropColumn
671668 :: ( KnownSymbol column
672− , Has tab schema ('Table table0)
669+ , HasQualified sch tab db schema ('Table table0)
673670 , table0 ~ (constraints :=> columns)
674671 , table1 ~ (constraints :=> Drop column columns) )
675672 => Alias column -- ^ column to remove
676− -> AlterTable tab table1 db
673+ -> AlterTable sch tab db table1
677674dropColumn column = UnsafeAlterTable $
678675 "DROP COLUMN" <+> renderAlias column
679676
@@ -691,25 +688,25 @@ dropColumn column = UnsafeAlterTable $
691688renameColumn
692689 :: ( KnownSymbol column0
693690 , KnownSymbol column1
694− , Has tab schema ('Table table0)
691+ , HasQualified sch tab db schema ('Table table0)
695692 , table0 ~ (constraints :=> columns)
696693 , table1 ~ (constraints :=> Rename column0 column1 columns) )
697694 => Alias column0 -- ^ column to rename
698695 -> Alias column1 -- ^ what to rename the column
699− -> AlterTable tab table1 db
696+ -> AlterTable sch tab db table1
700697renameColumn column0 column1 = UnsafeAlterTable $
701698 "RENAME COLUMN" <+> renderAlias column0 <+> "TO" <+> renderAlias column1
702699
703700-- | An `alterColumn` alters a single column.
704701alterColumn
705702 :: ( KnownSymbol column
706− , Has tab schema ('Table table0)
703+ , HasQualified sch tab db schema ('Table table0)
707704 , table0 ~ (constraints :=> columns)
708705 , Has column columns ty0
709706 , tables1 ~ (constraints :=> Alter column ty1 columns))
710707 => Alias column -- ^ column to alter
711708 -> AlterColumn db ty0 ty1 -- ^ alteration to perform
712− -> AlterTable tab table1 db
709+ -> AlterTable sch tab db table1
713710alterColumn column alteration = UnsafeAlterTable $
714711 "ALTER COLUMN" <+> renderAlias column <+> renderAlterColumn alteration
715712