diff --git a/hssqlppp.cabal b/hssqlppp.cabal
--- a/hssqlppp.cabal
+++ b/hssqlppp.cabal
@@ -1,5 +1,5 @@
 Name:                hssqlppp
-Version:             0.3.0
+Version:             0.3.1
 Synopsis:            SQL parser and type checker
 License:             BSD3
 License-file:        LICENSE
@@ -11,14 +11,14 @@
 stability:           pre-alpha
 homepage:            http://jakewheat.github.com/hssqlppp/
 bug-reports:         https://github.com/JakeWheat/hssqlppp/issues
-category:            Database
+category:            Database,Language
 Description:
     SQL parser and type checker, targets PostgreSQL SQL and PL/pgSQL.
     .
     Documentation, examples on the homepage:
     <http://jakewheat.github.com/hssqlppp/>.
-
--- to run haddock use 'cabal configure --ghc-options "-pgmPcpphs -optP--cpp"' first
+    .
+    Changes here: <https://github.com/JakeWheat/hssqlppp/blob/master/CHANGES>
 
 extra-source-files:  README
                      LICENSE
@@ -34,11 +34,11 @@
                      mtl >= 2.0.1.0 && < 2.1,
                      containers >= 0.3.0.0 && < 0.5,
                      parsec >= 3.1 && < 3.2,
-                     pretty >= 1.0.1.1 && < 1.1,
+                     pretty >= 1.1 && < 1.2,
                      syb >= 0.1.0.2 && < 0.4,
                      uniplate >= 1.6 && < 1.7,
-                     transformers >= 0.2.2.0 && < 0.3
-  build-tools:       cpphs
+                     transformers >= 0.2.2.0 && < 0.3,
+                     template-haskell
 
   hs-source-dirs:    src
   Exposed-modules:   Database.HsSqlPpp.Ast
@@ -48,31 +48,28 @@
                      Database.HsSqlPpp.Pretty
                      Database.HsSqlPpp.Types
                      Database.HsSqlPpp.TypeChecker
+                     Database.HsSqlPpp.Quote
 
                      -- find src/lib -iname '*hs' | sed -e "s@src/@@" | sed -e "s@/@.@g" |sed -e "s/.lhs//" |sed -e "s/.hs//"
   Other-Modules:     Database.HsSqlPpp.Utils.Utils
                      Database.HsSqlPpp.Parsing.ParseErrors
                      Database.HsSqlPpp.Parsing.Lexer
                      Database.HsSqlPpp.Parsing.ParserInternal
-                     Database.HsSqlPpp.AstInternals.Catalog.CatalogInternal
-                     Database.HsSqlPpp.AstInternals.Catalog.DefaultTemplate1Catalog
-                     Database.HsSqlPpp.AstInternals.AstAnti
-                     Database.HsSqlPpp.AstInternals.TypeChecking.TypeConversion
-                     Database.HsSqlPpp.AstInternals.TypeChecking.ErrorUtils
-                     Database.HsSqlPpp.AstInternals.TypeChecking.LocalBindings
-                     Database.HsSqlPpp.AstInternals.TypeChecking.Utils
-                     Database.HsSqlPpp.AstInternals.TypeChecking.LocalBindingsInternal
-                     Database.HsSqlPpp.AstInternals.AstAnnotation
-                     Database.HsSqlPpp.AstInternals.AnnotationUtils
-                     Database.HsSqlPpp.AstInternals.AstInternal
-                     Database.HsSqlPpp.AstInternals.TypeType
-  ghc-options:       -pgmPcpphs -optP--cpp
+                     Database.HsSqlPpp.Internals.Catalog.CatalogInternal
+                     Database.HsSqlPpp.Internals.Catalog.DefaultTemplate1Catalog
+                     Database.HsSqlPpp.Internals.AstAnti
+                     Database.HsSqlPpp.Internals.TypeChecking.TypeConversion
+                     Database.HsSqlPpp.Internals.TypeChecking.ErrorUtils
+                     Database.HsSqlPpp.Internals.TypeChecking.LocalBindings
+                     Database.HsSqlPpp.Internals.TypeChecking.Utils
+                     Database.HsSqlPpp.Internals.TypeChecking.LocalBindingsInternal
+                     Database.HsSqlPpp.Internals.AstAnnotation
+                     Database.HsSqlPpp.Internals.AnnotationUtils
+                     Database.HsSqlPpp.Internals.AstInternal
+                     Database.HsSqlPpp.Internals.TypeType
 
-  extensions:        DeriveDataTypeable,
-                     RankNTypes,
+  extensions:        TupleSections
+                     DeriveDataTypeable,
                      ScopedTypeVariables,
-                     FlexibleContexts,
-                     ExistentialQuantification,
-                     CPP,
                      PatternGuards,
-                     TupleSections
+                     FlexibleContexts
diff --git a/src/Database/HsSqlPpp/Annotation.lhs b/src/Database/HsSqlPpp/Annotation.lhs
--- a/src/Database/HsSqlPpp/Annotation.lhs
+++ b/src/Database/HsSqlPpp/Annotation.lhs
@@ -19,5 +19,5 @@
 >     ,resetAnnotations
 >     ) where
 >
-> import Database.HsSqlPpp.AstInternals.AstAnnotation
-> import Database.HsSqlPpp.AstInternals.AnnotationUtils
+> import Database.HsSqlPpp.Internals.AstAnnotation
+> import Database.HsSqlPpp.Internals.AnnotationUtils
diff --git a/src/Database/HsSqlPpp/Ast.lhs b/src/Database/HsSqlPpp/Ast.lhs
--- a/src/Database/HsSqlPpp/Ast.lhs
+++ b/src/Database/HsSqlPpp/Ast.lhs
@@ -6,7 +6,7 @@
 >      the seemingly pointless type synonyms below, they are an
 >      artefact of using UUAGC. You can see labels for the fields by
 >      looking at the ag source here:
->      <http://jakewheat.github.com/hssqlppp/source/src/Database/HsSqlPpp/AstInternals/AstInternal.ag.html>
+>      <http://jakewheat.github.com/hssqlppp/source/src/Database/HsSqlPpp/Internals/AstInternal.ag.html>
 >      -}
 >
 > module Database.HsSqlPpp.Ast
@@ -93,5 +93,5 @@
 >     ,AlterTableActionList
 >     ) where
 >
-> import Database.HsSqlPpp.AstInternals.AstInternal
-> --import Database.HsSqlPpp.AstInternals.Name
+> import Database.HsSqlPpp.Internals.AstInternal
+> --import Database.HsSqlPpp.Internals.Name
diff --git a/src/Database/HsSqlPpp/AstInternals/AnnotationUtils.lhs b/src/Database/HsSqlPpp/AstInternals/AnnotationUtils.lhs
deleted file mode 100644
--- a/src/Database/HsSqlPpp/AstInternals/AnnotationUtils.lhs
+++ /dev/null
@@ -1,28 +0,0 @@
-
-This module contains some utilities and generic code for working with
-asts and annotations which depend on the ast types.
-
-> {-# LANGUAGE ScopedTypeVariables #-}
->
-> module Database.HsSqlPpp.AstInternals.AnnotationUtils
->     (
->      getStatementAnnotations
->     ,resetAnnotations
->     ) where
->
-> import Data.Data
-> import Data.Generics.Uniplate.Data
->
-> import Database.HsSqlPpp.AstInternals.AstInternal
-> import Database.HsSqlPpp.AstInternals.AstAnnotation
->
-> -- | Run through the ast and return all the annotations attached to
-> --   a Statement node.
-> getStatementAnnotations :: Data a => a -> [Annotation]
-> getStatementAnnotations st =
->     [getAnnotation s | (s::Statement) <- universeBi st]
-
-> -- | Set all the annotations in a tree to be 'emptyAnnotation'.
-> resetAnnotations :: Data a => a -> a
-> resetAnnotations =
->     updateAnnotations (const emptyAnnotation)
diff --git a/src/Database/HsSqlPpp/AstInternals/AstAnnotation.lhs b/src/Database/HsSqlPpp/AstInternals/AstAnnotation.lhs
deleted file mode 100644
--- a/src/Database/HsSqlPpp/AstInternals/AstAnnotation.lhs
+++ /dev/null
@@ -1,194 +0,0 @@
-
-The annotation data types and utilities for working with them.
-
-Annotations are used to store source positions, types, errors,
-warnings, catalog deltas, information, and other stuff a client might
-want to use when looking at an ast. Internal annotations which are
-used in the type-checking/ annotation process use the attribute
-grammar code and aren't exposed.
-
-> {-# LANGUAGE ExistentialQuantification, DeriveDataTypeable,ScopedTypeVariables,
->   RankNTypes,FlexibleContexts #-}
->
-> module Database.HsSqlPpp.AstInternals.AstAnnotation
->     (
->      Annotation(..)
->     ,SourcePosition
->     ,StatementType
->     ,getAnnotation
->     ,updateAnnotations
->     ,getAnnotations
->     ,emptyAnnotation
->     ,getTypeAnnotation
->     ,updateAnnotation
->     ) where
->
-> import Data.Generics
-> ---import Control.Arrow
-> import Data.Generics.Uniplate.Data
-> --import Debug.Trace
->
-> import Database.HsSqlPpp.AstInternals.TypeType
-> import Database.HsSqlPpp.AstInternals.Catalog.CatalogInternal
-> --import Database.HsSqlPpp.Utils.Utils
->
-> -- | Represents a source file position, usually set by the parser.
-> type SourcePosition = (String,Int,Int)
-> -- | Statement type is used for getting type information for a parameterized statement.
-> type StatementType = ([Type],[(String,Type)])
-
-> -- | Annotation type - one of these is attached to most of the
-> -- data types used in the ast.
-> data Annotation = Annotation { -- | source position for this node
->                               asrc :: Maybe SourcePosition
->                                -- | type of the node, 'Nothing' if the tree hasn't been typechecked or if a type error prevents determining the type
->                              ,atype :: Maybe Type
->                                -- | any type errors
->                              ,errs :: [TypeError]
->                                -- | 'statement type' - used for getting the in and out types of a parameterized statement
->                              ,stType :: Maybe StatementType
->                                -- | any catalog updates that a ddl statement produces
->                              ,catUpd :: [CatalogUpdate]
->                                -- | the matched function prototype for a funcall
->                              ,fnProt :: Maybe FunctionPrototype
->                                -- | 'inferred' type - fake type inference used for getting the type of ? placeholders in parameterized statements
->                              ,infType :: Maybe Type}
->                   deriving (Eq, Show,Typeable,Data)
->
-> -- | An annotation value with no information.
-> emptyAnnotation :: Annotation
-> emptyAnnotation = Annotation Nothing Nothing [] Nothing [] Nothing Nothing
-
-> -- | get the annotation for the root element of the tree passed
-> getAnnotation :: Data a => a -> Annotation
-> getAnnotation = head . childrenBi
-
-> -- | get all the annotations from a tree
-> getAnnotations :: Data a => a -> [Annotation]
-> getAnnotations = universeBi -- st --[x | x <- universeBi st]
-
-> -- | update all the annotations in a tree
-> updateAnnotations :: Data a => (Annotation -> Annotation) -> a -> a
-> updateAnnotations = transformBi
-
-> getTypeAnnotation :: Data a => a -> Maybe Type
-> getTypeAnnotation = atype . getAnnotation
-
-
-
-
-
-Use syb/uniplate to pull annotation values from an ast.
-
-I like to cut and paste code from the internet which I don't
-understand, then keep changing it till it compiles and passes the tests.
-
-> {- -- | run through the ast, and pull the type annotation from each
-> -- of the top level items.
-> getTypeAnnotation :: (Show a, Data a) => a -> Type
-> getTypeAnnotation st =
->     typeAnnot $ getTopLevelAnnotation st
->     where
->       typeAnnot :: Annotation -> Type
->       typeAnnot (x:xs) = case x of
->                                 TypeAnnotation t -> t
->                                 _ -> typeAnnot xs
->       typeAnnot [] = TypeCheckFailed -- error "couldn't find type annotation"
->
-> -- | Run through the ast given and return a list of statementtypes
-> -- from the top level items.
-> getTopLevelInfos :: Data a => [a] -> [Maybe StatementType]
-> getTopLevelInfos = map (getSIAnnotation . getTopLevelAnnotation)
->
-> getTopLevelCatUpdates ::  Data a => [a] -> [[CatalogUpdate]]
-> getTopLevelCatUpdates = map (getEuAnnotation . getTopLevelAnnotation)
->
-
-> -- | runs through the ast given and returns a list of all the type errors
-> -- in the ast. Recurses into all ast nodes to find type errors.
-> -- This is the function to use to see if an ast has passed the type checking process.
-> -- Returns a Maybe SourcePos and the list of type errors for each node which has one or
-> -- more type errors.
-> getTypeErrors :: (Data a) => a -> [(Maybe AnnotationElement,[TypeError])]
-> getTypeErrors sts =
->     filter (\(_,te) -> not $ null te) $ map (gtsp &&& gte) $ getAnnotations sts
->     where
->       gte (a:as) = case a of
->                     TypeErrorA e -> e:gte as
->                     _ -> gte as
->       gte _ = []
->       gtsp (a:as) = case a of
->                     s@(SourcePos _ _ _) -> Just s
->                     _ -> gtsp as
->       gtsp _ = Nothing
-
-~~~~
-question:
-if a node has no source position e.g. the all in select all or select
-   distinct may correspond to a token or may be synthesized as the
-   default if neither all or distinct is present. Should this have the
-   source position of where the token would have appeared, should it
-   inherit it from its parent, should there be a separate ctor to
-   represent a fake node with no source position?
-
-~~~~
-
-hack job, often not interested in the source positions when testing
-the asts produced, so this function will reset all the source
-positions to empty ("", 0, 0) so we can compare them for equality, etc.
-without having to get the positions correct.
-
-> -}
-
- > -- | strip all the annotations from a tree. E.g. can be used to compare
- > -- two asts are the same, ignoring any source position annotation differences.
- > stripAnnotations :: Data a => a -> a
- > stripAnnotations = filterAnnotations (const False)
- >
-
- > filterAnnotations :: Data a => (Annotation -> Bool) -> a -> a
- > filterAnnotations f = transformBi (filter f)
-
->
-> -- | Update all the annotations in a tree using the function supplied
-> updateAnnotation :: Data a => (Annotation -> Annotation) -> a -> a
-> updateAnnotation f = gmapT (mkT f)
->
-
-
- >   case gmapQ (mkQ [] f) a of
- >     an:_ -> an
- >     [] -> []
- >   where
- >     f :: Annotation -> Annotation
- >     f = id
- >
-
- >
- > getAnnotations :: Data a => a -> [Annotation]
- > getAnnotations = listifyWholeLists (\(_::Annotation) -> True)
- >
-
-> {-getSIAnnotation :: Annotation -> Maybe StatementType
-> getSIAnnotation (x:xs) = case x of
->                                 StatementTypeA t -> Just t
->                                 _ -> getSIAnnotation xs
-> getSIAnnotation []  = Nothing
->
-> getEuAnnotation :: Annotation -> [CatalogUpdate]
-> getEuAnnotation (x:xs) = case x of
->                                 CatUpdates t -> t
->                                 _ -> getEuAnnotation xs
-> getEuAnnotation [] = []-}
-
--------------------------------------------------------------------------------
-
-utils
-
- > listifyWholeLists :: Typeable b => ([b] -> Bool) -> GenericQ [[b]]
- > listifyWholeLists blp = flip (synthesize id (.) (mkQ id (\bl _ -> if blp bl then (bl:) else id))) []
-
-this might need to be maybe and change head?
-
- > getTopLevelAnnotation :: Data a => a -> Annotation
- > getTopLevelAnnotation st = head $ childrenBi st
diff --git a/src/Database/HsSqlPpp/AstInternals/AstAnti.hs b/src/Database/HsSqlPpp/AstInternals/AstAnti.hs
deleted file mode 100644
--- a/src/Database/HsSqlPpp/AstInternals/AstAnti.hs
+++ /dev/null
@@ -1,967 +0,0 @@
-{-
-This file is autogenerated, to generate: load this file (MakeAntiNodes.lhs)
-into ghci and run:
-nwriteAntiNodes
-n\nThe path might need tweaking.
-n-}
-{-# LANGUAGE DeriveDataTypeable #-}
-module Database.HsSqlPpp.AstInternals.AstAnti
-       (convertStatements, convertScalarExpr, attributeDef, queryExpr,
-        Statement(..), QueryExpr(..), WithQuery(..), FnBody(..),
-        TableRef(..), TableAlias(..), JoinExpr(..), JoinType(..),
-        SelectList(..), SelectItem(..), CopySource(..), AttributeDef(..),
-        RowConstraint(..), AlterTableAction(..), Constraint(..),
-        TypeAttributeDef(..), ParamDef(..), VarDef(..), RaiseType(..),
-        CombineType(..), Volatility(..), Language(..), TypeName(..),
-        DropType(..), Cascade(..), Direction(..), Distinct(..),
-        Natural(..), IfExists(..), Replace(..), RestartIdentity(..),
-        ScalarExpr(..), SQIdentifier(..), IntervalField(..),
-        ExtractField(..), FrameClause(..), InList(..), LiftFlavour(..),
-        TriggerWhen(..), TriggerEvent(..), TriggerFire(..), SetValue(..),
-        WithQueryList, StatementList, ScalarExprListStatementListPairList,
-        ScalarExprListStatementListPair, ScalarExprList, ParamDefList,
-        AttributeDefList, ConstraintList, TypeAttributeDefList,
-        TypeNameList, StringTypeNameListPair, StringTypeNameListPairList,
-        ScalarExprStatementListPairList,
-        CaseScalarExprListScalarExprPairList, MaybeScalarExpr,
-        TableRefList, ScalarExprListList, SelectItemList, OnExpr,
-        RowConstraintList, VarDefList, ScalarExprStatementListPair,
-        CaseScalarExprListScalarExprPair, ScalarExprDirectionPair,
-        ScalarExprDirectionPairList, MaybeBoolExpr, MaybeSelectList,
-        AlterTableActionList)
-       where
-import Data.Generics
-import Database.HsSqlPpp.AstInternals.AstAnnotation
-import qualified Database.HsSqlPpp.AstInternals.AstInternal as A
- 
-convertStatements :: [Statement] -> [A.Statement]
-convertStatements = statementList
- 
-convertScalarExpr :: ScalarExpr -> A.ScalarExpr
-convertScalarExpr = scalarExpr
- 
-data JoinType = Inner
-              | LeftOuter
-              | RightOuter
-              | FullOuter
-              | Cross
-              deriving (Show, Eq, Typeable, Data)
- 
-data CopySource = CopyFilename String
-                | Stdin
-                deriving (Show, Eq, Typeable, Data)
- 
-data SetValue = SetStr Annotation String
-              | SetId Annotation String
-              | SetNum Annotation Double
-              deriving (Show, Eq, Typeable, Data)
- 
-data TriggerWhen = TriggerBefore
-                 | TriggerAfter
-                 deriving (Show, Eq, Typeable, Data)
- 
-data TriggerEvent = TInsert
-                  | TUpdate
-                  | TDelete
-                  | AntiTriggerEvent String
-                  deriving (Show, Eq, Typeable, Data)
- 
-data TriggerFire = EachRow
-                 | EachStatement
-                 deriving (Show, Eq, Typeable, Data)
- 
-data RaiseType = RNotice
-               | RException
-               | RError
-               deriving (Show, Eq, Typeable, Data)
- 
-data CombineType = Except
-                 | Union
-                 | Intersect
-                 | UnionAll
-                 deriving (Show, Eq, Typeable, Data)
- 
-data Volatility = Volatile
-                | Stable
-                | Immutable
-                deriving (Show, Eq, Typeable, Data)
- 
-data Language = Sql
-              | Plpgsql
-              deriving (Show, Eq, Typeable, Data)
- 
-data DropType = Table
-              | Domain
-              | View
-              | Type
-              deriving (Show, Eq, Typeable, Data)
- 
-data Cascade = Cascade
-             | Restrict
-             deriving (Show, Eq, Typeable, Data)
- 
-data Direction = Asc
-               | Desc
-               deriving (Show, Eq, Typeable, Data)
- 
-data Distinct = Distinct
-              | Dupes
-              deriving (Show, Eq, Typeable, Data)
- 
-data Natural = Natural
-             | Unnatural
-             deriving (Show, Eq, Typeable, Data)
- 
-data IfExists = Require
-              | IfExists
-              deriving (Show, Eq, Typeable, Data)
- 
-data Replace = Replace
-             | NoReplace
-             deriving (Show, Eq, Typeable, Data)
- 
-data RestartIdentity = RestartIdentity
-                     | ContinueIdentity
-                     deriving (Show, Eq, Typeable, Data)
- 
-data LiftFlavour = LiftAny
-                 | LiftAll
-                 deriving (Show, Eq, Typeable, Data)
- 
-data IntervalField = IntervalYear
-                   | IntervalMonth
-                   | IntervalDay
-                   | IntervalHour
-                   | IntervalMinute
-                   | IntervalSecond
-                   | IntervalYearToMonth
-                   | IntervalDayToHour
-                   | IntervalDayToMinute
-                   | IntervalDayToSecond
-                   | IntervalHourToMinute
-                   | IntervalHourToSecond
-                   | IntervalMinuteToSecond
-                   deriving (Show, Eq, Typeable, Data)
- 
-data ExtractField = ExtractCentury
-                  | ExtractDay
-                  | ExtractDecade
-                  | ExtractDow
-                  | ExtractDoy
-                  | ExtractEpoch
-                  | ExtractHour
-                  | ExtractIsodow
-                  | ExtractIsoyear
-                  | ExtractMicroseconds
-                  | ExtractMillennium
-                  | ExtractMilliseconds
-                  | ExtractMinute
-                  | ExtractMonth
-                  | ExtractQuarter
-                  | ExtractSecond
-                  | ExtractTimezone
-                  | ExtractTimezoneHour
-                  | ExtractTimezoneMinute
-                  | ExtractWeek
-                  | ExtractYear
-                  deriving (Show, Eq, Typeable, Data)
- 
-data FrameClause = FrameUnboundedPreceding
-                 | FrameUnboundedFull
-                 | FrameRowsUnboundedPreceding
-                 deriving (Show, Eq, Typeable, Data)
- 
-data AlterTableAction = AddConstraint Annotation Constraint
-                      | AlterColumnDefault Annotation String ScalarExpr
-                      deriving (Data, Eq, Show, Typeable)
- 
-data AttributeDef = AttributeDef Annotation String TypeName
-                                 MaybeScalarExpr RowConstraintList
-                  deriving (Data, Eq, Show, Typeable)
- 
-data Constraint = CheckConstraint Annotation String ScalarExpr
-                | PrimaryKeyConstraint Annotation String [String]
-                | ReferenceConstraint Annotation String [String] String [String]
-                                      Cascade Cascade
-                | UniqueConstraint Annotation String [String]
-                deriving (Data, Eq, Show, Typeable)
- 
-data FnBody = PlpgsqlFnBody Annotation Statement
-            | SqlFnBody Annotation StatementList
-            deriving (Data, Eq, Show, Typeable)
- 
-data InList = InList Annotation ScalarExprList
-            | InQueryExpr Annotation QueryExpr
-            deriving (Data, Eq, Show, Typeable)
- 
-data JoinExpr = JoinOn Annotation ScalarExpr
-              | JoinUsing Annotation [String]
-              deriving (Data, Eq, Show, Typeable)
- 
-data ParamDef = ParamDef Annotation String TypeName
-              | ParamDefTp Annotation TypeName
-              deriving (Data, Eq, Show, Typeable)
- 
-data QueryExpr = CombineQueryExpr Annotation CombineType QueryExpr
-                                  QueryExpr
-               | Select Annotation Distinct SelectList TableRefList MaybeBoolExpr
-                        ScalarExprList MaybeBoolExpr ScalarExprDirectionPairList
-                        MaybeScalarExpr MaybeScalarExpr
-               | Values Annotation ScalarExprListList
-               | WithQueryExpr Annotation WithQueryList QueryExpr
-               deriving (Data, Eq, Show, Typeable)
- 
-data RowConstraint = NotNullConstraint Annotation String
-                   | NullConstraint Annotation String
-                   | RowCheckConstraint Annotation String ScalarExpr
-                   | RowPrimaryKeyConstraint Annotation String
-                   | RowReferenceConstraint Annotation String String (Maybe String)
-                                            Cascade Cascade
-                   | RowUniqueConstraint Annotation String
-                   deriving (Data, Eq, Show, Typeable)
- 
-data SQIdentifier = SQIdentifier Annotation [String]
-                  deriving (Data, Eq, Show, Typeable)
- 
-data ScalarExpr = BooleanLit Annotation Bool
-                | Case Annotation CaseScalarExprListScalarExprPairList
-                       MaybeScalarExpr
-                | CaseSimple Annotation ScalarExpr
-                             CaseScalarExprListScalarExprPairList MaybeScalarExpr
-                | Cast Annotation ScalarExpr TypeName
-                | Exists Annotation QueryExpr
-                | Extract Annotation ExtractField ScalarExpr
-                | FunCall Annotation String ScalarExprList
-                | Identifier Annotation String
-                | InPredicate Annotation ScalarExpr Bool InList
-                | Interval Annotation String IntervalField (Maybe Int)
-                | LiftOperator Annotation String LiftFlavour ScalarExprList
-                | NullLit Annotation
-                | NumberLit Annotation String
-                | Placeholder Annotation
-                | PositionalArg Annotation Integer
-                | QIdentifier Annotation ScalarExpr String
-                | ScalarSubQuery Annotation QueryExpr
-                | StringLit Annotation String
-                | TypedStringLit Annotation TypeName String
-                | WindowFn Annotation ScalarExpr ScalarExprList ScalarExprList
-                           Direction FrameClause
-                | AntiScalarExpr String
-                deriving (Data, Eq, Show, Typeable)
- 
-data SelectItem = SelExp Annotation ScalarExpr
-                | SelectItem Annotation ScalarExpr String
-                deriving (Data, Eq, Show, Typeable)
- 
-data SelectList = SelectList Annotation SelectItemList
-                deriving (Data, Eq, Show, Typeable)
- 
-data Statement = AlterSequence Annotation String SQIdentifier
-               | AlterTable Annotation String AlterTableActionList
-               | Assignment Annotation ScalarExpr ScalarExpr
-               | Block Annotation (Maybe String) VarDefList StatementList
-               | CaseStatement Annotation ScalarExprListStatementListPairList
-                               StatementList
-               | CaseStatementSimple Annotation ScalarExpr
-                                     ScalarExprListStatementListPairList StatementList
-               | ContinueStatement Annotation (Maybe String)
-               | Copy Annotation String [String] CopySource
-               | CopyData Annotation String
-               | CreateDomain Annotation String TypeName String MaybeBoolExpr
-               | CreateFunction Annotation String ParamDefList TypeName Replace
-                                Language FnBody Volatility
-               | CreateLanguage Annotation String
-               | CreateSequence Annotation String Integer Integer Integer Integer
-                                Integer
-               | CreateTable Annotation String AttributeDefList ConstraintList
-               | CreateTableAs Annotation String QueryExpr
-               | CreateTrigger Annotation String TriggerWhen [TriggerEvent] String
-                               TriggerFire String ScalarExprList
-               | CreateType Annotation String TypeAttributeDefList
-               | CreateView Annotation String (Maybe [String]) QueryExpr
-               | Delete Annotation SQIdentifier TableRefList MaybeBoolExpr
-                        MaybeSelectList
-               | DropFunction Annotation IfExists StringTypeNameListPairList
-                              Cascade
-               | DropSomething Annotation DropType IfExists [String] Cascade
-               | Execute Annotation ScalarExpr
-               | ExitStatement Annotation (Maybe String)
-               | ForIntegerStatement Annotation (Maybe String) ScalarExpr
-                                     ScalarExpr ScalarExpr StatementList
-               | ForQueryStatement Annotation (Maybe String) ScalarExpr QueryExpr
-                                   StatementList
-               | If Annotation ScalarExprStatementListPairList StatementList
-               | Insert Annotation SQIdentifier [String] QueryExpr MaybeSelectList
-               | Into Annotation Bool ScalarExprList Statement
-               | LoopStatement Annotation (Maybe String) StatementList
-               | Notify Annotation String
-               | NullStatement Annotation
-               | Perform Annotation ScalarExpr
-               | QueryStatement Annotation QueryExpr
-               | Raise Annotation RaiseType String ScalarExprList
-               | Return Annotation MaybeScalarExpr
-               | ReturnNext Annotation ScalarExpr
-               | ReturnQuery Annotation QueryExpr
-               | Set Annotation String [SetValue]
-               | Truncate Annotation [String] RestartIdentity Cascade
-               | Update Annotation SQIdentifier ScalarExprList TableRefList
-                        MaybeBoolExpr MaybeSelectList
-               | WhileStatement Annotation (Maybe String) ScalarExpr StatementList
-               | AntiStatement String
-               deriving (Data, Eq, Show, Typeable)
- 
-data TableAlias = FullAlias Annotation String [String]
-                | NoAlias Annotation
-                | TableAlias Annotation String
-                deriving (Data, Eq, Show, Typeable)
- 
-data TableRef = FunTref Annotation ScalarExpr TableAlias
-              | JoinTref Annotation TableRef Natural JoinType TableRef OnExpr
-                         TableAlias
-              | SubTref Annotation QueryExpr TableAlias
-              | Tref Annotation SQIdentifier TableAlias
-              deriving (Data, Eq, Show, Typeable)
- 
-data TypeAttributeDef = TypeAttDef Annotation String TypeName
-                      deriving (Data, Eq, Show, Typeable)
- 
-data TypeName = ArrayTypeName Annotation TypeName
-              | Prec2TypeName Annotation String Integer Integer
-              | PrecTypeName Annotation String Integer
-              | SetOfTypeName Annotation TypeName
-              | SimpleTypeName Annotation String
-              deriving (Data, Eq, Show, Typeable)
- 
-data VarDef = ParamAlias Annotation String Integer
-            | VarAlias Annotation String String
-            | VarDef Annotation String TypeName (Maybe ScalarExpr)
-            deriving (Data, Eq, Show, Typeable)
- 
-data WithQuery = WithQuery Annotation String (Maybe [String])
-                           QueryExpr
-               deriving (Data, Eq, Show, Typeable)
- 
-type AlterTableActionList = [AlterTableAction]
- 
-type AttributeDefList = [AttributeDef]
- 
-type CaseScalarExprListScalarExprPair =
-     (ScalarExprList, ScalarExpr)
- 
-type CaseScalarExprListScalarExprPairList =
-     [CaseScalarExprListScalarExprPair]
- 
-type ConstraintList = [Constraint]
- 
-type MaybeBoolExpr = Maybe ScalarExpr
- 
-type MaybeScalarExpr = Maybe ScalarExpr
- 
-type MaybeSelectList = Maybe SelectList
- 
-type OnExpr = Maybe JoinExpr
- 
-type ParamDefList = [ParamDef]
- 
-type RowConstraintList = [RowConstraint]
- 
-type ScalarExprDirectionPair = (ScalarExpr, Direction)
- 
-type ScalarExprDirectionPairList = [ScalarExprDirectionPair]
- 
-type ScalarExprList = [ScalarExpr]
- 
-type ScalarExprListList = [ScalarExprList]
- 
-type ScalarExprListStatementListPair =
-     (ScalarExprList, StatementList)
- 
-type ScalarExprListStatementListPairList =
-     [ScalarExprListStatementListPair]
- 
-type ScalarExprStatementListPair = (ScalarExpr, StatementList)
- 
-type ScalarExprStatementListPairList =
-     [ScalarExprStatementListPair]
- 
-type SelectItemList = [SelectItem]
- 
-type StatementList = [Statement]
- 
-type StringTypeNameListPair = (String, TypeNameList)
- 
-type StringTypeNameListPairList = [StringTypeNameListPair]
- 
-type TableRefList = [TableRef]
- 
-type TypeAttributeDefList = [TypeAttributeDef]
- 
-type TypeNameList = [TypeName]
- 
-type VarDefList = [VarDef]
- 
-type WithQueryList = [WithQuery]
- 
-joinType :: JoinType -> A.JoinType
-joinType x
-  = case x of
-        Inner -> A.Inner
-        LeftOuter -> A.LeftOuter
-        RightOuter -> A.RightOuter
-        FullOuter -> A.FullOuter
-        Cross -> A.Cross
- 
-copySource :: CopySource -> A.CopySource
-copySource x
-  = case x of
-        CopyFilename a1 -> A.CopyFilename a1
-        Stdin -> A.Stdin
- 
-setValue :: SetValue -> A.SetValue
-setValue x
-  = case x of
-        SetStr a1 a2 -> A.SetStr a1 a2
-        SetId a1 a2 -> A.SetId a1 a2
-        SetNum a1 a2 -> A.SetNum a1 a2
- 
-triggerWhen :: TriggerWhen -> A.TriggerWhen
-triggerWhen x
-  = case x of
-        TriggerBefore -> A.TriggerBefore
-        TriggerAfter -> A.TriggerAfter
- 
-triggerEvent :: TriggerEvent -> A.TriggerEvent
-triggerEvent x
-  = case x of
-        TInsert -> A.TInsert
-        TUpdate -> A.TUpdate
-        TDelete -> A.TDelete
-        AntiTriggerEvent _ -> error "can't convert anti triggerEvent"
- 
-triggerFire :: TriggerFire -> A.TriggerFire
-triggerFire x
-  = case x of
-        EachRow -> A.EachRow
-        EachStatement -> A.EachStatement
- 
-raiseType :: RaiseType -> A.RaiseType
-raiseType x
-  = case x of
-        RNotice -> A.RNotice
-        RException -> A.RException
-        RError -> A.RError
- 
-combineType :: CombineType -> A.CombineType
-combineType x
-  = case x of
-        Except -> A.Except
-        Union -> A.Union
-        Intersect -> A.Intersect
-        UnionAll -> A.UnionAll
- 
-volatility :: Volatility -> A.Volatility
-volatility x
-  = case x of
-        Volatile -> A.Volatile
-        Stable -> A.Stable
-        Immutable -> A.Immutable
- 
-language :: Language -> A.Language
-language x
-  = case x of
-        Sql -> A.Sql
-        Plpgsql -> A.Plpgsql
- 
-dropType :: DropType -> A.DropType
-dropType x
-  = case x of
-        Table -> A.Table
-        Domain -> A.Domain
-        View -> A.View
-        Type -> A.Type
- 
-cascade :: Cascade -> A.Cascade
-cascade x
-  = case x of
-        Cascade -> A.Cascade
-        Restrict -> A.Restrict
- 
-direction :: Direction -> A.Direction
-direction x
-  = case x of
-        Asc -> A.Asc
-        Desc -> A.Desc
- 
-distinct :: Distinct -> A.Distinct
-distinct x
-  = case x of
-        Distinct -> A.Distinct
-        Dupes -> A.Dupes
- 
-natural :: Natural -> A.Natural
-natural x
-  = case x of
-        Natural -> A.Natural
-        Unnatural -> A.Unnatural
- 
-ifExists :: IfExists -> A.IfExists
-ifExists x
-  = case x of
-        Require -> A.Require
-        IfExists -> A.IfExists
- 
-replace :: Replace -> A.Replace
-replace x
-  = case x of
-        Replace -> A.Replace
-        NoReplace -> A.NoReplace
- 
-restartIdentity :: RestartIdentity -> A.RestartIdentity
-restartIdentity x
-  = case x of
-        RestartIdentity -> A.RestartIdentity
-        ContinueIdentity -> A.ContinueIdentity
- 
-liftFlavour :: LiftFlavour -> A.LiftFlavour
-liftFlavour x
-  = case x of
-        LiftAny -> A.LiftAny
-        LiftAll -> A.LiftAll
- 
-intervalField :: IntervalField -> A.IntervalField
-intervalField x
-  = case x of
-        IntervalYear -> A.IntervalYear
-        IntervalMonth -> A.IntervalMonth
-        IntervalDay -> A.IntervalDay
-        IntervalHour -> A.IntervalHour
-        IntervalMinute -> A.IntervalMinute
-        IntervalSecond -> A.IntervalSecond
-        IntervalYearToMonth -> A.IntervalYearToMonth
-        IntervalDayToHour -> A.IntervalDayToHour
-        IntervalDayToMinute -> A.IntervalDayToMinute
-        IntervalDayToSecond -> A.IntervalDayToSecond
-        IntervalHourToMinute -> A.IntervalHourToMinute
-        IntervalHourToSecond -> A.IntervalHourToSecond
-        IntervalMinuteToSecond -> A.IntervalMinuteToSecond
- 
-extractField :: ExtractField -> A.ExtractField
-extractField x
-  = case x of
-        ExtractCentury -> A.ExtractCentury
-        ExtractDay -> A.ExtractDay
-        ExtractDecade -> A.ExtractDecade
-        ExtractDow -> A.ExtractDow
-        ExtractDoy -> A.ExtractDoy
-        ExtractEpoch -> A.ExtractEpoch
-        ExtractHour -> A.ExtractHour
-        ExtractIsodow -> A.ExtractIsodow
-        ExtractIsoyear -> A.ExtractIsoyear
-        ExtractMicroseconds -> A.ExtractMicroseconds
-        ExtractMillennium -> A.ExtractMillennium
-        ExtractMilliseconds -> A.ExtractMilliseconds
-        ExtractMinute -> A.ExtractMinute
-        ExtractMonth -> A.ExtractMonth
-        ExtractQuarter -> A.ExtractQuarter
-        ExtractSecond -> A.ExtractSecond
-        ExtractTimezone -> A.ExtractTimezone
-        ExtractTimezoneHour -> A.ExtractTimezoneHour
-        ExtractTimezoneMinute -> A.ExtractTimezoneMinute
-        ExtractWeek -> A.ExtractWeek
-        ExtractYear -> A.ExtractYear
- 
-frameClause :: FrameClause -> A.FrameClause
-frameClause x
-  = case x of
-        FrameUnboundedPreceding -> A.FrameUnboundedPreceding
-        FrameUnboundedFull -> A.FrameUnboundedFull
-        FrameRowsUnboundedPreceding -> A.FrameRowsUnboundedPreceding
- 
-alterTableAction :: AlterTableAction -> A.AlterTableAction
-alterTableAction x
-  = case x of
-        AddConstraint a1 a2 -> A.AddConstraint a1 (constraint a2)
-        AlterColumnDefault a1 a2 a3 -> A.AlterColumnDefault a1 a2
-                                         (scalarExpr a3)
- 
-attributeDef :: AttributeDef -> A.AttributeDef
-attributeDef x
-  = case x of
-        AttributeDef a1 a2 a3 a4 a5 -> A.AttributeDef a1 a2 (typeName a3)
-                                         (maybeScalarExpr a4)
-                                         (rowConstraintList a5)
- 
-constraint :: Constraint -> A.Constraint
-constraint x
-  = case x of
-        CheckConstraint a1 a2 a3 -> A.CheckConstraint a1 a2 (scalarExpr a3)
-        PrimaryKeyConstraint a1 a2 a3 -> A.PrimaryKeyConstraint a1 a2 a3
-        ReferenceConstraint a1 a2 a3 a4 a5 a6 a7 -> A.ReferenceConstraint
-                                                      a1
-                                                      a2
-                                                      a3
-                                                      a4
-                                                      a5
-                                                      (cascade a6)
-                                                      (cascade a7)
-        UniqueConstraint a1 a2 a3 -> A.UniqueConstraint a1 a2 a3
- 
-fnBody :: FnBody -> A.FnBody
-fnBody x
-  = case x of
-        PlpgsqlFnBody a1 a2 -> A.PlpgsqlFnBody a1 (statement a2)
-        SqlFnBody a1 a2 -> A.SqlFnBody a1 (statementList a2)
- 
-inList :: InList -> A.InList
-inList x
-  = case x of
-        InList a1 a2 -> A.InList a1 (scalarExprList a2)
-        InQueryExpr a1 a2 -> A.InQueryExpr a1 (queryExpr a2)
- 
-joinExpr :: JoinExpr -> A.JoinExpr
-joinExpr x
-  = case x of
-        JoinOn a1 a2 -> A.JoinOn a1 (scalarExpr a2)
-        JoinUsing a1 a2 -> A.JoinUsing a1 a2
- 
-paramDef :: ParamDef -> A.ParamDef
-paramDef x
-  = case x of
-        ParamDef a1 a2 a3 -> A.ParamDef a1 a2 (typeName a3)
-        ParamDefTp a1 a2 -> A.ParamDefTp a1 (typeName a2)
- 
-queryExpr :: QueryExpr -> A.QueryExpr
-queryExpr x
-  = case x of
-        CombineQueryExpr a1 a2 a3 a4 -> A.CombineQueryExpr a1
-                                          (combineType a2)
-                                          (queryExpr a3)
-                                          (queryExpr a4)
-        Select a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 -> A.Select a1 (distinct a2)
-                                                   (selectList a3)
-                                                   (tableRefList a4)
-                                                   (maybeBoolExpr a5)
-                                                   (scalarExprList a6)
-                                                   (maybeBoolExpr a7)
-                                                   (scalarExprDirectionPairList a8)
-                                                   (maybeScalarExpr a9)
-                                                   (maybeScalarExpr a10)
-        Values a1 a2 -> A.Values a1 (scalarExprListList a2)
-        WithQueryExpr a1 a2 a3 -> A.WithQueryExpr a1 (withQueryList a2)
-                                    (queryExpr a3)
- 
-rowConstraint :: RowConstraint -> A.RowConstraint
-rowConstraint x
-  = case x of
-        NotNullConstraint a1 a2 -> A.NotNullConstraint a1 a2
-        NullConstraint a1 a2 -> A.NullConstraint a1 a2
-        RowCheckConstraint a1 a2 a3 -> A.RowCheckConstraint a1 a2
-                                         (scalarExpr a3)
-        RowPrimaryKeyConstraint a1 a2 -> A.RowPrimaryKeyConstraint a1 a2
-        RowReferenceConstraint a1 a2 a3 a4 a5
-          a6 -> A.RowReferenceConstraint a1 a2 a3 a4 (cascade a5)
-                  (cascade a6)
-        RowUniqueConstraint a1 a2 -> A.RowUniqueConstraint a1 a2
- 
-sQIdentifier :: SQIdentifier -> A.SQIdentifier
-sQIdentifier x
-  = case x of
-        SQIdentifier a1 a2 -> A.SQIdentifier a1 a2
- 
-scalarExpr :: ScalarExpr -> A.ScalarExpr
-scalarExpr x
-  = case x of
-        BooleanLit a1 a2 -> A.BooleanLit a1 a2
-        Case a1 a2 a3 -> A.Case a1
-                           (caseScalarExprListScalarExprPairList a2)
-                           (maybeScalarExpr a3)
-        CaseSimple a1 a2 a3 a4 -> A.CaseSimple a1 (scalarExpr a2)
-                                    (caseScalarExprListScalarExprPairList a3)
-                                    (maybeScalarExpr a4)
-        Cast a1 a2 a3 -> A.Cast a1 (scalarExpr a2) (typeName a3)
-        Exists a1 a2 -> A.Exists a1 (queryExpr a2)
-        Extract a1 a2 a3 -> A.Extract a1 (extractField a2) (scalarExpr a3)
-        FunCall a1 a2 a3 -> A.FunCall a1 a2 (scalarExprList a3)
-        Identifier a1 a2 -> A.Identifier a1 a2
-        InPredicate a1 a2 a3 a4 -> A.InPredicate a1 (scalarExpr a2) a3
-                                     (inList a4)
-        Interval a1 a2 a3 a4 -> A.Interval a1 a2 (intervalField a3) a4
-        LiftOperator a1 a2 a3 a4 -> A.LiftOperator a1 a2 (liftFlavour a3)
-                                      (scalarExprList a4)
-        NullLit a1 -> A.NullLit a1
-        NumberLit a1 a2 -> A.NumberLit a1 a2
-        Placeholder a1 -> A.Placeholder a1
-        PositionalArg a1 a2 -> A.PositionalArg a1 a2
-        QIdentifier a1 a2 a3 -> A.QIdentifier a1 (scalarExpr a2) a3
-        ScalarSubQuery a1 a2 -> A.ScalarSubQuery a1 (queryExpr a2)
-        StringLit a1 a2 -> A.StringLit a1 a2
-        TypedStringLit a1 a2 a3 -> A.TypedStringLit a1 (typeName a2) a3
-        WindowFn a1 a2 a3 a4 a5 a6 -> A.WindowFn a1 (scalarExpr a2)
-                                        (scalarExprList a3)
-                                        (scalarExprList a4)
-                                        (direction a5)
-                                        (frameClause a6)
-        AntiScalarExpr _ -> error "can't convert anti scalarExpr"
- 
-selectItem :: SelectItem -> A.SelectItem
-selectItem x
-  = case x of
-        SelExp a1 a2 -> A.SelExp a1 (scalarExpr a2)
-        SelectItem a1 a2 a3 -> A.SelectItem a1 (scalarExpr a2) a3
- 
-selectList :: SelectList -> A.SelectList
-selectList x
-  = case x of
-        SelectList a1 a2 -> A.SelectList a1 (selectItemList a2)
- 
-statement :: Statement -> A.Statement
-statement x
-  = case x of
-        AlterSequence a1 a2 a3 -> A.AlterSequence a1 a2 (sQIdentifier a3)
-        AlterTable a1 a2 a3 -> A.AlterTable a1 a2 (alterTableActionList a3)
-        Assignment a1 a2 a3 -> A.Assignment a1 (scalarExpr a2)
-                                 (scalarExpr a3)
-        Block a1 a2 a3 a4 -> A.Block a1 a2 (varDefList a3)
-                               (statementList a4)
-        CaseStatement a1 a2 a3 -> A.CaseStatement a1
-                                    (scalarExprListStatementListPairList a2)
-                                    (statementList a3)
-        CaseStatementSimple a1 a2 a3 a4 -> A.CaseStatementSimple a1
-                                             (scalarExpr a2)
-                                             (scalarExprListStatementListPairList a3)
-                                             (statementList a4)
-        ContinueStatement a1 a2 -> A.ContinueStatement a1 a2
-        Copy a1 a2 a3 a4 -> A.Copy a1 a2 a3 (copySource a4)
-        CopyData a1 a2 -> A.CopyData a1 a2
-        CreateDomain a1 a2 a3 a4 a5 -> A.CreateDomain a1 a2 (typeName a3)
-                                         a4
-                                         (maybeBoolExpr a5)
-        CreateFunction a1 a2 a3 a4 a5 a6 a7 a8 -> A.CreateFunction a1 a2
-                                                    (paramDefList a3)
-                                                    (typeName a4)
-                                                    (replace a5)
-                                                    (language a6)
-                                                    (fnBody a7)
-                                                    (volatility a8)
-        CreateLanguage a1 a2 -> A.CreateLanguage a1 a2
-        CreateSequence a1 a2 a3 a4 a5 a6 a7 -> A.CreateSequence a1 a2 a3 a4
-                                                 a5
-                                                 a6
-                                                 a7
-        CreateTable a1 a2 a3 a4 -> A.CreateTable a1 a2
-                                     (attributeDefList a3)
-                                     (constraintList a4)
-        CreateTableAs a1 a2 a3 -> A.CreateTableAs a1 a2 (queryExpr a3)
-        CreateTrigger a1 a2 a3 a4 a5 a6 a7 a8 -> A.CreateTrigger a1 a2
-                                                   (triggerWhen a3)
-                                                   (fmap triggerEvent a4)
-                                                   a5
-                                                   (triggerFire a6)
-                                                   a7
-                                                   (scalarExprList a8)
-        CreateType a1 a2 a3 -> A.CreateType a1 a2 (typeAttributeDefList a3)
-        CreateView a1 a2 a3 a4 -> A.CreateView a1 a2 a3 (queryExpr a4)
-        Delete a1 a2 a3 a4 a5 -> A.Delete a1 (sQIdentifier a2)
-                                   (tableRefList a3)
-                                   (maybeBoolExpr a4)
-                                   (maybeSelectList a5)
-        DropFunction a1 a2 a3 a4 -> A.DropFunction a1 (ifExists a2)
-                                      (stringTypeNameListPairList a3)
-                                      (cascade a4)
-        DropSomething a1 a2 a3 a4 a5 -> A.DropSomething a1 (dropType a2)
-                                          (ifExists a3)
-                                          a4
-                                          (cascade a5)
-        Execute a1 a2 -> A.Execute a1 (scalarExpr a2)
-        ExitStatement a1 a2 -> A.ExitStatement a1 a2
-        ForIntegerStatement a1 a2 a3 a4 a5 a6 -> A.ForIntegerStatement a1
-                                                   a2
-                                                   (scalarExpr a3)
-                                                   (scalarExpr a4)
-                                                   (scalarExpr a5)
-                                                   (statementList a6)
-        ForQueryStatement a1 a2 a3 a4 a5 -> A.ForQueryStatement a1 a2
-                                              (scalarExpr a3)
-                                              (queryExpr a4)
-                                              (statementList a5)
-        If a1 a2 a3 -> A.If a1 (scalarExprStatementListPairList a2)
-                         (statementList a3)
-        Insert a1 a2 a3 a4 a5 -> A.Insert a1 (sQIdentifier a2) a3
-                                   (queryExpr a4)
-                                   (maybeSelectList a5)
-        Into a1 a2 a3 a4 -> A.Into a1 a2 (scalarExprList a3) (statement a4)
-        LoopStatement a1 a2 a3 -> A.LoopStatement a1 a2 (statementList a3)
-        Notify a1 a2 -> A.Notify a1 a2
-        NullStatement a1 -> A.NullStatement a1
-        Perform a1 a2 -> A.Perform a1 (scalarExpr a2)
-        QueryStatement a1 a2 -> A.QueryStatement a1 (queryExpr a2)
-        Raise a1 a2 a3 a4 -> A.Raise a1 (raiseType a2) a3
-                               (scalarExprList a4)
-        Return a1 a2 -> A.Return a1 (maybeScalarExpr a2)
-        ReturnNext a1 a2 -> A.ReturnNext a1 (scalarExpr a2)
-        ReturnQuery a1 a2 -> A.ReturnQuery a1 (queryExpr a2)
-        Set a1 a2 a3 -> A.Set a1 a2 (fmap setValue a3)
-        Truncate a1 a2 a3 a4 -> A.Truncate a1 a2 (restartIdentity a3)
-                                  (cascade a4)
-        Update a1 a2 a3 a4 a5 a6 -> A.Update a1 (sQIdentifier a2)
-                                      (scalarExprList a3)
-                                      (tableRefList a4)
-                                      (maybeBoolExpr a5)
-                                      (maybeSelectList a6)
-        WhileStatement a1 a2 a3 a4 -> A.WhileStatement a1 a2
-                                        (scalarExpr a3)
-                                        (statementList a4)
-        AntiStatement _ -> error "can't convert anti statement"
- 
-tableAlias :: TableAlias -> A.TableAlias
-tableAlias x
-  = case x of
-        FullAlias a1 a2 a3 -> A.FullAlias a1 a2 a3
-        NoAlias a1 -> A.NoAlias a1
-        TableAlias a1 a2 -> A.TableAlias a1 a2
- 
-tableRef :: TableRef -> A.TableRef
-tableRef x
-  = case x of
-        FunTref a1 a2 a3 -> A.FunTref a1 (scalarExpr a2) (tableAlias a3)
-        JoinTref a1 a2 a3 a4 a5 a6 a7 -> A.JoinTref a1 (tableRef a2)
-                                           (natural a3)
-                                           (joinType a4)
-                                           (tableRef a5)
-                                           (onExpr a6)
-                                           (tableAlias a7)
-        SubTref a1 a2 a3 -> A.SubTref a1 (queryExpr a2) (tableAlias a3)
-        Tref a1 a2 a3 -> A.Tref a1 (sQIdentifier a2) (tableAlias a3)
- 
-typeAttributeDef :: TypeAttributeDef -> A.TypeAttributeDef
-typeAttributeDef x
-  = case x of
-        TypeAttDef a1 a2 a3 -> A.TypeAttDef a1 a2 (typeName a3)
- 
-typeName :: TypeName -> A.TypeName
-typeName x
-  = case x of
-        ArrayTypeName a1 a2 -> A.ArrayTypeName a1 (typeName a2)
-        Prec2TypeName a1 a2 a3 a4 -> A.Prec2TypeName a1 a2 a3 a4
-        PrecTypeName a1 a2 a3 -> A.PrecTypeName a1 a2 a3
-        SetOfTypeName a1 a2 -> A.SetOfTypeName a1 (typeName a2)
-        SimpleTypeName a1 a2 -> A.SimpleTypeName a1 a2
- 
-varDef :: VarDef -> A.VarDef
-varDef x
-  = case x of
-        ParamAlias a1 a2 a3 -> A.ParamAlias a1 a2 a3
-        VarAlias a1 a2 a3 -> A.VarAlias a1 a2 a3
-        VarDef a1 a2 a3 a4 -> A.VarDef a1 a2 (typeName a3)
-                                (maybeScalarExpr a4)
- 
-withQuery :: WithQuery -> A.WithQuery
-withQuery x
-  = case x of
-        WithQuery a1 a2 a3 a4 -> A.WithQuery a1 a2 a3 (queryExpr a4)
- 
-alterTableActionList ::
-                     AlterTableActionList -> A.AlterTableActionList
-alterTableActionList = fmap alterTableAction
- 
-attributeDefList :: AttributeDefList -> A.AttributeDefList
-attributeDefList = fmap attributeDef
- 
-caseScalarExprListScalarExprPair ::
-                                 CaseScalarExprListScalarExprPair ->
-                                   A.CaseScalarExprListScalarExprPair
-caseScalarExprListScalarExprPair (a, b)
-  = (scalarExprList a, scalarExpr b)
- 
-caseScalarExprListScalarExprPairList ::
-                                     CaseScalarExprListScalarExprPairList ->
-                                       A.CaseScalarExprListScalarExprPairList
-caseScalarExprListScalarExprPairList
-  = fmap caseScalarExprListScalarExprPair
- 
-constraintList :: ConstraintList -> A.ConstraintList
-constraintList = fmap constraint
- 
-maybeBoolExpr :: MaybeBoolExpr -> A.MaybeBoolExpr
-maybeBoolExpr = fmap scalarExpr
- 
-maybeScalarExpr :: MaybeScalarExpr -> A.MaybeScalarExpr
-maybeScalarExpr = fmap scalarExpr
- 
-maybeSelectList :: MaybeSelectList -> A.MaybeSelectList
-maybeSelectList = fmap selectList
- 
-onExpr :: OnExpr -> A.OnExpr
-onExpr = fmap joinExpr
- 
-paramDefList :: ParamDefList -> A.ParamDefList
-paramDefList = fmap paramDef
- 
-rowConstraintList :: RowConstraintList -> A.RowConstraintList
-rowConstraintList = fmap rowConstraint
- 
-scalarExprDirectionPair ::
-                        ScalarExprDirectionPair -> A.ScalarExprDirectionPair
-scalarExprDirectionPair (a, b) = (scalarExpr a, direction b)
- 
-scalarExprDirectionPairList ::
-                            ScalarExprDirectionPairList -> A.ScalarExprDirectionPairList
-scalarExprDirectionPairList = fmap scalarExprDirectionPair
- 
-scalarExprList :: ScalarExprList -> A.ScalarExprList
-scalarExprList = fmap scalarExpr
- 
-scalarExprListList :: ScalarExprListList -> A.ScalarExprListList
-scalarExprListList = fmap scalarExprList
- 
-scalarExprListStatementListPair ::
-                                ScalarExprListStatementListPair ->
-                                  A.ScalarExprListStatementListPair
-scalarExprListStatementListPair (a, b)
-  = (scalarExprList a, statementList b)
- 
-scalarExprListStatementListPairList ::
-                                    ScalarExprListStatementListPairList ->
-                                      A.ScalarExprListStatementListPairList
-scalarExprListStatementListPairList
-  = fmap scalarExprListStatementListPair
- 
-scalarExprStatementListPair ::
-                            ScalarExprStatementListPair -> A.ScalarExprStatementListPair
-scalarExprStatementListPair (a, b)
-  = (scalarExpr a, statementList b)
- 
-scalarExprStatementListPairList ::
-                                ScalarExprStatementListPairList ->
-                                  A.ScalarExprStatementListPairList
-scalarExprStatementListPairList = fmap scalarExprStatementListPair
- 
-selectItemList :: SelectItemList -> A.SelectItemList
-selectItemList = fmap selectItem
- 
-statementList :: StatementList -> A.StatementList
-statementList = fmap statement
- 
-stringTypeNameListPair ::
-                       StringTypeNameListPair -> A.StringTypeNameListPair
-stringTypeNameListPair (a, b) = (a, typeNameList b)
- 
-stringTypeNameListPairList ::
-                           StringTypeNameListPairList -> A.StringTypeNameListPairList
-stringTypeNameListPairList = fmap stringTypeNameListPair
- 
-tableRefList :: TableRefList -> A.TableRefList
-tableRefList = fmap tableRef
- 
-typeAttributeDefList ::
-                     TypeAttributeDefList -> A.TypeAttributeDefList
-typeAttributeDefList = fmap typeAttributeDef
- 
-typeNameList :: TypeNameList -> A.TypeNameList
-typeNameList = fmap typeName
- 
-varDefList :: VarDefList -> A.VarDefList
-varDefList = fmap varDef
- 
-withQueryList :: WithQueryList -> A.WithQueryList
-withQueryList = fmap withQuery
diff --git a/src/Database/HsSqlPpp/AstInternals/AstInternal.hs b/src/Database/HsSqlPpp/AstInternals/AstInternal.hs
deleted file mode 100644
--- a/src/Database/HsSqlPpp/AstInternals/AstInternal.hs
+++ /dev/null
@@ -1,14400 +0,0 @@
-
-
--- UUAGC 0.9.38.1 (AstInternal.ag)
-module Database.HsSqlPpp.AstInternals.AstInternal(
-    -- {-# LANGUAGE DeriveDataTypeable,RankNTypes,ScopedTypeVariables #-}
-    --from the ag files:
-    --ast nodes
-    Statement (..)
-   ,QueryExpr (..)
-   ,WithQueryList
-   ,WithQuery(..)
-   ,FnBody (..)
-   --,SetClause (..)
-   ,TableRef (..)
-   ,TableAlias(..)
-   ,JoinExpr (..)
-   ,JoinType (..)
-   ,SelectList (..)
-   ,SelectItem (..)
-   ,CopySource (..)
-   ,AttributeDef (..)
-   ,RowConstraint (..)
-   ,AlterTableAction(..)
-   ,Constraint (..)
-   ,TypeAttributeDef (..)
-   ,ParamDef (..)
-   ,VarDef (..)
-   ,RaiseType (..)
-   ,CombineType (..)
-   ,Volatility (..)
-   ,Language (..)
-   ,TypeName (..)
-   ,DropType (..)
-   ,Cascade (..)
-   ,Direction (..)
-   ,Distinct (..)
-   ,Natural (..)
-   ,IfExists (..)
-   ,Replace(..)
-   ,RestartIdentity (..)
-   ,ScalarExpr (..)
-   ,SQIdentifier(..)
-   ,IntervalField(..)
-   ,ExtractField(..)
-   ,FrameClause(..)
-   ,InList (..)
-   ,LiftFlavour(..)
-   ,TriggerWhen(..)
-   ,TriggerEvent(..)
-   ,TriggerFire(..)
-   ,StatementList
-   ,ScalarExprListStatementListPairList
-   ,ScalarExprListStatementListPair
-   ,ScalarExprList
-   ,ParamDefList
-   ,AttributeDefList
-   ,ConstraintList
-   ,TypeAttributeDefList
-   ,TypeNameList
-   ,StringTypeNameListPair
-   ,StringTypeNameListPairList
-   ,ScalarExprStatementListPairList
-   --,SetClauseList
-   ,CaseScalarExprListScalarExprPairList
-   ,MaybeScalarExpr
-   ,TableRefList
-   ,ScalarExprListList
-   ,SelectItemList
-   ,OnExpr
-   ,RowConstraintList
-   ,VarDefList
-   ,ScalarExprStatementListPair
-   ,CaseScalarExprListScalarExprPair
-   ,ScalarExprDirectionPair
-   ,ScalarExprDirectionPairList
-   ,MaybeBoolExpr
-   ,MaybeSelectList
-   ,SetValue(..)
-   ,AlterTableActionList
-   -- typechecking
-   ,typeCheckStatements
-   ,typeCheckParameterizedStatement
-   ,typeCheckScalarExpr
-   ,typeCheckQueryExpr
-   ,fixUpIdentifiers
-   ,fixUpIdentifiersQE
-   ,fixUpIdentifiersSE
-) where
-
-import Data.Maybe
-import Data.List
-import Control.Applicative
-import Data.Data
-import Data.Char
-import Control.Monad.State
-import Control.Arrow
-
-import Data.Generics.PlateData
-import Debug.Trace
-
-
-import Database.HsSqlPpp.AstInternals.TypeType
-import Database.HsSqlPpp.AstInternals.TypeChecking.TypeConversion
-import Database.HsSqlPpp.AstInternals.AstAnnotation
-import Database.HsSqlPpp.AstInternals.Catalog.CatalogInternal
-import Database.HsSqlPpp.AstInternals.TypeChecking.LocalBindings
-import Database.HsSqlPpp.Utils.Utils
-import Database.HsSqlPpp.AstInternals.TypeChecking.ErrorUtils
-
-
-
-
-
--- used for schema qualified identifiers
--- should be used in more places in the ast
-
-
-data JoinType = Inner | LeftOuter| RightOuter | FullOuter | Cross
-                deriving (Show,Eq,Typeable,Data)
-
-
-data CopySource = CopyFilename String
-                | Stdin
-                  deriving (Show,Eq,Typeable,Data)
-
-
-data SetValue
-    = SetStr Annotation String
-    | SetId Annotation String
-    | SetNum Annotation Double
-      deriving (Show,Eq,Typeable,Data)
-
-
-data TriggerWhen = TriggerBefore | TriggerAfter
-                   deriving (Show,Eq,Typeable,Data)
-data TriggerEvent = TInsert| TUpdate | TDelete
-                    deriving (Show,Eq,Typeable,Data)
-data TriggerFire = EachRow | EachStatement
-                   deriving (Show,Eq,Typeable,Data)
-
-
-data RaiseType = RNotice | RException | RError
-                 deriving (Show,Eq,Typeable,Data)
-
-data CombineType = Except | Union | Intersect | UnionAll
-                   deriving (Show,Eq,Typeable,Data)
-
-data Volatility = Volatile | Stable | Immutable
-                  deriving (Show,Eq,Typeable,Data)
-
-data Language = Sql | Plpgsql
-                deriving (Show,Eq,Typeable,Data)
-
-
-data DropType = Table
-              | Domain
-              | View
-              | Type
-                deriving (Show,Eq,Typeable,Data)
-
-data Cascade = Cascade | Restrict
-               deriving (Show,Eq,Typeable,Data)
-
-data Direction = Asc | Desc
-                 deriving (Show,Eq,Typeable,Data)
-
-data Distinct = Distinct | Dupes
-                deriving (Show,Eq,Typeable,Data)
-
-data Natural = Natural | Unnatural
-               deriving (Show,Eq,Typeable,Data)
-
-data IfExists = Require | IfExists
-                deriving (Show,Eq,Typeable,Data)
-
-data Replace = Replace | NoReplace
-               deriving (Show,Eq,Typeable,Data)
-
-data RestartIdentity = RestartIdentity | ContinueIdentity
-                       deriving (Show,Eq,Typeable,Data)
-
-
-
-data LiftFlavour = LiftAny | LiftAll
-                   deriving (Show,Eq,Typeable,Data)
-
-data IntervalField = IntervalYear
-                   | IntervalMonth
-                   | IntervalDay
-                   | IntervalHour
-                   | IntervalMinute
-                   | IntervalSecond
-                   | IntervalYearToMonth
-                   | IntervalDayToHour
-                   | IntervalDayToMinute
-                   | IntervalDayToSecond
-                   | IntervalHourToMinute
-                   | IntervalHourToSecond
-                   | IntervalMinuteToSecond
-                     deriving (Show,Eq,Typeable,Data)
-
-data ExtractField = ExtractCentury
-                  | ExtractDay
-                  | ExtractDecade
-                  | ExtractDow
-                  | ExtractDoy
-                  | ExtractEpoch
-                  | ExtractHour
-                  | ExtractIsodow
-                  | ExtractIsoyear
-                  | ExtractMicroseconds
-                  | ExtractMillennium
-                  | ExtractMilliseconds
-                  | ExtractMinute
-                  | ExtractMonth
-                  | ExtractQuarter
-                  | ExtractSecond
-                  | ExtractTimezone
-                  | ExtractTimezoneHour
-                  | ExtractTimezoneMinute
-                  | ExtractWeek
-                  | ExtractYear
-                    deriving (Show,Eq,Typeable,Data)
-
-
-
-data FrameClause = FrameUnboundedPreceding
-                 | FrameUnboundedFull
-                 | FrameRowsUnboundedPreceding
-                   deriving (Show,Eq,Typeable,Data)
-
-
--- | Takes an ast, checks against catalog passed, and adds
---   annotations, including types, type errors, and statement info.
---   Returns the updated catalog as well as the annotated ast.
-typeCheckStatements :: Catalog -> [Statement] -> (Catalog,[Statement])
-typeCheckStatements cat sts =
-    let t = sem_Root (Root $ fixUpIdentifiers cat sts)
-        ta = wrap_Root t Inh_Root {cat_Inh_Root = cat
-                                  ,lib_Inh_Root = emptyBindings
-                                  ,idenv_Inh_Root = emptyIDEnv}
-        tl = annotatedTree_Syn_Root ta
-        cat1 = producedCat_Syn_Root ta
-    in case tl of
-         Root r -> (cat1,r)
-
-typeCheckQueryExpr :: Catalog -> QueryExpr -> QueryExpr
-typeCheckQueryExpr cat qe =
-   let (_,[QueryStatement _ qe']) = typeCheckStatements cat [QueryStatement emptyAnnotation qe]
-   in qe'
-
--- | Unfinished version of type check which can type check an
--- individual statement with ? or positional arg placeholders in
--- it. Will error if the statement isn't select, update, insert or
--- delete. For use in type checking embedded parameterized
--- statements. Does all typechecking and annotation that the regular
--- typecheck does.
-typeCheckParameterizedStatement :: Catalog -> Statement -> Either String Statement
-typeCheckParameterizedStatement cat st =
-    case st of
-      QueryStatement _ _ -> tc
-      Insert _ _ _ _ _ -> tc
-      Update _ _ _ _ _ _ -> tc
-      Delete _ _ _ _ _ -> tc
-      _ -> Left "requires select, update, insert or delete statement"
-    where
-      tc = let t = sem_Root (Root $ fixUpIdentifiers cat [st])
-               ta = wrap_Root t Inh_Root {cat_Inh_Root = cat
-                                         ,lib_Inh_Root = emptyBindings
-                                         ,idenv_Inh_Root = emptyIDEnv}
-               tl = annotatedTree_Syn_Root ta
-               --cat1 = producedCat_Syn_Root ta
-           in case tl of
-                Root [st1] -> Right st1
-                _ -> error "impossible happened in typeCheckPS!"
-
-
--- | Testing utility, mainly used to check an expression for type errors
--- or to get its type.
-typeCheckScalarExpr :: Catalog -> ScalarExpr -> ScalarExpr
-typeCheckScalarExpr cat ex =
-    let t = sem_ScalarExprRoot (ScalarExprRoot $ fixUpIdentifiersSE cat ex)
-        rt = (annotatedTree_Syn_ScalarExprRoot
-              (wrap_ScalarExprRoot t Inh_ScalarExprRoot {cat_Inh_ScalarExprRoot = cat
-                                                        ,lib_Inh_ScalarExprRoot = emptyBindings
-                                                        ,idenv_Inh_ScalarExprRoot = emptyIDEnv}))
-    in case rt of
-         ScalarExprRoot e -> e
-
-
-
-
-data IDEnv = IDEnv [(String, [String])]
-             deriving Show
-emptyIDEnv :: IDEnv
-emptyIDEnv = IDEnv []
-
-qualifyID :: IDEnv -> String -> Maybe (String,String)
-qualifyID (IDEnv env) i =
-  q env i
-  where
-    q [] _ = Nothing
-    q ((t,cs):es) i' =
-       if i' `elem` cs
-       then Just (t,i')
-       else q es i'
-
-makeIDEnv :: String -- range qualifier
-          -> [String] -- attribute names
-          -> IDEnv
-makeIDEnv t c = IDEnv [(t,c)]
-
-makeIDEnvP :: [(String,[String])] -> IDEnv
-makeIDEnvP x  = IDEnv x
-
-unimplementedIDEnv :: IDEnv
-unimplementedIDEnv = IDEnv []
-
-joinIDEnvs :: IDEnv -> IDEnv -> IDEnv
-joinIDEnvs (IDEnv a) (IDEnv b) = IDEnv $ a ++ b
-
-expandStar :: IDEnv -> Maybe String --qualifier
-           -> [(String,String)]
-expandStar (IDEnv es) Nothing =
-  flip concatMap es $ \(t,cs) -> map (t,) cs
-expandStar (IDEnv es) (Just t) =
-  maybe [(t,"*")] (map (t,)) $ lookup t es
-
-
-
-
-
-makeSelExps :: Annotation -> Annotation -> Annotation -> [(String,String)] -> [SelectItem]
-makeSelExps sea a0 a1 is =
-  flip map is $ \(q,c) -> addSIAlias $ SelExp sea $ QIdentifier a0 (Identifier a1 q) c
-
-addSIAlias :: SelectItem -> SelectItem
-addSIAlias s@(SelectItem _ _ _) = s
-addSIAlias (SelExp ann ex) = SelectItem ann ex $ getColName ex
-  where
-    getColName (Identifier _ i) = i
-    getColName (QIdentifier _ _ i) = i
-    getColName (FunCall _ f _) | not (isOperatorName f) = f
-    getColName (Cast _ _ (SimpleTypeName _ tn)) = tn
-    getColName (WindowFn _ (FunCall _ f _) _ _ _ _) = f
-    getColName _ = "?column?"
-
-
-
-
-
-
-
-
--- | transform the tree by converting * to explicit lists of columns and adding qualifiers to all column references
-fixUpIdentifiers :: Catalog -> [Statement] -> [Statement]
-fixUpIdentifiers cat sts =
-    let t = sem_Root (Root sts)
-        ta = wrap_Root t Inh_Root {cat_Inh_Root = cat
-                                  ,lib_Inh_Root = emptyBindings
-                                  ,idenv_Inh_Root = emptyIDEnv}
-        tl = fixedUpIdentifiersTree_Syn_Root ta
-    in case tl of
-         Root r -> countHack r
-
-fixUpIdentifiersSE :: Catalog -> ScalarExpr -> ScalarExpr
-fixUpIdentifiersSE cat sts =
-    let t = sem_ScalarExprRoot (ScalarExprRoot sts)
-        ta = wrap_ScalarExprRoot t Inh_ScalarExprRoot {cat_Inh_ScalarExprRoot = cat
-                                  ,lib_Inh_ScalarExprRoot = emptyBindings
-                                  ,idenv_Inh_ScalarExprRoot = emptyIDEnv}
-        tl = fixedUpIdentifiersTree_Syn_ScalarExprRoot ta
-    in case tl of
-         ScalarExprRoot r -> countHack r
-
-fixUpIdentifiersQE :: Catalog -> QueryExpr -> QueryExpr
-fixUpIdentifiersQE cat qe =
-    let [QueryStatement _ qe'] = fixUpIdentifiers cat [QueryStatement emptyAnnotation qe]
-    in countHack qe'
-
--- small hack to convert count(*) into count(True). Should be fixed when
--- a more general approach to aggregates is written
-
-countHack :: Data a => a -> a
-countHack = transformBi $ \x -> case x of
-              FunCall a "count" [Identifier ia "*"] ->
-                FunCall a "count" [BooleanLit ia True]
-              x1 -> x1
-
-
-
-doAlias :: TableAlias -> [(String,[String])] -> ([(String,[String])],TableAlias)
-doAlias (NoAlias a) [] = ([],NoAlias a)
-doAlias (NoAlias a) cs@((t,_):ts) = if all (==t) $ map fst ts
-                                then (cs,FullAlias a t $ concatMap snd cs)
-                                else (cs,NoAlias a)
-doAlias (TableAlias a t) cs = let cs' = concatMap snd cs
-                              in ([(t, cs')], FullAlias a t cs')
-doAlias f@(FullAlias _ t cs) _ = ([(t,cs)], f)
-
-
-
-addTypeErrors :: Data a => [TypeError] -> a -> a
-addTypeErrors es el = updateAnnotation u el
-                      where
-                        u a = a {errs = errs a ++ es}
-
-setTypeAddErrors :: Data a => Et -> a -> a
-setTypeAddErrors et el = updateAnnotation (setTypeAddErrorsA et) el
-
-setTypeAddErrorsA :: Et -> Annotation -> Annotation
-setTypeAddErrorsA et a =
-    let a1 = a {errs = errs a ++ tes et}
-    in case atype a1 of
-         Just _ -> a1 {errs = errs a
-                             ++ [InternalError $ "tried to set type a second time - " ++ show (etmt et)]}
-         Nothing -> a1 {atype = etmt et}
-
-allJust :: [Maybe a] -> Maybe [a]
-allJust ts = sequence ts
-
--- bit dogdy, needs some thought
--- this is just to convert the new approach of using "." as an operator
--- to construct names, with the old approach which stuck the whole lot
--- in a string
-getName :: ScalarExpr -> String
-getName (Identifier _ i) = i
-getName (FunCall _ "." [Identifier _ _,Identifier _ i]) = i
-getName (FunCall _ "." [_,a]) = getName a
-getName x = error $ "internal error getName called on: " ++ show x
-
-getTName :: SQIdentifier -> String
-getTName (SQIdentifier _ x@(_:_)) = last x
-getTName x = error $ "internal error getName called on: " ++ show x
-
-
-unwrapLookup :: (String,[String],Type) -> Type
-unwrapLookup (_,_,t) = t
-
-allAtts :: ([(String,Type)],[(String,Type)]) -> [(String,Type)]
-allAtts (a,b) = a ++ b
-
-
-
-typeCheckValuesExpr :: Catalog -> [[Maybe Type]] -> Either [TypeError] Type
-typeCheckValuesExpr cat rowsTs = do
-        rts <- lmt $ allJust $ map allJust rowsTs
-        let colNames = zipWith (++)
-                           (repeat "column")
-                           (map show [1..length $ head rowsTs])
-        unionRelTypes cat rts colNames
-
-
-typeCheckCombineSelect :: Catalog -> Type -> Type -> Either [TypeError] Type
-typeCheckCombineSelect cat v1 v2 = do
-    u1 <- unwrapSetOfComposite v1
-    let colNames = map fst u1
-    u2 <- unwrapSetOfComposite v2
-    let colTypes1 = map snd u1
-    let colTypes2 = map snd u2
-    unionRelTypes cat [colTypes1,colTypes2] colNames
-
-unionRelTypes :: Catalog -> [[Type]] -> [String] -> Either [TypeError] Type
-unionRelTypes cat rowsTs colNames =
-  let lengths = map length rowsTs
-  in case () of
-             _ | null rowsTs ->
-                   Left [NoRowsGivenForValues]
-               | not (all (==head lengths) lengths) ->
-                   Left [ValuesListsMustBeSameLength]
-               | otherwise ->
-                   --i don't think this propagates all the errors, just the first set
-                   mapM (resolveResultSetType cat) (transpose rowsTs) >>=
-                     (return . SetOfType . CompositeType . zip colNames)
-
-
-
-
-
-
-{-
-convert a function call into a [String,[(string,type)]] list for use
-in a tableref context
-first consideration is the alias: if there is an alias in the select,
-e.g. select * from generate_series(1,2) x;  (alias is x)
-we use that, otherwise we use the name of the function
-second consideration is the attributes coming out, roughly speaking
-we have to convert an arbitrary type to a relation type
-if we have a relation valued function, we don't need to do anything
-if we have a setof non composite, we lift the single type to an
-attribute, using the function name for the attribute name
-if we have a non setof, we lift the single type to an attribute and
-then relation, using the function name for the attribute name
-need to check to see what should happen with arrayof
-
--}
-funIdens :: Catalog -> String -> ScalarExpr -> Maybe Type -> Either [TypeError] (String,[(String,Type)])
-funIdens cat alias fnVal ft = do
-   errorWhen (case fnVal of
-                FunCall _ _ _ -> False
-                _ -> True)
-             [ContextError "FunCall"]
-   let (FunCall _ fnName _) = fnVal
-       cn = if alias /= ""
-                           then alias
-                           else fnName
-   attrs <- do
-     fnt <- lmt ft
-     case fnt of
-       SetOfType (NamedCompositeType t) -> catCompositePublicAttrs cat [] t
-       SetOfType x -> return [(cn,x)]
-       y -> return [(cn,y)]
-   return (cn, attrs)
-
-getAlias :: String -> TableAlias -> String
-getAlias def alias =
-  case alias of
-    NoAlias _ -> def
-    TableAlias _ t -> t
-    FullAlias _ t _ -> t
-
-
-
-{-data SiType = SiType (String,Maybe Type)
-            | SiStarType [(String,Maybe Type)]-}
-
-
---unwrapSetofs :: [(String,Type)] -> [(String,Type)]
---unwrapSetofs = map (\(n,t) -> (n, unwrapSetof t))
-
-unwrapSetof :: Type -> Type
-unwrapSetof (SetOfType u) = u
-unwrapSetof v = v
-
-
-
-defaultSystemColumns :: [(String,Type)]
-defaultSystemColumns = [("tableoid", ScalarType "oid")
-                       ,("cmax", ScalarType "cid")
-                       ,("xmax", ScalarType "xid")
-                       ,("cmin", ScalarType "cid")
-                       ,("xmin", ScalarType "xid")
-                       ,("ctid", ScalarType "tid")]
-
-
-data ParamName = NamedParam Int String
-               | UnnamedParam Int
-
-
-getPlaceholderTypes :: Data a => a -> [Maybe Type]
-getPlaceholderTypes ex =
-    [infType (getAnnotation x) | x <- universeBi ex
-                               , isPlaceholder x]
-    where
-      isPlaceholder e = case e of
-                          PositionalArg _ _ -> True
-                          Placeholder _ -> True
-                          _ -> False
-
--- AlterTableAction --------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-   alternatives:
-      alternative AddConstraint:
-         child ann            : {Annotation}
-         child con            : Constraint 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative AlterColumnDefault:
-         child ann            : {Annotation}
-         child nm             : {String}
-         child def            : ScalarExpr 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-data AlterTableAction  = AddConstraint (Annotation) (Constraint ) 
-                       | AlterColumnDefault (Annotation) (String) (ScalarExpr ) 
-                       deriving ( Data,Eq,Show,Typeable)
--- cata
-sem_AlterTableAction :: AlterTableAction  ->
-                        T_AlterTableAction 
-sem_AlterTableAction (AddConstraint _ann _con )  =
-    (sem_AlterTableAction_AddConstraint _ann (sem_Constraint _con ) )
-sem_AlterTableAction (AlterColumnDefault _ann _nm _def )  =
-    (sem_AlterTableAction_AlterColumnDefault _ann _nm (sem_ScalarExpr _def ) )
--- semantic domain
-type T_AlterTableAction  = Catalog ->
-                           IDEnv ->
-                           LocalBindings ->
-                           ( AlterTableAction ,AlterTableAction ,AlterTableAction )
-data Inh_AlterTableAction  = Inh_AlterTableAction {cat_Inh_AlterTableAction :: Catalog,idenv_Inh_AlterTableAction :: IDEnv,lib_Inh_AlterTableAction :: LocalBindings}
-data Syn_AlterTableAction  = Syn_AlterTableAction {annotatedTree_Syn_AlterTableAction :: AlterTableAction ,fixedUpIdentifiersTree_Syn_AlterTableAction :: AlterTableAction ,originalTree_Syn_AlterTableAction :: AlterTableAction }
-wrap_AlterTableAction :: T_AlterTableAction  ->
-                         Inh_AlterTableAction  ->
-                         Syn_AlterTableAction 
-wrap_AlterTableAction sem (Inh_AlterTableAction _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_AlterTableAction _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
-sem_AlterTableAction_AddConstraint :: Annotation ->
-                                      T_Constraint  ->
-                                      T_AlterTableAction 
-sem_AlterTableAction_AddConstraint ann_ con_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: AlterTableAction 
-              _lhsOfixedUpIdentifiersTree :: AlterTableAction 
-              _lhsOoriginalTree :: AlterTableAction 
-              _conOcat :: Catalog
-              _conOidenv :: IDEnv
-              _conOlib :: LocalBindings
-              _conIannotatedTree :: Constraint 
-              _conIfixedUpIdentifiersTree :: Constraint 
-              _conIoriginalTree :: Constraint 
-              -- self rule
-              _annotatedTree =
-                  AddConstraint ann_ _conIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  AddConstraint ann_ _conIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  AddConstraint ann_ _conIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _conOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _conOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _conOlib =
-                  _lhsIlib
-              ( _conIannotatedTree,_conIfixedUpIdentifiersTree,_conIoriginalTree) =
-                  con_ _conOcat _conOidenv _conOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
-sem_AlterTableAction_AlterColumnDefault :: Annotation ->
-                                           String ->
-                                           T_ScalarExpr  ->
-                                           T_AlterTableAction 
-sem_AlterTableAction_AlterColumnDefault ann_ nm_ def_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _defOexpectedType :: (Maybe Type)
-              _lhsOannotatedTree :: AlterTableAction 
-              _lhsOfixedUpIdentifiersTree :: AlterTableAction 
-              _lhsOoriginalTree :: AlterTableAction 
-              _defOcat :: Catalog
-              _defOidenv :: IDEnv
-              _defOlib :: LocalBindings
-              _defIannotatedTree :: ScalarExpr 
-              _defIfixedUpIdentifiersTree :: ScalarExpr 
-              _defIoriginalTree :: ScalarExpr 
-              _defIuType :: (Maybe Type)
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 72, column 26)
-              _defOexpectedType =
-                  Nothing
-              -- self rule
-              _annotatedTree =
-                  AlterColumnDefault ann_ nm_ _defIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  AlterColumnDefault ann_ nm_ _defIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  AlterColumnDefault ann_ nm_ _defIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _defOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _defOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _defOlib =
-                  _lhsIlib
-              ( _defIannotatedTree,_defIfixedUpIdentifiersTree,_defIoriginalTree,_defIuType) =
-                  def_ _defOcat _defOexpectedType _defOidenv _defOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
--- AlterTableActionList ----------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-   alternatives:
-      alternative Cons:
-         child hd             : AlterTableAction 
-         child tl             : AlterTableActionList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Nil:
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-type AlterTableActionList  = [AlterTableAction ]
--- cata
-sem_AlterTableActionList :: AlterTableActionList  ->
-                            T_AlterTableActionList 
-sem_AlterTableActionList list  =
-    (Prelude.foldr sem_AlterTableActionList_Cons sem_AlterTableActionList_Nil (Prelude.map sem_AlterTableAction list) )
--- semantic domain
-type T_AlterTableActionList  = Catalog ->
-                               IDEnv ->
-                               LocalBindings ->
-                               ( AlterTableActionList ,AlterTableActionList ,AlterTableActionList )
-data Inh_AlterTableActionList  = Inh_AlterTableActionList {cat_Inh_AlterTableActionList :: Catalog,idenv_Inh_AlterTableActionList :: IDEnv,lib_Inh_AlterTableActionList :: LocalBindings}
-data Syn_AlterTableActionList  = Syn_AlterTableActionList {annotatedTree_Syn_AlterTableActionList :: AlterTableActionList ,fixedUpIdentifiersTree_Syn_AlterTableActionList :: AlterTableActionList ,originalTree_Syn_AlterTableActionList :: AlterTableActionList }
-wrap_AlterTableActionList :: T_AlterTableActionList  ->
-                             Inh_AlterTableActionList  ->
-                             Syn_AlterTableActionList 
-wrap_AlterTableActionList sem (Inh_AlterTableActionList _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_AlterTableActionList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
-sem_AlterTableActionList_Cons :: T_AlterTableAction  ->
-                                 T_AlterTableActionList  ->
-                                 T_AlterTableActionList 
-sem_AlterTableActionList_Cons hd_ tl_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: AlterTableActionList 
-              _lhsOfixedUpIdentifiersTree :: AlterTableActionList 
-              _lhsOoriginalTree :: AlterTableActionList 
-              _hdOcat :: Catalog
-              _hdOidenv :: IDEnv
-              _hdOlib :: LocalBindings
-              _tlOcat :: Catalog
-              _tlOidenv :: IDEnv
-              _tlOlib :: LocalBindings
-              _hdIannotatedTree :: AlterTableAction 
-              _hdIfixedUpIdentifiersTree :: AlterTableAction 
-              _hdIoriginalTree :: AlterTableAction 
-              _tlIannotatedTree :: AlterTableActionList 
-              _tlIfixedUpIdentifiersTree :: AlterTableActionList 
-              _tlIoriginalTree :: AlterTableActionList 
-              -- self rule
-              _annotatedTree =
-                  (:) _hdIannotatedTree _tlIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  (:) _hdIoriginalTree _tlIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _hdOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _hdOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _hdOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _tlOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _tlOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _tlOlib =
-                  _lhsIlib
-              ( _hdIannotatedTree,_hdIfixedUpIdentifiersTree,_hdIoriginalTree) =
-                  hd_ _hdOcat _hdOidenv _hdOlib 
-              ( _tlIannotatedTree,_tlIfixedUpIdentifiersTree,_tlIoriginalTree) =
-                  tl_ _tlOcat _tlOidenv _tlOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
-sem_AlterTableActionList_Nil :: T_AlterTableActionList 
-sem_AlterTableActionList_Nil  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: AlterTableActionList 
-              _lhsOfixedUpIdentifiersTree :: AlterTableActionList 
-              _lhsOoriginalTree :: AlterTableActionList 
-              -- self rule
-              _annotatedTree =
-                  []
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  []
-              -- self rule
-              _originalTree =
-                  []
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
--- AttributeDef ------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         attrName             : String
-         fixedUpIdentifiersTree : SELF 
-         namedType            : Maybe Type
-         originalTree         : SELF 
-   alternatives:
-      alternative AttributeDef:
-         child ann            : {Annotation}
-         child name           : {String}
-         child typ            : TypeName 
-         child def            : MaybeScalarExpr 
-         child cons           : RowConstraintList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-data AttributeDef  = AttributeDef (Annotation) (String) (TypeName ) (MaybeScalarExpr ) (RowConstraintList ) 
-                   deriving ( Data,Eq,Show,Typeable)
--- cata
-sem_AttributeDef :: AttributeDef  ->
-                    T_AttributeDef 
-sem_AttributeDef (AttributeDef _ann _name _typ _def _cons )  =
-    (sem_AttributeDef_AttributeDef _ann _name (sem_TypeName _typ ) (sem_MaybeScalarExpr _def ) (sem_RowConstraintList _cons ) )
--- semantic domain
-type T_AttributeDef  = Catalog ->
-                       IDEnv ->
-                       LocalBindings ->
-                       ( AttributeDef ,String,AttributeDef ,(Maybe Type),AttributeDef )
-data Inh_AttributeDef  = Inh_AttributeDef {cat_Inh_AttributeDef :: Catalog,idenv_Inh_AttributeDef :: IDEnv,lib_Inh_AttributeDef :: LocalBindings}
-data Syn_AttributeDef  = Syn_AttributeDef {annotatedTree_Syn_AttributeDef :: AttributeDef ,attrName_Syn_AttributeDef :: String,fixedUpIdentifiersTree_Syn_AttributeDef :: AttributeDef ,namedType_Syn_AttributeDef :: (Maybe Type),originalTree_Syn_AttributeDef :: AttributeDef }
-wrap_AttributeDef :: T_AttributeDef  ->
-                     Inh_AttributeDef  ->
-                     Syn_AttributeDef 
-wrap_AttributeDef sem (Inh_AttributeDef _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOattrName,_lhsOfixedUpIdentifiersTree,_lhsOnamedType,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_AttributeDef _lhsOannotatedTree _lhsOattrName _lhsOfixedUpIdentifiersTree _lhsOnamedType _lhsOoriginalTree ))
-sem_AttributeDef_AttributeDef :: Annotation ->
-                                 String ->
-                                 T_TypeName  ->
-                                 T_MaybeScalarExpr  ->
-                                 T_RowConstraintList  ->
-                                 T_AttributeDef 
-sem_AttributeDef_AttributeDef ann_ name_ typ_ def_ cons_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOattrName :: String
-              _lhsOnamedType :: (Maybe Type)
-              _consOlib :: LocalBindings
-              _lhsOannotatedTree :: AttributeDef 
-              _lhsOfixedUpIdentifiersTree :: AttributeDef 
-              _lhsOoriginalTree :: AttributeDef 
-              _typOcat :: Catalog
-              _typOidenv :: IDEnv
-              _typOlib :: LocalBindings
-              _defOcat :: Catalog
-              _defOidenv :: IDEnv
-              _defOlib :: LocalBindings
-              _consOcat :: Catalog
-              _consOidenv :: IDEnv
-              _typIannotatedTree :: TypeName 
-              _typIfixedUpIdentifiersTree :: TypeName 
-              _typInamedType :: (Maybe Type)
-              _typIoriginalTree :: TypeName 
-              _defIannotatedTree :: MaybeScalarExpr 
-              _defIfixedUpIdentifiersTree :: MaybeScalarExpr 
-              _defIoriginalTree :: MaybeScalarExpr 
-              _defIuType :: (Maybe Type)
-              _consIannotatedTree :: RowConstraintList 
-              _consIfixedUpIdentifiersTree :: RowConstraintList 
-              _consIoriginalTree :: RowConstraintList 
-              -- "./TypeChecking/Ddl/CreateTable.ag"(line 83, column 9)
-              _lhsOattrName =
-                  map toLower name_
-              -- "./TypeChecking/Ddl/CreateTable.ag"(line 84, column 9)
-              _lhsOnamedType =
-                  _typInamedType
-              -- "./TypeChecking/Ddl/CreateTable.ag"(line 98, column 9)
-              _consOlib =
-                  either (const _lhsIlib) id $ do
-                  t <- lmt _typInamedType
-                  lbUpdate _lhsIcat
-                           (LBIds "attribute def" Nothing
-                                  [(name_, t)]) _lhsIlib
-              -- self rule
-              _annotatedTree =
-                  AttributeDef ann_ name_ _typIannotatedTree _defIannotatedTree _consIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  AttributeDef ann_ name_ _typIfixedUpIdentifiersTree _defIfixedUpIdentifiersTree _consIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  AttributeDef ann_ name_ _typIoriginalTree _defIoriginalTree _consIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _typOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _typOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _typOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _defOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _defOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _defOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _consOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _consOidenv =
-                  _lhsIidenv
-              ( _typIannotatedTree,_typIfixedUpIdentifiersTree,_typInamedType,_typIoriginalTree) =
-                  typ_ _typOcat _typOidenv _typOlib 
-              ( _defIannotatedTree,_defIfixedUpIdentifiersTree,_defIoriginalTree,_defIuType) =
-                  def_ _defOcat _defOidenv _defOlib 
-              ( _consIannotatedTree,_consIfixedUpIdentifiersTree,_consIoriginalTree) =
-                  cons_ _consOcat _consOidenv _consOlib 
-          in  ( _lhsOannotatedTree,_lhsOattrName,_lhsOfixedUpIdentifiersTree,_lhsOnamedType,_lhsOoriginalTree)))
--- AttributeDefList --------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         attrs                : [(String, Maybe Type)]
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-   alternatives:
-      alternative Cons:
-         child hd             : AttributeDef 
-         child tl             : AttributeDefList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Nil:
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-type AttributeDefList  = [AttributeDef ]
--- cata
-sem_AttributeDefList :: AttributeDefList  ->
-                        T_AttributeDefList 
-sem_AttributeDefList list  =
-    (Prelude.foldr sem_AttributeDefList_Cons sem_AttributeDefList_Nil (Prelude.map sem_AttributeDef list) )
--- semantic domain
-type T_AttributeDefList  = Catalog ->
-                           IDEnv ->
-                           LocalBindings ->
-                           ( AttributeDefList ,([(String, Maybe Type)]),AttributeDefList ,AttributeDefList )
-data Inh_AttributeDefList  = Inh_AttributeDefList {cat_Inh_AttributeDefList :: Catalog,idenv_Inh_AttributeDefList :: IDEnv,lib_Inh_AttributeDefList :: LocalBindings}
-data Syn_AttributeDefList  = Syn_AttributeDefList {annotatedTree_Syn_AttributeDefList :: AttributeDefList ,attrs_Syn_AttributeDefList :: ([(String, Maybe Type)]),fixedUpIdentifiersTree_Syn_AttributeDefList :: AttributeDefList ,originalTree_Syn_AttributeDefList :: AttributeDefList }
-wrap_AttributeDefList :: T_AttributeDefList  ->
-                         Inh_AttributeDefList  ->
-                         Syn_AttributeDefList 
-wrap_AttributeDefList sem (Inh_AttributeDefList _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOattrs,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_AttributeDefList _lhsOannotatedTree _lhsOattrs _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
-sem_AttributeDefList_Cons :: T_AttributeDef  ->
-                             T_AttributeDefList  ->
-                             T_AttributeDefList 
-sem_AttributeDefList_Cons hd_ tl_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOattrs :: ([(String, Maybe Type)])
-              _lhsOannotatedTree :: AttributeDefList 
-              _lhsOfixedUpIdentifiersTree :: AttributeDefList 
-              _lhsOoriginalTree :: AttributeDefList 
-              _hdOcat :: Catalog
-              _hdOidenv :: IDEnv
-              _hdOlib :: LocalBindings
-              _tlOcat :: Catalog
-              _tlOidenv :: IDEnv
-              _tlOlib :: LocalBindings
-              _hdIannotatedTree :: AttributeDef 
-              _hdIattrName :: String
-              _hdIfixedUpIdentifiersTree :: AttributeDef 
-              _hdInamedType :: (Maybe Type)
-              _hdIoriginalTree :: AttributeDef 
-              _tlIannotatedTree :: AttributeDefList 
-              _tlIattrs :: ([(String, Maybe Type)])
-              _tlIfixedUpIdentifiersTree :: AttributeDefList 
-              _tlIoriginalTree :: AttributeDefList 
-              -- "./TypeChecking/Ddl/CreateTable.ag"(line 88, column 12)
-              _lhsOattrs =
-                  (_hdIattrName, _hdInamedType) : _tlIattrs
-              -- self rule
-              _annotatedTree =
-                  (:) _hdIannotatedTree _tlIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  (:) _hdIoriginalTree _tlIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _hdOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _hdOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _hdOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _tlOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _tlOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _tlOlib =
-                  _lhsIlib
-              ( _hdIannotatedTree,_hdIattrName,_hdIfixedUpIdentifiersTree,_hdInamedType,_hdIoriginalTree) =
-                  hd_ _hdOcat _hdOidenv _hdOlib 
-              ( _tlIannotatedTree,_tlIattrs,_tlIfixedUpIdentifiersTree,_tlIoriginalTree) =
-                  tl_ _tlOcat _tlOidenv _tlOlib 
-          in  ( _lhsOannotatedTree,_lhsOattrs,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
-sem_AttributeDefList_Nil :: T_AttributeDefList 
-sem_AttributeDefList_Nil  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOattrs :: ([(String, Maybe Type)])
-              _lhsOannotatedTree :: AttributeDefList 
-              _lhsOfixedUpIdentifiersTree :: AttributeDefList 
-              _lhsOoriginalTree :: AttributeDefList 
-              -- "./TypeChecking/Ddl/CreateTable.ag"(line 89, column 11)
-              _lhsOattrs =
-                  []
-              -- self rule
-              _annotatedTree =
-                  []
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  []
-              -- self rule
-              _originalTree =
-                  []
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOattrs,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
--- CaseScalarExprListScalarExprPair ----------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-         thenType             : Maybe Type
-         whenTypes            : [Maybe Type]
-   alternatives:
-      alternative Tuple:
-         child x1             : ScalarExprList 
-         child x2             : ScalarExpr 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-type CaseScalarExprListScalarExprPair  = ( ScalarExprList ,ScalarExpr )
--- cata
-sem_CaseScalarExprListScalarExprPair :: CaseScalarExprListScalarExprPair  ->
-                                        T_CaseScalarExprListScalarExprPair 
-sem_CaseScalarExprListScalarExprPair ( x1,x2)  =
-    (sem_CaseScalarExprListScalarExprPair_Tuple (sem_ScalarExprList x1 ) (sem_ScalarExpr x2 ) )
--- semantic domain
-type T_CaseScalarExprListScalarExprPair  = Catalog ->
-                                           IDEnv ->
-                                           LocalBindings ->
-                                           ( CaseScalarExprListScalarExprPair ,CaseScalarExprListScalarExprPair ,CaseScalarExprListScalarExprPair ,(Maybe Type),([Maybe Type]))
-data Inh_CaseScalarExprListScalarExprPair  = Inh_CaseScalarExprListScalarExprPair {cat_Inh_CaseScalarExprListScalarExprPair :: Catalog,idenv_Inh_CaseScalarExprListScalarExprPair :: IDEnv,lib_Inh_CaseScalarExprListScalarExprPair :: LocalBindings}
-data Syn_CaseScalarExprListScalarExprPair  = Syn_CaseScalarExprListScalarExprPair {annotatedTree_Syn_CaseScalarExprListScalarExprPair :: CaseScalarExprListScalarExprPair ,fixedUpIdentifiersTree_Syn_CaseScalarExprListScalarExprPair :: CaseScalarExprListScalarExprPair ,originalTree_Syn_CaseScalarExprListScalarExprPair :: CaseScalarExprListScalarExprPair ,thenType_Syn_CaseScalarExprListScalarExprPair :: (Maybe Type),whenTypes_Syn_CaseScalarExprListScalarExprPair :: ([Maybe Type])}
-wrap_CaseScalarExprListScalarExprPair :: T_CaseScalarExprListScalarExprPair  ->
-                                         Inh_CaseScalarExprListScalarExprPair  ->
-                                         Syn_CaseScalarExprListScalarExprPair 
-wrap_CaseScalarExprListScalarExprPair sem (Inh_CaseScalarExprListScalarExprPair _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOthenType,_lhsOwhenTypes) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_CaseScalarExprListScalarExprPair _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree _lhsOthenType _lhsOwhenTypes ))
-sem_CaseScalarExprListScalarExprPair_Tuple :: T_ScalarExprList  ->
-                                              T_ScalarExpr  ->
-                                              T_CaseScalarExprListScalarExprPair 
-sem_CaseScalarExprListScalarExprPair_Tuple x1_ x2_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOwhenTypes :: ([Maybe Type])
-              _lhsOthenType :: (Maybe Type)
-              _x1OexpectedTypes :: ([Maybe Type])
-              _x2OexpectedType :: (Maybe Type)
-              _lhsOannotatedTree :: CaseScalarExprListScalarExprPair 
-              _lhsOfixedUpIdentifiersTree :: CaseScalarExprListScalarExprPair 
-              _lhsOoriginalTree :: CaseScalarExprListScalarExprPair 
-              _x1Ocat :: Catalog
-              _x1Oidenv :: IDEnv
-              _x1Olib :: LocalBindings
-              _x2Ocat :: Catalog
-              _x2Oidenv :: IDEnv
-              _x2Olib :: LocalBindings
-              _x1IannotatedTree :: ScalarExprList 
-              _x1IfixedUpIdentifiersTree :: ScalarExprList 
-              _x1IoriginalTree :: ScalarExprList 
-              _x1IuType :: ([Maybe Type])
-              _x2IannotatedTree :: ScalarExpr 
-              _x2IfixedUpIdentifiersTree :: ScalarExpr 
-              _x2IoriginalTree :: ScalarExpr 
-              _x2IuType :: (Maybe Type)
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 270, column 13)
-              _lhsOwhenTypes =
-                  _x1IuType
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 271, column 13)
-              _lhsOthenType =
-                  _x2IuType
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 76, column 13)
-              _x1OexpectedTypes =
-                  []
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 77, column 13)
-              _x2OexpectedType =
-                  Nothing
-              -- self rule
-              _annotatedTree =
-                  (_x1IannotatedTree,_x2IannotatedTree)
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  (_x1IfixedUpIdentifiersTree,_x2IfixedUpIdentifiersTree)
-              -- self rule
-              _originalTree =
-                  (_x1IoriginalTree,_x2IoriginalTree)
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _x1Ocat =
-                  _lhsIcat
-              -- copy rule (down)
-              _x1Oidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _x1Olib =
-                  _lhsIlib
-              -- copy rule (down)
-              _x2Ocat =
-                  _lhsIcat
-              -- copy rule (down)
-              _x2Oidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _x2Olib =
-                  _lhsIlib
-              ( _x1IannotatedTree,_x1IfixedUpIdentifiersTree,_x1IoriginalTree,_x1IuType) =
-                  x1_ _x1Ocat _x1OexpectedTypes _x1Oidenv _x1Olib 
-              ( _x2IannotatedTree,_x2IfixedUpIdentifiersTree,_x2IoriginalTree,_x2IuType) =
-                  x2_ _x2Ocat _x2OexpectedType _x2Oidenv _x2Olib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOthenType,_lhsOwhenTypes)))
--- CaseScalarExprListScalarExprPairList ------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-         thenTypes            : [Maybe Type]
-         whenTypes            : [[Maybe Type]]
-   alternatives:
-      alternative Cons:
-         child hd             : CaseScalarExprListScalarExprPair 
-         child tl             : CaseScalarExprListScalarExprPairList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Nil:
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-type CaseScalarExprListScalarExprPairList  = [CaseScalarExprListScalarExprPair ]
--- cata
-sem_CaseScalarExprListScalarExprPairList :: CaseScalarExprListScalarExprPairList  ->
-                                            T_CaseScalarExprListScalarExprPairList 
-sem_CaseScalarExprListScalarExprPairList list  =
-    (Prelude.foldr sem_CaseScalarExprListScalarExprPairList_Cons sem_CaseScalarExprListScalarExprPairList_Nil (Prelude.map sem_CaseScalarExprListScalarExprPair list) )
--- semantic domain
-type T_CaseScalarExprListScalarExprPairList  = Catalog ->
-                                               IDEnv ->
-                                               LocalBindings ->
-                                               ( CaseScalarExprListScalarExprPairList ,CaseScalarExprListScalarExprPairList ,CaseScalarExprListScalarExprPairList ,([Maybe Type]),([[Maybe Type]]))
-data Inh_CaseScalarExprListScalarExprPairList  = Inh_CaseScalarExprListScalarExprPairList {cat_Inh_CaseScalarExprListScalarExprPairList :: Catalog,idenv_Inh_CaseScalarExprListScalarExprPairList :: IDEnv,lib_Inh_CaseScalarExprListScalarExprPairList :: LocalBindings}
-data Syn_CaseScalarExprListScalarExprPairList  = Syn_CaseScalarExprListScalarExprPairList {annotatedTree_Syn_CaseScalarExprListScalarExprPairList :: CaseScalarExprListScalarExprPairList ,fixedUpIdentifiersTree_Syn_CaseScalarExprListScalarExprPairList :: CaseScalarExprListScalarExprPairList ,originalTree_Syn_CaseScalarExprListScalarExprPairList :: CaseScalarExprListScalarExprPairList ,thenTypes_Syn_CaseScalarExprListScalarExprPairList :: ([Maybe Type]),whenTypes_Syn_CaseScalarExprListScalarExprPairList :: ([[Maybe Type]])}
-wrap_CaseScalarExprListScalarExprPairList :: T_CaseScalarExprListScalarExprPairList  ->
-                                             Inh_CaseScalarExprListScalarExprPairList  ->
-                                             Syn_CaseScalarExprListScalarExprPairList 
-wrap_CaseScalarExprListScalarExprPairList sem (Inh_CaseScalarExprListScalarExprPairList _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOthenTypes,_lhsOwhenTypes) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_CaseScalarExprListScalarExprPairList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree _lhsOthenTypes _lhsOwhenTypes ))
-sem_CaseScalarExprListScalarExprPairList_Cons :: T_CaseScalarExprListScalarExprPair  ->
-                                                 T_CaseScalarExprListScalarExprPairList  ->
-                                                 T_CaseScalarExprListScalarExprPairList 
-sem_CaseScalarExprListScalarExprPairList_Cons hd_ tl_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOwhenTypes :: ([[Maybe Type]])
-              _lhsOthenTypes :: ([Maybe Type])
-              _lhsOannotatedTree :: CaseScalarExprListScalarExprPairList 
-              _lhsOfixedUpIdentifiersTree :: CaseScalarExprListScalarExprPairList 
-              _lhsOoriginalTree :: CaseScalarExprListScalarExprPairList 
-              _hdOcat :: Catalog
-              _hdOidenv :: IDEnv
-              _hdOlib :: LocalBindings
-              _tlOcat :: Catalog
-              _tlOidenv :: IDEnv
-              _tlOlib :: LocalBindings
-              _hdIannotatedTree :: CaseScalarExprListScalarExprPair 
-              _hdIfixedUpIdentifiersTree :: CaseScalarExprListScalarExprPair 
-              _hdIoriginalTree :: CaseScalarExprListScalarExprPair 
-              _hdIthenType :: (Maybe Type)
-              _hdIwhenTypes :: ([Maybe Type])
-              _tlIannotatedTree :: CaseScalarExprListScalarExprPairList 
-              _tlIfixedUpIdentifiersTree :: CaseScalarExprListScalarExprPairList 
-              _tlIoriginalTree :: CaseScalarExprListScalarExprPairList 
-              _tlIthenTypes :: ([Maybe Type])
-              _tlIwhenTypes :: ([[Maybe Type]])
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 261, column 10)
-              _lhsOwhenTypes =
-                  _hdIwhenTypes : _tlIwhenTypes
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 262, column 10)
-              _lhsOthenTypes =
-                  _hdIthenType : _tlIthenTypes
-              -- self rule
-              _annotatedTree =
-                  (:) _hdIannotatedTree _tlIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  (:) _hdIoriginalTree _tlIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _hdOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _hdOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _hdOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _tlOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _tlOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _tlOlib =
-                  _lhsIlib
-              ( _hdIannotatedTree,_hdIfixedUpIdentifiersTree,_hdIoriginalTree,_hdIthenType,_hdIwhenTypes) =
-                  hd_ _hdOcat _hdOidenv _hdOlib 
-              ( _tlIannotatedTree,_tlIfixedUpIdentifiersTree,_tlIoriginalTree,_tlIthenTypes,_tlIwhenTypes) =
-                  tl_ _tlOcat _tlOidenv _tlOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOthenTypes,_lhsOwhenTypes)))
-sem_CaseScalarExprListScalarExprPairList_Nil :: T_CaseScalarExprListScalarExprPairList 
-sem_CaseScalarExprListScalarExprPairList_Nil  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOwhenTypes :: ([[Maybe Type]])
-              _lhsOthenTypes :: ([Maybe Type])
-              _lhsOannotatedTree :: CaseScalarExprListScalarExprPairList 
-              _lhsOfixedUpIdentifiersTree :: CaseScalarExprListScalarExprPairList 
-              _lhsOoriginalTree :: CaseScalarExprListScalarExprPairList 
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 263, column 9)
-              _lhsOwhenTypes =
-                  []
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 264, column 9)
-              _lhsOthenTypes =
-                  []
-              -- self rule
-              _annotatedTree =
-                  []
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  []
-              -- self rule
-              _originalTree =
-                  []
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOthenTypes,_lhsOwhenTypes)))
--- Constraint --------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-   alternatives:
-      alternative CheckConstraint:
-         child ann            : {Annotation}
-         child name           : {String}
-         child expr           : ScalarExpr 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative PrimaryKeyConstraint:
-         child ann            : {Annotation}
-         child name           : {String}
-         child x              : {[String]}
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative ReferenceConstraint:
-         child ann            : {Annotation}
-         child name           : {String}
-         child atts           : {[String]}
-         child table          : {String}
-         child tableAtts      : {[String]}
-         child onUpdate       : {Cascade}
-         child onDelete       : {Cascade}
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative UniqueConstraint:
-         child ann            : {Annotation}
-         child name           : {String}
-         child x              : {[String]}
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-data Constraint  = CheckConstraint (Annotation) (String) (ScalarExpr ) 
-                 | PrimaryKeyConstraint (Annotation) (String) (([String])) 
-                 | ReferenceConstraint (Annotation) (String) (([String])) (String) (([String])) (Cascade) (Cascade) 
-                 | UniqueConstraint (Annotation) (String) (([String])) 
-                 deriving ( Data,Eq,Show,Typeable)
--- cata
-sem_Constraint :: Constraint  ->
-                  T_Constraint 
-sem_Constraint (CheckConstraint _ann _name _expr )  =
-    (sem_Constraint_CheckConstraint _ann _name (sem_ScalarExpr _expr ) )
-sem_Constraint (PrimaryKeyConstraint _ann _name _x )  =
-    (sem_Constraint_PrimaryKeyConstraint _ann _name _x )
-sem_Constraint (ReferenceConstraint _ann _name _atts _table _tableAtts _onUpdate _onDelete )  =
-    (sem_Constraint_ReferenceConstraint _ann _name _atts _table _tableAtts _onUpdate _onDelete )
-sem_Constraint (UniqueConstraint _ann _name _x )  =
-    (sem_Constraint_UniqueConstraint _ann _name _x )
--- semantic domain
-type T_Constraint  = Catalog ->
-                     IDEnv ->
-                     LocalBindings ->
-                     ( Constraint ,Constraint ,Constraint )
-data Inh_Constraint  = Inh_Constraint {cat_Inh_Constraint :: Catalog,idenv_Inh_Constraint :: IDEnv,lib_Inh_Constraint :: LocalBindings}
-data Syn_Constraint  = Syn_Constraint {annotatedTree_Syn_Constraint :: Constraint ,fixedUpIdentifiersTree_Syn_Constraint :: Constraint ,originalTree_Syn_Constraint :: Constraint }
-wrap_Constraint :: T_Constraint  ->
-                   Inh_Constraint  ->
-                   Syn_Constraint 
-wrap_Constraint sem (Inh_Constraint _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_Constraint _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
-sem_Constraint_CheckConstraint :: Annotation ->
-                                  String ->
-                                  T_ScalarExpr  ->
-                                  T_Constraint 
-sem_Constraint_CheckConstraint ann_ name_ expr_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _exprOexpectedType :: (Maybe Type)
-              _lhsOannotatedTree :: Constraint 
-              _lhsOfixedUpIdentifiersTree :: Constraint 
-              _lhsOoriginalTree :: Constraint 
-              _exprOcat :: Catalog
-              _exprOidenv :: IDEnv
-              _exprOlib :: LocalBindings
-              _exprIannotatedTree :: ScalarExpr 
-              _exprIfixedUpIdentifiersTree :: ScalarExpr 
-              _exprIoriginalTree :: ScalarExpr 
-              _exprIuType :: (Maybe Type)
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 80, column 23)
-              _exprOexpectedType =
-                  Nothing
-              -- self rule
-              _annotatedTree =
-                  CheckConstraint ann_ name_ _exprIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  CheckConstraint ann_ name_ _exprIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  CheckConstraint ann_ name_ _exprIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _exprOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _exprOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _exprOlib =
-                  _lhsIlib
-              ( _exprIannotatedTree,_exprIfixedUpIdentifiersTree,_exprIoriginalTree,_exprIuType) =
-                  expr_ _exprOcat _exprOexpectedType _exprOidenv _exprOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
-sem_Constraint_PrimaryKeyConstraint :: Annotation ->
-                                       String ->
-                                       ([String]) ->
-                                       T_Constraint 
-sem_Constraint_PrimaryKeyConstraint ann_ name_ x_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: Constraint 
-              _lhsOfixedUpIdentifiersTree :: Constraint 
-              _lhsOoriginalTree :: Constraint 
-              -- self rule
-              _annotatedTree =
-                  PrimaryKeyConstraint ann_ name_ x_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  PrimaryKeyConstraint ann_ name_ x_
-              -- self rule
-              _originalTree =
-                  PrimaryKeyConstraint ann_ name_ x_
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
-sem_Constraint_ReferenceConstraint :: Annotation ->
-                                      String ->
-                                      ([String]) ->
-                                      String ->
-                                      ([String]) ->
-                                      Cascade ->
-                                      Cascade ->
-                                      T_Constraint 
-sem_Constraint_ReferenceConstraint ann_ name_ atts_ table_ tableAtts_ onUpdate_ onDelete_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: Constraint 
-              _lhsOfixedUpIdentifiersTree :: Constraint 
-              _lhsOoriginalTree :: Constraint 
-              -- self rule
-              _annotatedTree =
-                  ReferenceConstraint ann_ name_ atts_ table_ tableAtts_ onUpdate_ onDelete_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  ReferenceConstraint ann_ name_ atts_ table_ tableAtts_ onUpdate_ onDelete_
-              -- self rule
-              _originalTree =
-                  ReferenceConstraint ann_ name_ atts_ table_ tableAtts_ onUpdate_ onDelete_
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
-sem_Constraint_UniqueConstraint :: Annotation ->
-                                   String ->
-                                   ([String]) ->
-                                   T_Constraint 
-sem_Constraint_UniqueConstraint ann_ name_ x_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: Constraint 
-              _lhsOfixedUpIdentifiersTree :: Constraint 
-              _lhsOoriginalTree :: Constraint 
-              -- self rule
-              _annotatedTree =
-                  UniqueConstraint ann_ name_ x_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  UniqueConstraint ann_ name_ x_
-              -- self rule
-              _originalTree =
-                  UniqueConstraint ann_ name_ x_
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
--- ConstraintList ----------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-   alternatives:
-      alternative Cons:
-         child hd             : Constraint 
-         child tl             : ConstraintList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Nil:
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-type ConstraintList  = [Constraint ]
--- cata
-sem_ConstraintList :: ConstraintList  ->
-                      T_ConstraintList 
-sem_ConstraintList list  =
-    (Prelude.foldr sem_ConstraintList_Cons sem_ConstraintList_Nil (Prelude.map sem_Constraint list) )
--- semantic domain
-type T_ConstraintList  = Catalog ->
-                         IDEnv ->
-                         LocalBindings ->
-                         ( ConstraintList ,ConstraintList ,ConstraintList )
-data Inh_ConstraintList  = Inh_ConstraintList {cat_Inh_ConstraintList :: Catalog,idenv_Inh_ConstraintList :: IDEnv,lib_Inh_ConstraintList :: LocalBindings}
-data Syn_ConstraintList  = Syn_ConstraintList {annotatedTree_Syn_ConstraintList :: ConstraintList ,fixedUpIdentifiersTree_Syn_ConstraintList :: ConstraintList ,originalTree_Syn_ConstraintList :: ConstraintList }
-wrap_ConstraintList :: T_ConstraintList  ->
-                       Inh_ConstraintList  ->
-                       Syn_ConstraintList 
-wrap_ConstraintList sem (Inh_ConstraintList _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_ConstraintList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
-sem_ConstraintList_Cons :: T_Constraint  ->
-                           T_ConstraintList  ->
-                           T_ConstraintList 
-sem_ConstraintList_Cons hd_ tl_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: ConstraintList 
-              _lhsOfixedUpIdentifiersTree :: ConstraintList 
-              _lhsOoriginalTree :: ConstraintList 
-              _hdOcat :: Catalog
-              _hdOidenv :: IDEnv
-              _hdOlib :: LocalBindings
-              _tlOcat :: Catalog
-              _tlOidenv :: IDEnv
-              _tlOlib :: LocalBindings
-              _hdIannotatedTree :: Constraint 
-              _hdIfixedUpIdentifiersTree :: Constraint 
-              _hdIoriginalTree :: Constraint 
-              _tlIannotatedTree :: ConstraintList 
-              _tlIfixedUpIdentifiersTree :: ConstraintList 
-              _tlIoriginalTree :: ConstraintList 
-              -- self rule
-              _annotatedTree =
-                  (:) _hdIannotatedTree _tlIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  (:) _hdIoriginalTree _tlIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _hdOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _hdOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _hdOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _tlOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _tlOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _tlOlib =
-                  _lhsIlib
-              ( _hdIannotatedTree,_hdIfixedUpIdentifiersTree,_hdIoriginalTree) =
-                  hd_ _hdOcat _hdOidenv _hdOlib 
-              ( _tlIannotatedTree,_tlIfixedUpIdentifiersTree,_tlIoriginalTree) =
-                  tl_ _tlOcat _tlOidenv _tlOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
-sem_ConstraintList_Nil :: T_ConstraintList 
-sem_ConstraintList_Nil  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: ConstraintList 
-              _lhsOfixedUpIdentifiersTree :: ConstraintList 
-              _lhsOoriginalTree :: ConstraintList 
-              -- self rule
-              _annotatedTree =
-                  []
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  []
-              -- self rule
-              _originalTree =
-                  []
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
--- FnBody ------------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-   alternatives:
-      alternative PlpgsqlFnBody:
-         child ann            : {Annotation}
-         child blk            : Statement 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative SqlFnBody:
-         child ann            : {Annotation}
-         child sts            : StatementList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-data FnBody  = PlpgsqlFnBody (Annotation) (Statement ) 
-             | SqlFnBody (Annotation) (StatementList ) 
-             deriving ( Data,Eq,Show,Typeable)
--- cata
-sem_FnBody :: FnBody  ->
-              T_FnBody 
-sem_FnBody (PlpgsqlFnBody _ann _blk )  =
-    (sem_FnBody_PlpgsqlFnBody _ann (sem_Statement _blk ) )
-sem_FnBody (SqlFnBody _ann _sts )  =
-    (sem_FnBody_SqlFnBody _ann (sem_StatementList _sts ) )
--- semantic domain
-type T_FnBody  = Catalog ->
-                 IDEnv ->
-                 LocalBindings ->
-                 ( FnBody ,FnBody ,FnBody )
-data Inh_FnBody  = Inh_FnBody {cat_Inh_FnBody :: Catalog,idenv_Inh_FnBody :: IDEnv,lib_Inh_FnBody :: LocalBindings}
-data Syn_FnBody  = Syn_FnBody {annotatedTree_Syn_FnBody :: FnBody ,fixedUpIdentifiersTree_Syn_FnBody :: FnBody ,originalTree_Syn_FnBody :: FnBody }
-wrap_FnBody :: T_FnBody  ->
-               Inh_FnBody  ->
-               Syn_FnBody 
-wrap_FnBody sem (Inh_FnBody _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_FnBody _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
-sem_FnBody_PlpgsqlFnBody :: Annotation ->
-                            T_Statement  ->
-                            T_FnBody 
-sem_FnBody_PlpgsqlFnBody ann_ blk_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _blkOinProducedCat :: Catalog
-              _lhsOannotatedTree :: FnBody 
-              _lhsOfixedUpIdentifiersTree :: FnBody 
-              _lhsOoriginalTree :: FnBody 
-              _blkOcat :: Catalog
-              _blkOidenv :: IDEnv
-              _blkOlib :: LocalBindings
-              _blkIannotatedTree :: Statement 
-              _blkIcatUpdates :: ([CatalogUpdate])
-              _blkIfixedUpIdentifiersTree :: Statement 
-              _blkIlibUpdates :: ([LocalBindingsUpdate])
-              _blkIoriginalTree :: Statement 
-              -- "./TypeChecking/Statements.ag"(line 104, column 9)
-              _blkOinProducedCat =
-                  emptyCatalog
-              -- self rule
-              _annotatedTree =
-                  PlpgsqlFnBody ann_ _blkIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  PlpgsqlFnBody ann_ _blkIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  PlpgsqlFnBody ann_ _blkIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _blkOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _blkOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _blkOlib =
-                  _lhsIlib
-              ( _blkIannotatedTree,_blkIcatUpdates,_blkIfixedUpIdentifiersTree,_blkIlibUpdates,_blkIoriginalTree) =
-                  blk_ _blkOcat _blkOidenv _blkOinProducedCat _blkOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
-sem_FnBody_SqlFnBody :: Annotation ->
-                        T_StatementList  ->
-                        T_FnBody 
-sem_FnBody_SqlFnBody ann_ sts_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _stsOcatUpdates :: ([CatalogUpdate])
-              _stsOlibUpdates :: ([LocalBindingsUpdate])
-              _lhsOannotatedTree :: FnBody 
-              _lhsOfixedUpIdentifiersTree :: FnBody 
-              _lhsOoriginalTree :: FnBody 
-              _stsOcat :: Catalog
-              _stsOidenv :: IDEnv
-              _stsOlib :: LocalBindings
-              _stsIannotatedTree :: StatementList 
-              _stsIfixedUpIdentifiersTree :: StatementList 
-              _stsIoriginalTree :: StatementList 
-              _stsIproducedCat :: Catalog
-              _stsIproducedLib :: LocalBindings
-              -- "./TypeChecking/Statements.ag"(line 129, column 9)
-              _stsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 130, column 9)
-              _stsOlibUpdates =
-                  []
-              -- self rule
-              _annotatedTree =
-                  SqlFnBody ann_ _stsIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  SqlFnBody ann_ _stsIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  SqlFnBody ann_ _stsIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _stsOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _stsOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _stsOlib =
-                  _lhsIlib
-              ( _stsIannotatedTree,_stsIfixedUpIdentifiersTree,_stsIoriginalTree,_stsIproducedCat,_stsIproducedLib) =
-                  sts_ _stsOcat _stsOcatUpdates _stsOidenv _stsOlib _stsOlibUpdates 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
--- InList ------------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         expectedType         : Maybe Type
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         listType             : Either [TypeError] Type
-         originalTree         : SELF 
-   alternatives:
-      alternative InList:
-         child ann            : {Annotation}
-         child exprs          : ScalarExprList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative InQueryExpr:
-         child ann            : {Annotation}
-         child sel            : QueryExpr 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-data InList  = InList (Annotation) (ScalarExprList ) 
-             | InQueryExpr (Annotation) (QueryExpr ) 
-             deriving ( Data,Eq,Show,Typeable)
--- cata
-sem_InList :: InList  ->
-              T_InList 
-sem_InList (InList _ann _exprs )  =
-    (sem_InList_InList _ann (sem_ScalarExprList _exprs ) )
-sem_InList (InQueryExpr _ann _sel )  =
-    (sem_InList_InQueryExpr _ann (sem_QueryExpr _sel ) )
--- semantic domain
-type T_InList  = Catalog ->
-                 (Maybe Type) ->
-                 IDEnv ->
-                 LocalBindings ->
-                 ( InList ,InList ,(Either [TypeError] Type),InList )
-data Inh_InList  = Inh_InList {cat_Inh_InList :: Catalog,expectedType_Inh_InList :: (Maybe Type),idenv_Inh_InList :: IDEnv,lib_Inh_InList :: LocalBindings}
-data Syn_InList  = Syn_InList {annotatedTree_Syn_InList :: InList ,fixedUpIdentifiersTree_Syn_InList :: InList ,listType_Syn_InList :: (Either [TypeError] Type),originalTree_Syn_InList :: InList }
-wrap_InList :: T_InList  ->
-               Inh_InList  ->
-               Syn_InList 
-wrap_InList sem (Inh_InList _lhsIcat _lhsIexpectedType _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlistType,_lhsOoriginalTree) = sem _lhsIcat _lhsIexpectedType _lhsIidenv _lhsIlib 
-     in  (Syn_InList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOlistType _lhsOoriginalTree ))
-sem_InList_InList :: Annotation ->
-                     T_ScalarExprList  ->
-                     T_InList 
-sem_InList_InList ann_ exprs_  =
-    (\ _lhsIcat
-       _lhsIexpectedType
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOlistType :: (Either [TypeError] Type)
-              _exprsOexpectedTypes :: ([Maybe Type])
-              _lhsOannotatedTree :: InList 
-              _lhsOfixedUpIdentifiersTree :: InList 
-              _lhsOoriginalTree :: InList 
-              _exprsOcat :: Catalog
-              _exprsOidenv :: IDEnv
-              _exprsOlib :: LocalBindings
-              _exprsIannotatedTree :: ScalarExprList 
-              _exprsIfixedUpIdentifiersTree :: ScalarExprList 
-              _exprsIoriginalTree :: ScalarExprList 
-              _exprsIuType :: ([Maybe Type])
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 409, column 9)
-              _lhsOlistType =
-                  mapM lmt _exprsIuType >>= resolveResultSetType _lhsIcat
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 410, column 9)
-              _exprsOexpectedTypes =
-                  repeat _lhsIexpectedType
-              -- self rule
-              _annotatedTree =
-                  InList ann_ _exprsIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  InList ann_ _exprsIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  InList ann_ _exprsIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _exprsOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _exprsOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _exprsOlib =
-                  _lhsIlib
-              ( _exprsIannotatedTree,_exprsIfixedUpIdentifiersTree,_exprsIoriginalTree,_exprsIuType) =
-                  exprs_ _exprsOcat _exprsOexpectedTypes _exprsOidenv _exprsOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlistType,_lhsOoriginalTree)))
-sem_InList_InQueryExpr :: Annotation ->
-                          T_QueryExpr  ->
-                          T_InList 
-sem_InList_InQueryExpr ann_ sel_  =
-    (\ _lhsIcat
-       _lhsIexpectedType
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOlistType :: (Either [TypeError] Type)
-              _selOcsql :: LocalBindings
-              _selOexpectedTypes :: ([Maybe Type])
-              _lhsOannotatedTree :: InList 
-              _lhsOfixedUpIdentifiersTree :: InList 
-              _lhsOoriginalTree :: InList 
-              _selOcat :: Catalog
-              _selOidenv :: IDEnv
-              _selOlib :: LocalBindings
-              _selIannotatedTree :: QueryExpr 
-              _selIcidenv :: IDEnv
-              _selIfixedUpIdentifiersTree :: QueryExpr 
-              _selIlibUpdates :: ([LocalBindingsUpdate])
-              _selIoriginalTree :: QueryExpr 
-              _selIuType :: (Maybe [(String,Type)])
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 413, column 9)
-              _lhsOlistType =
-                  do
-                  st <- lmt (map snd <$> _selIuType)
-                  case length st of
-                            0 -> Left [InternalError
-                                       "got subquery with no columns? in inselect"]
-                            1 -> Right $ head st
-                            _ -> Right $ AnonymousRecordType st
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 120, column 19)
-              _selOcsql =
-                  emptyBindings
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 173, column 19)
-              _selOexpectedTypes =
-                  []
-              -- self rule
-              _annotatedTree =
-                  InQueryExpr ann_ _selIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  InQueryExpr ann_ _selIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  InQueryExpr ann_ _selIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _selOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _selOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _selOlib =
-                  _lhsIlib
-              ( _selIannotatedTree,_selIcidenv,_selIfixedUpIdentifiersTree,_selIlibUpdates,_selIoriginalTree,_selIuType) =
-                  sel_ _selOcat _selOcsql _selOexpectedTypes _selOidenv _selOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlistType,_lhsOoriginalTree)))
--- JoinExpr ----------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-   alternatives:
-      alternative JoinOn:
-         child ann            : {Annotation}
-         child expr           : ScalarExpr 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative JoinUsing:
-         child ann            : {Annotation}
-         child x              : {[String]}
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-data JoinExpr  = JoinOn (Annotation) (ScalarExpr ) 
-               | JoinUsing (Annotation) (([String])) 
-               deriving ( Data,Eq,Show,Typeable)
--- cata
-sem_JoinExpr :: JoinExpr  ->
-                T_JoinExpr 
-sem_JoinExpr (JoinOn _ann _expr )  =
-    (sem_JoinExpr_JoinOn _ann (sem_ScalarExpr _expr ) )
-sem_JoinExpr (JoinUsing _ann _x )  =
-    (sem_JoinExpr_JoinUsing _ann _x )
--- semantic domain
-type T_JoinExpr  = Catalog ->
-                   IDEnv ->
-                   LocalBindings ->
-                   ( JoinExpr ,JoinExpr ,JoinExpr )
-data Inh_JoinExpr  = Inh_JoinExpr {cat_Inh_JoinExpr :: Catalog,idenv_Inh_JoinExpr :: IDEnv,lib_Inh_JoinExpr :: LocalBindings}
-data Syn_JoinExpr  = Syn_JoinExpr {annotatedTree_Syn_JoinExpr :: JoinExpr ,fixedUpIdentifiersTree_Syn_JoinExpr :: JoinExpr ,originalTree_Syn_JoinExpr :: JoinExpr }
-wrap_JoinExpr :: T_JoinExpr  ->
-                 Inh_JoinExpr  ->
-                 Syn_JoinExpr 
-wrap_JoinExpr sem (Inh_JoinExpr _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_JoinExpr _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
-sem_JoinExpr_JoinOn :: Annotation ->
-                       T_ScalarExpr  ->
-                       T_JoinExpr 
-sem_JoinExpr_JoinOn ann_ expr_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _exprOexpectedType :: (Maybe Type)
-              _lhsOannotatedTree :: JoinExpr 
-              _lhsOfixedUpIdentifiersTree :: JoinExpr 
-              _lhsOoriginalTree :: JoinExpr 
-              _exprOcat :: Catalog
-              _exprOidenv :: IDEnv
-              _exprOlib :: LocalBindings
-              _exprIannotatedTree :: ScalarExpr 
-              _exprIfixedUpIdentifiersTree :: ScalarExpr 
-              _exprIoriginalTree :: ScalarExpr 
-              _exprIuType :: (Maybe Type)
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 94, column 14)
-              _exprOexpectedType =
-                  Just typeBool
-              -- self rule
-              _annotatedTree =
-                  JoinOn ann_ _exprIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  JoinOn ann_ _exprIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  JoinOn ann_ _exprIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _exprOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _exprOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _exprOlib =
-                  _lhsIlib
-              ( _exprIannotatedTree,_exprIfixedUpIdentifiersTree,_exprIoriginalTree,_exprIuType) =
-                  expr_ _exprOcat _exprOexpectedType _exprOidenv _exprOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
-sem_JoinExpr_JoinUsing :: Annotation ->
-                          ([String]) ->
-                          T_JoinExpr 
-sem_JoinExpr_JoinUsing ann_ x_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: JoinExpr 
-              _lhsOfixedUpIdentifiersTree :: JoinExpr 
-              _lhsOoriginalTree :: JoinExpr 
-              -- self rule
-              _annotatedTree =
-                  JoinUsing ann_ x_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  JoinUsing ann_ x_
-              -- self rule
-              _originalTree =
-                  JoinUsing ann_ x_
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
--- MaybeBoolExpr -----------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-   alternatives:
-      alternative Just:
-         child just           : ScalarExpr 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Nothing:
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-type MaybeBoolExpr  = Maybe ScalarExpr 
--- cata
-sem_MaybeBoolExpr :: MaybeBoolExpr  ->
-                     T_MaybeBoolExpr 
-sem_MaybeBoolExpr (Prelude.Just x )  =
-    (sem_MaybeBoolExpr_Just (sem_ScalarExpr x ) )
-sem_MaybeBoolExpr Prelude.Nothing  =
-    sem_MaybeBoolExpr_Nothing
--- semantic domain
-type T_MaybeBoolExpr  = Catalog ->
-                        IDEnv ->
-                        LocalBindings ->
-                        ( MaybeBoolExpr ,MaybeBoolExpr ,MaybeBoolExpr )
-data Inh_MaybeBoolExpr  = Inh_MaybeBoolExpr {cat_Inh_MaybeBoolExpr :: Catalog,idenv_Inh_MaybeBoolExpr :: IDEnv,lib_Inh_MaybeBoolExpr :: LocalBindings}
-data Syn_MaybeBoolExpr  = Syn_MaybeBoolExpr {annotatedTree_Syn_MaybeBoolExpr :: MaybeBoolExpr ,fixedUpIdentifiersTree_Syn_MaybeBoolExpr :: MaybeBoolExpr ,originalTree_Syn_MaybeBoolExpr :: MaybeBoolExpr }
-wrap_MaybeBoolExpr :: T_MaybeBoolExpr  ->
-                      Inh_MaybeBoolExpr  ->
-                      Syn_MaybeBoolExpr 
-wrap_MaybeBoolExpr sem (Inh_MaybeBoolExpr _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_MaybeBoolExpr _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
-sem_MaybeBoolExpr_Just :: T_ScalarExpr  ->
-                          T_MaybeBoolExpr 
-sem_MaybeBoolExpr_Just just_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: MaybeBoolExpr 
-              _justOexpectedType :: (Maybe Type)
-              _lhsOfixedUpIdentifiersTree :: MaybeBoolExpr 
-              _lhsOoriginalTree :: MaybeBoolExpr 
-              _justOcat :: Catalog
-              _justOidenv :: IDEnv
-              _justOlib :: LocalBindings
-              _justIannotatedTree :: ScalarExpr 
-              _justIfixedUpIdentifiersTree :: ScalarExpr 
-              _justIoriginalTree :: ScalarExpr 
-              _justIuType :: (Maybe Type)
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 132, column 9)
-              _lhsOannotatedTree =
-                  let t = _justIuType
-                  in if t `elem` [Nothing,Just typeBool]
-                     then Just _justIannotatedTree
-                     else Just $ addTypeErrors [ExpressionMustBeBool] _justIannotatedTree
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 97, column 12)
-              _justOexpectedType =
-                  Just typeBool
-              -- self rule
-              _annotatedTree =
-                  Just _justIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Just _justIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  Just _justIoriginalTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _justOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _justOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _justOlib =
-                  _lhsIlib
-              ( _justIannotatedTree,_justIfixedUpIdentifiersTree,_justIoriginalTree,_justIuType) =
-                  just_ _justOcat _justOexpectedType _justOidenv _justOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
-sem_MaybeBoolExpr_Nothing :: T_MaybeBoolExpr 
-sem_MaybeBoolExpr_Nothing  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: MaybeBoolExpr 
-              _lhsOfixedUpIdentifiersTree :: MaybeBoolExpr 
-              _lhsOoriginalTree :: MaybeBoolExpr 
-              -- self rule
-              _annotatedTree =
-                  Nothing
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Nothing
-              -- self rule
-              _originalTree =
-                  Nothing
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
--- MaybeScalarExpr ---------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-         uType                : Maybe Type
-   alternatives:
-      alternative Just:
-         child just           : ScalarExpr 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Nothing:
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-type MaybeScalarExpr  = Maybe ScalarExpr 
--- cata
-sem_MaybeScalarExpr :: MaybeScalarExpr  ->
-                       T_MaybeScalarExpr 
-sem_MaybeScalarExpr (Prelude.Just x )  =
-    (sem_MaybeScalarExpr_Just (sem_ScalarExpr x ) )
-sem_MaybeScalarExpr Prelude.Nothing  =
-    sem_MaybeScalarExpr_Nothing
--- semantic domain
-type T_MaybeScalarExpr  = Catalog ->
-                          IDEnv ->
-                          LocalBindings ->
-                          ( MaybeScalarExpr ,MaybeScalarExpr ,MaybeScalarExpr ,(Maybe Type))
-data Inh_MaybeScalarExpr  = Inh_MaybeScalarExpr {cat_Inh_MaybeScalarExpr :: Catalog,idenv_Inh_MaybeScalarExpr :: IDEnv,lib_Inh_MaybeScalarExpr :: LocalBindings}
-data Syn_MaybeScalarExpr  = Syn_MaybeScalarExpr {annotatedTree_Syn_MaybeScalarExpr :: MaybeScalarExpr ,fixedUpIdentifiersTree_Syn_MaybeScalarExpr :: MaybeScalarExpr ,originalTree_Syn_MaybeScalarExpr :: MaybeScalarExpr ,uType_Syn_MaybeScalarExpr :: (Maybe Type)}
-wrap_MaybeScalarExpr :: T_MaybeScalarExpr  ->
-                        Inh_MaybeScalarExpr  ->
-                        Syn_MaybeScalarExpr 
-wrap_MaybeScalarExpr sem (Inh_MaybeScalarExpr _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_MaybeScalarExpr _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree _lhsOuType ))
-sem_MaybeScalarExpr_Just :: T_ScalarExpr  ->
-                            T_MaybeScalarExpr 
-sem_MaybeScalarExpr_Just just_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOuType :: (Maybe Type)
-              _justOexpectedType :: (Maybe Type)
-              _lhsOannotatedTree :: MaybeScalarExpr 
-              _lhsOfixedUpIdentifiersTree :: MaybeScalarExpr 
-              _lhsOoriginalTree :: MaybeScalarExpr 
-              _justOcat :: Catalog
-              _justOidenv :: IDEnv
-              _justOlib :: LocalBindings
-              _justIannotatedTree :: ScalarExpr 
-              _justIfixedUpIdentifiersTree :: ScalarExpr 
-              _justIoriginalTree :: ScalarExpr 
-              _justIuType :: (Maybe Type)
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 124, column 12)
-              _lhsOuType =
-                  _justIuType
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 100, column 12)
-              _justOexpectedType =
-                  Nothing
-              -- self rule
-              _annotatedTree =
-                  Just _justIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Just _justIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  Just _justIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _justOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _justOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _justOlib =
-                  _lhsIlib
-              ( _justIannotatedTree,_justIfixedUpIdentifiersTree,_justIoriginalTree,_justIuType) =
-                  just_ _justOcat _justOexpectedType _justOidenv _justOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
-sem_MaybeScalarExpr_Nothing :: T_MaybeScalarExpr 
-sem_MaybeScalarExpr_Nothing  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOuType :: (Maybe Type)
-              _lhsOannotatedTree :: MaybeScalarExpr 
-              _lhsOfixedUpIdentifiersTree :: MaybeScalarExpr 
-              _lhsOoriginalTree :: MaybeScalarExpr 
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 125, column 15)
-              _lhsOuType =
-                  Nothing
-              -- self rule
-              _annotatedTree =
-                  Nothing
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Nothing
-              -- self rule
-              _originalTree =
-                  Nothing
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
--- MaybeSelectList ---------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         listType             : [(String,Maybe Type)]
-         originalTree         : SELF 
-   alternatives:
-      alternative Just:
-         child just           : SelectList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Nothing:
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-type MaybeSelectList  = Maybe SelectList 
--- cata
-sem_MaybeSelectList :: MaybeSelectList  ->
-                       T_MaybeSelectList 
-sem_MaybeSelectList (Prelude.Just x )  =
-    (sem_MaybeSelectList_Just (sem_SelectList x ) )
-sem_MaybeSelectList Prelude.Nothing  =
-    sem_MaybeSelectList_Nothing
--- semantic domain
-type T_MaybeSelectList  = Catalog ->
-                          IDEnv ->
-                          LocalBindings ->
-                          ( MaybeSelectList ,MaybeSelectList ,([(String,Maybe Type)]),MaybeSelectList )
-data Inh_MaybeSelectList  = Inh_MaybeSelectList {cat_Inh_MaybeSelectList :: Catalog,idenv_Inh_MaybeSelectList :: IDEnv,lib_Inh_MaybeSelectList :: LocalBindings}
-data Syn_MaybeSelectList  = Syn_MaybeSelectList {annotatedTree_Syn_MaybeSelectList :: MaybeSelectList ,fixedUpIdentifiersTree_Syn_MaybeSelectList :: MaybeSelectList ,listType_Syn_MaybeSelectList :: ([(String,Maybe Type)]),originalTree_Syn_MaybeSelectList :: MaybeSelectList }
-wrap_MaybeSelectList :: T_MaybeSelectList  ->
-                        Inh_MaybeSelectList  ->
-                        Syn_MaybeSelectList 
-wrap_MaybeSelectList sem (Inh_MaybeSelectList _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlistType,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_MaybeSelectList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOlistType _lhsOoriginalTree ))
-sem_MaybeSelectList_Just :: T_SelectList  ->
-                            T_MaybeSelectList 
-sem_MaybeSelectList_Just just_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOlistType :: ([(String,Maybe Type)])
-              _lhsOannotatedTree :: MaybeSelectList 
-              _lhsOfixedUpIdentifiersTree :: MaybeSelectList 
-              _lhsOoriginalTree :: MaybeSelectList 
-              _justOcat :: Catalog
-              _justOidenv :: IDEnv
-              _justOlib :: LocalBindings
-              _justIannotatedTree :: SelectList 
-              _justIcidenv :: IDEnv
-              _justIfixedUpIdentifiersTree :: SelectList 
-              _justIlibUpdates :: ([LocalBindingsUpdate])
-              _justIlistType :: ([(String,Maybe Type)])
-              _justIoriginalTree :: SelectList 
-              -- "./TypeChecking/QueryExprs/SelectLists.ag"(line 38, column 12)
-              _lhsOlistType =
-                  _justIlistType
-              -- self rule
-              _annotatedTree =
-                  Just _justIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Just _justIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  Just _justIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _justOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _justOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _justOlib =
-                  _lhsIlib
-              ( _justIannotatedTree,_justIcidenv,_justIfixedUpIdentifiersTree,_justIlibUpdates,_justIlistType,_justIoriginalTree) =
-                  just_ _justOcat _justOidenv _justOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlistType,_lhsOoriginalTree)))
-sem_MaybeSelectList_Nothing :: T_MaybeSelectList 
-sem_MaybeSelectList_Nothing  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOlistType :: ([(String,Maybe Type)])
-              _lhsOannotatedTree :: MaybeSelectList 
-              _lhsOfixedUpIdentifiersTree :: MaybeSelectList 
-              _lhsOoriginalTree :: MaybeSelectList 
-              -- "./TypeChecking/QueryExprs/SelectLists.ag"(line 39, column 15)
-              _lhsOlistType =
-                  []
-              -- self rule
-              _annotatedTree =
-                  Nothing
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Nothing
-              -- self rule
-              _originalTree =
-                  Nothing
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlistType,_lhsOoriginalTree)))
--- OnExpr ------------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-   alternatives:
-      alternative Just:
-         child just           : JoinExpr 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Nothing:
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-type OnExpr  = Maybe JoinExpr 
--- cata
-sem_OnExpr :: OnExpr  ->
-              T_OnExpr 
-sem_OnExpr (Prelude.Just x )  =
-    (sem_OnExpr_Just (sem_JoinExpr x ) )
-sem_OnExpr Prelude.Nothing  =
-    sem_OnExpr_Nothing
--- semantic domain
-type T_OnExpr  = Catalog ->
-                 IDEnv ->
-                 LocalBindings ->
-                 ( OnExpr ,OnExpr ,OnExpr )
-data Inh_OnExpr  = Inh_OnExpr {cat_Inh_OnExpr :: Catalog,idenv_Inh_OnExpr :: IDEnv,lib_Inh_OnExpr :: LocalBindings}
-data Syn_OnExpr  = Syn_OnExpr {annotatedTree_Syn_OnExpr :: OnExpr ,fixedUpIdentifiersTree_Syn_OnExpr :: OnExpr ,originalTree_Syn_OnExpr :: OnExpr }
-wrap_OnExpr :: T_OnExpr  ->
-               Inh_OnExpr  ->
-               Syn_OnExpr 
-wrap_OnExpr sem (Inh_OnExpr _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_OnExpr _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
-sem_OnExpr_Just :: T_JoinExpr  ->
-                   T_OnExpr 
-sem_OnExpr_Just just_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: OnExpr 
-              _lhsOfixedUpIdentifiersTree :: OnExpr 
-              _lhsOoriginalTree :: OnExpr 
-              _justOcat :: Catalog
-              _justOidenv :: IDEnv
-              _justOlib :: LocalBindings
-              _justIannotatedTree :: JoinExpr 
-              _justIfixedUpIdentifiersTree :: JoinExpr 
-              _justIoriginalTree :: JoinExpr 
-              -- self rule
-              _annotatedTree =
-                  Just _justIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Just _justIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  Just _justIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _justOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _justOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _justOlib =
-                  _lhsIlib
-              ( _justIannotatedTree,_justIfixedUpIdentifiersTree,_justIoriginalTree) =
-                  just_ _justOcat _justOidenv _justOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
-sem_OnExpr_Nothing :: T_OnExpr 
-sem_OnExpr_Nothing  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: OnExpr 
-              _lhsOfixedUpIdentifiersTree :: OnExpr 
-              _lhsOoriginalTree :: OnExpr 
-              -- self rule
-              _annotatedTree =
-                  Nothing
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Nothing
-              -- self rule
-              _originalTree =
-                  Nothing
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
--- ParamDef ----------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-         pos                  : Int
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         namedType            : Maybe Type
-         originalTree         : SELF 
-         paramName            : ParamName
-   alternatives:
-      alternative ParamDef:
-         child ann            : {Annotation}
-         child name           : {String}
-         child typ            : TypeName 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative ParamDefTp:
-         child ann            : {Annotation}
-         child typ            : TypeName 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-data ParamDef  = ParamDef (Annotation) (String) (TypeName ) 
-               | ParamDefTp (Annotation) (TypeName ) 
-               deriving ( Data,Eq,Show,Typeable)
--- cata
-sem_ParamDef :: ParamDef  ->
-                T_ParamDef 
-sem_ParamDef (ParamDef _ann _name _typ )  =
-    (sem_ParamDef_ParamDef _ann _name (sem_TypeName _typ ) )
-sem_ParamDef (ParamDefTp _ann _typ )  =
-    (sem_ParamDef_ParamDefTp _ann (sem_TypeName _typ ) )
--- semantic domain
-type T_ParamDef  = Catalog ->
-                   IDEnv ->
-                   LocalBindings ->
-                   Int ->
-                   ( ParamDef ,ParamDef ,(Maybe Type),ParamDef ,ParamName)
-data Inh_ParamDef  = Inh_ParamDef {cat_Inh_ParamDef :: Catalog,idenv_Inh_ParamDef :: IDEnv,lib_Inh_ParamDef :: LocalBindings,pos_Inh_ParamDef :: Int}
-data Syn_ParamDef  = Syn_ParamDef {annotatedTree_Syn_ParamDef :: ParamDef ,fixedUpIdentifiersTree_Syn_ParamDef :: ParamDef ,namedType_Syn_ParamDef :: (Maybe Type),originalTree_Syn_ParamDef :: ParamDef ,paramName_Syn_ParamDef :: ParamName}
-wrap_ParamDef :: T_ParamDef  ->
-                 Inh_ParamDef  ->
-                 Syn_ParamDef 
-wrap_ParamDef sem (Inh_ParamDef _lhsIcat _lhsIidenv _lhsIlib _lhsIpos )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOnamedType,_lhsOoriginalTree,_lhsOparamName) = sem _lhsIcat _lhsIidenv _lhsIlib _lhsIpos 
-     in  (Syn_ParamDef _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOnamedType _lhsOoriginalTree _lhsOparamName ))
-sem_ParamDef_ParamDef :: Annotation ->
-                         String ->
-                         T_TypeName  ->
-                         T_ParamDef 
-sem_ParamDef_ParamDef ann_ name_ typ_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib
-       _lhsIpos ->
-         (let _lhsOnamedType :: (Maybe Type)
-              _lhsOparamName :: ParamName
-              _lhsOannotatedTree :: ParamDef 
-              _lhsOfixedUpIdentifiersTree :: ParamDef 
-              _lhsOoriginalTree :: ParamDef 
-              _typOcat :: Catalog
-              _typOidenv :: IDEnv
-              _typOlib :: LocalBindings
-              _typIannotatedTree :: TypeName 
-              _typIfixedUpIdentifiersTree :: TypeName 
-              _typInamedType :: (Maybe Type)
-              _typIoriginalTree :: TypeName 
-              -- "./TypeChecking/Ddl/CreateFunction.ag"(line 45, column 9)
-              _lhsOnamedType =
-                  _typInamedType
-              -- "./TypeChecking/Ddl/CreateFunction.ag"(line 47, column 9)
-              _lhsOparamName =
-                  NamedParam _lhsIpos name_
-              -- self rule
-              _annotatedTree =
-                  ParamDef ann_ name_ _typIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  ParamDef ann_ name_ _typIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  ParamDef ann_ name_ _typIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _typOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _typOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _typOlib =
-                  _lhsIlib
-              ( _typIannotatedTree,_typIfixedUpIdentifiersTree,_typInamedType,_typIoriginalTree) =
-                  typ_ _typOcat _typOidenv _typOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOnamedType,_lhsOoriginalTree,_lhsOparamName)))
-sem_ParamDef_ParamDefTp :: Annotation ->
-                           T_TypeName  ->
-                           T_ParamDef 
-sem_ParamDef_ParamDefTp ann_ typ_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib
-       _lhsIpos ->
-         (let _lhsOnamedType :: (Maybe Type)
-              _lhsOparamName :: ParamName
-              _lhsOannotatedTree :: ParamDef 
-              _lhsOfixedUpIdentifiersTree :: ParamDef 
-              _lhsOoriginalTree :: ParamDef 
-              _typOcat :: Catalog
-              _typOidenv :: IDEnv
-              _typOlib :: LocalBindings
-              _typIannotatedTree :: TypeName 
-              _typIfixedUpIdentifiersTree :: TypeName 
-              _typInamedType :: (Maybe Type)
-              _typIoriginalTree :: TypeName 
-              -- "./TypeChecking/Ddl/CreateFunction.ag"(line 45, column 9)
-              _lhsOnamedType =
-                  _typInamedType
-              -- "./TypeChecking/Ddl/CreateFunction.ag"(line 49, column 9)
-              _lhsOparamName =
-                  UnnamedParam _lhsIpos
-              -- self rule
-              _annotatedTree =
-                  ParamDefTp ann_ _typIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  ParamDefTp ann_ _typIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  ParamDefTp ann_ _typIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _typOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _typOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _typOlib =
-                  _lhsIlib
-              ( _typIannotatedTree,_typIfixedUpIdentifiersTree,_typInamedType,_typIoriginalTree) =
-                  typ_ _typOcat _typOidenv _typOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOnamedType,_lhsOoriginalTree,_lhsOparamName)))
--- ParamDefList ------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-         pos                  : Int
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-         params               : [(ParamName, Maybe Type)]
-   alternatives:
-      alternative Cons:
-         child hd             : ParamDef 
-         child tl             : ParamDefList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Nil:
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-type ParamDefList  = [ParamDef ]
--- cata
-sem_ParamDefList :: ParamDefList  ->
-                    T_ParamDefList 
-sem_ParamDefList list  =
-    (Prelude.foldr sem_ParamDefList_Cons sem_ParamDefList_Nil (Prelude.map sem_ParamDef list) )
--- semantic domain
-type T_ParamDefList  = Catalog ->
-                       IDEnv ->
-                       LocalBindings ->
-                       Int ->
-                       ( ParamDefList ,ParamDefList ,ParamDefList ,([(ParamName, Maybe Type)]))
-data Inh_ParamDefList  = Inh_ParamDefList {cat_Inh_ParamDefList :: Catalog,idenv_Inh_ParamDefList :: IDEnv,lib_Inh_ParamDefList :: LocalBindings,pos_Inh_ParamDefList :: Int}
-data Syn_ParamDefList  = Syn_ParamDefList {annotatedTree_Syn_ParamDefList :: ParamDefList ,fixedUpIdentifiersTree_Syn_ParamDefList :: ParamDefList ,originalTree_Syn_ParamDefList :: ParamDefList ,params_Syn_ParamDefList :: ([(ParamName, Maybe Type)])}
-wrap_ParamDefList :: T_ParamDefList  ->
-                     Inh_ParamDefList  ->
-                     Syn_ParamDefList 
-wrap_ParamDefList sem (Inh_ParamDefList _lhsIcat _lhsIidenv _lhsIlib _lhsIpos )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOparams) = sem _lhsIcat _lhsIidenv _lhsIlib _lhsIpos 
-     in  (Syn_ParamDefList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree _lhsOparams ))
-sem_ParamDefList_Cons :: T_ParamDef  ->
-                         T_ParamDefList  ->
-                         T_ParamDefList 
-sem_ParamDefList_Cons hd_ tl_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib
-       _lhsIpos ->
-         (let _lhsOparams :: ([(ParamName, Maybe Type)])
-              _hdOpos :: Int
-              _tlOpos :: Int
-              _lhsOannotatedTree :: ParamDefList 
-              _lhsOfixedUpIdentifiersTree :: ParamDefList 
-              _lhsOoriginalTree :: ParamDefList 
-              _hdOcat :: Catalog
-              _hdOidenv :: IDEnv
-              _hdOlib :: LocalBindings
-              _tlOcat :: Catalog
-              _tlOidenv :: IDEnv
-              _tlOlib :: LocalBindings
-              _hdIannotatedTree :: ParamDef 
-              _hdIfixedUpIdentifiersTree :: ParamDef 
-              _hdInamedType :: (Maybe Type)
-              _hdIoriginalTree :: ParamDef 
-              _hdIparamName :: ParamName
-              _tlIannotatedTree :: ParamDefList 
-              _tlIfixedUpIdentifiersTree :: ParamDefList 
-              _tlIoriginalTree :: ParamDefList 
-              _tlIparams :: ([(ParamName, Maybe Type)])
-              -- "./TypeChecking/Ddl/CreateFunction.ag"(line 53, column 13)
-              _lhsOparams =
-                  ((_hdIparamName, _hdInamedType) : _tlIparams)
-              -- "./TypeChecking/Ddl/CreateFunction.ag"(line 54, column 13)
-              _hdOpos =
-                  _lhsIpos
-              -- "./TypeChecking/Ddl/CreateFunction.ag"(line 55, column 13)
-              _tlOpos =
-                  _lhsIpos + 1
-              -- self rule
-              _annotatedTree =
-                  (:) _hdIannotatedTree _tlIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  (:) _hdIoriginalTree _tlIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _hdOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _hdOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _hdOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _tlOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _tlOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _tlOlib =
-                  _lhsIlib
-              ( _hdIannotatedTree,_hdIfixedUpIdentifiersTree,_hdInamedType,_hdIoriginalTree,_hdIparamName) =
-                  hd_ _hdOcat _hdOidenv _hdOlib _hdOpos 
-              ( _tlIannotatedTree,_tlIfixedUpIdentifiersTree,_tlIoriginalTree,_tlIparams) =
-                  tl_ _tlOcat _tlOidenv _tlOlib _tlOpos 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOparams)))
-sem_ParamDefList_Nil :: T_ParamDefList 
-sem_ParamDefList_Nil  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib
-       _lhsIpos ->
-         (let _lhsOparams :: ([(ParamName, Maybe Type)])
-              _lhsOannotatedTree :: ParamDefList 
-              _lhsOfixedUpIdentifiersTree :: ParamDefList 
-              _lhsOoriginalTree :: ParamDefList 
-              -- "./TypeChecking/Ddl/CreateFunction.ag"(line 52, column 12)
-              _lhsOparams =
-                  []
-              -- self rule
-              _annotatedTree =
-                  []
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  []
-              -- self rule
-              _originalTree =
-                  []
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOparams)))
--- QueryExpr ---------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         csql                 : LocalBindings
-         expectedTypes        : [Maybe Type]
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         cidenv               : IDEnv
-         fixedUpIdentifiersTree : SELF 
-         libUpdates           : [LocalBindingsUpdate]
-         originalTree         : SELF 
-         uType                : Maybe [(String,Type)]
-   alternatives:
-      alternative CombineQueryExpr:
-         child ann            : {Annotation}
-         child ctype          : {CombineType}
-         child sel1           : QueryExpr 
-         child sel2           : QueryExpr 
-         visit 0:
-            local tpe         : {Et}
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Select:
-         child ann            : {Annotation}
-         child selDistinct    : {Distinct}
-         child selSelectList  : SelectList 
-         child selTref        : TableRefList 
-         child selWhere       : MaybeBoolExpr 
-         child selGroupBy     : ScalarExprList 
-         child selHaving      : MaybeBoolExpr 
-         child selOrderBy     : ScalarExprDirectionPairList 
-         child selLimit       : MaybeScalarExpr 
-         child selOffset      : MaybeScalarExpr 
-         visit 0:
-            local trefEnv     : _
-            local includeCorrelations : _
-            local newLib      : _
-            local slTypes     : {LocalBindings}
-            local tpe         : {Et}
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Values:
-         child ann            : {Annotation}
-         child vll            : ScalarExprListList 
-         visit 0:
-            local tpe         : {Et}
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative WithQueryExpr:
-         child ann            : {Annotation}
-         child withs          : WithQueryList 
-         child ex             : QueryExpr 
-         visit 0:
-            local tpe         : {Et}
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-data QueryExpr  = CombineQueryExpr (Annotation) (CombineType) (QueryExpr ) (QueryExpr ) 
-                | Select (Annotation) (Distinct) (SelectList ) (TableRefList ) (MaybeBoolExpr ) (ScalarExprList ) (MaybeBoolExpr ) (ScalarExprDirectionPairList ) (MaybeScalarExpr ) (MaybeScalarExpr ) 
-                | Values (Annotation) (ScalarExprListList ) 
-                | WithQueryExpr (Annotation) (WithQueryList ) (QueryExpr ) 
-                deriving ( Data,Eq,Show,Typeable)
--- cata
-sem_QueryExpr :: QueryExpr  ->
-                 T_QueryExpr 
-sem_QueryExpr (CombineQueryExpr _ann _ctype _sel1 _sel2 )  =
-    (sem_QueryExpr_CombineQueryExpr _ann _ctype (sem_QueryExpr _sel1 ) (sem_QueryExpr _sel2 ) )
-sem_QueryExpr (Select _ann _selDistinct _selSelectList _selTref _selWhere _selGroupBy _selHaving _selOrderBy _selLimit _selOffset )  =
-    (sem_QueryExpr_Select _ann _selDistinct (sem_SelectList _selSelectList ) (sem_TableRefList _selTref ) (sem_MaybeBoolExpr _selWhere ) (sem_ScalarExprList _selGroupBy ) (sem_MaybeBoolExpr _selHaving ) (sem_ScalarExprDirectionPairList _selOrderBy ) (sem_MaybeScalarExpr _selLimit ) (sem_MaybeScalarExpr _selOffset ) )
-sem_QueryExpr (Values _ann _vll )  =
-    (sem_QueryExpr_Values _ann (sem_ScalarExprListList _vll ) )
-sem_QueryExpr (WithQueryExpr _ann _withs _ex )  =
-    (sem_QueryExpr_WithQueryExpr _ann (sem_WithQueryList _withs ) (sem_QueryExpr _ex ) )
--- semantic domain
-type T_QueryExpr  = Catalog ->
-                    LocalBindings ->
-                    ([Maybe Type]) ->
-                    IDEnv ->
-                    LocalBindings ->
-                    ( QueryExpr ,IDEnv,QueryExpr ,([LocalBindingsUpdate]),QueryExpr ,(Maybe [(String,Type)]))
-data Inh_QueryExpr  = Inh_QueryExpr {cat_Inh_QueryExpr :: Catalog,csql_Inh_QueryExpr :: LocalBindings,expectedTypes_Inh_QueryExpr :: ([Maybe Type]),idenv_Inh_QueryExpr :: IDEnv,lib_Inh_QueryExpr :: LocalBindings}
-data Syn_QueryExpr  = Syn_QueryExpr {annotatedTree_Syn_QueryExpr :: QueryExpr ,cidenv_Syn_QueryExpr :: IDEnv,fixedUpIdentifiersTree_Syn_QueryExpr :: QueryExpr ,libUpdates_Syn_QueryExpr :: ([LocalBindingsUpdate]),originalTree_Syn_QueryExpr :: QueryExpr ,uType_Syn_QueryExpr :: (Maybe [(String,Type)])}
-wrap_QueryExpr :: T_QueryExpr  ->
-                  Inh_QueryExpr  ->
-                  Syn_QueryExpr 
-wrap_QueryExpr sem (Inh_QueryExpr _lhsIcat _lhsIcsql _lhsIexpectedTypes _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOcidenv,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree,_lhsOuType) = sem _lhsIcat _lhsIcsql _lhsIexpectedTypes _lhsIidenv _lhsIlib 
-     in  (Syn_QueryExpr _lhsOannotatedTree _lhsOcidenv _lhsOfixedUpIdentifiersTree _lhsOlibUpdates _lhsOoriginalTree _lhsOuType ))
-sem_QueryExpr_CombineQueryExpr :: Annotation ->
-                                  CombineType ->
-                                  T_QueryExpr  ->
-                                  T_QueryExpr  ->
-                                  T_QueryExpr 
-sem_QueryExpr_CombineQueryExpr ann_ ctype_ sel1_ sel2_  =
-    (\ _lhsIcat
-       _lhsIcsql
-       _lhsIexpectedTypes
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOcidenv :: IDEnv
-              _lhsOannotatedTree :: QueryExpr 
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _tpe :: Et
-              _lhsOuType :: (Maybe [(String,Type)])
-              _lhsOfixedUpIdentifiersTree :: QueryExpr 
-              _lhsOoriginalTree :: QueryExpr 
-              _sel1Ocat :: Catalog
-              _sel1Ocsql :: LocalBindings
-              _sel1OexpectedTypes :: ([Maybe Type])
-              _sel1Oidenv :: IDEnv
-              _sel1Olib :: LocalBindings
-              _sel2Ocat :: Catalog
-              _sel2Ocsql :: LocalBindings
-              _sel2OexpectedTypes :: ([Maybe Type])
-              _sel2Oidenv :: IDEnv
-              _sel2Olib :: LocalBindings
-              _sel1IannotatedTree :: QueryExpr 
-              _sel1Icidenv :: IDEnv
-              _sel1IfixedUpIdentifiersTree :: QueryExpr 
-              _sel1IlibUpdates :: ([LocalBindingsUpdate])
-              _sel1IoriginalTree :: QueryExpr 
-              _sel1IuType :: (Maybe [(String,Type)])
-              _sel2IannotatedTree :: QueryExpr 
-              _sel2Icidenv :: IDEnv
-              _sel2IfixedUpIdentifiersTree :: QueryExpr 
-              _sel2IlibUpdates :: ([LocalBindingsUpdate])
-              _sel2IoriginalTree :: QueryExpr 
-              _sel2IuType :: (Maybe [(String,Type)])
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 230, column 24)
-              _lhsOcidenv =
-                  _sel1Icidenv
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 29, column 9)
-              _lhsOannotatedTree =
-                  setTypeAddErrors _tpe     _backTree
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 141, column 9)
-              _lhsOlibUpdates =
-                  []
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 168, column 9)
-              _tpe =
-                  do
-                  sel1t <- lmt ((SetOfType . CompositeType) <$> _sel1IuType)
-                  sel2t <- lmt ((SetOfType . CompositeType) <$> _sel2IuType)
-                  typeCheckCombineSelect _lhsIcat sel1t sel2t
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 174, column 9)
-              _backTree =
-                  CombineQueryExpr ann_ ctype_
-                                _sel1IannotatedTree
-                                _sel2IannotatedTree
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 185, column 9)
-              _lhsOuType =
-                  etmt (_tpe     >>= unwrapSetOfComposite)
-              -- self rule
-              _annotatedTree =
-                  CombineQueryExpr ann_ ctype_ _sel1IannotatedTree _sel2IannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  CombineQueryExpr ann_ ctype_ _sel1IfixedUpIdentifiersTree _sel2IfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  CombineQueryExpr ann_ ctype_ _sel1IoriginalTree _sel2IoriginalTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _sel1Ocat =
-                  _lhsIcat
-              -- copy rule (down)
-              _sel1Ocsql =
-                  _lhsIcsql
-              -- copy rule (down)
-              _sel1OexpectedTypes =
-                  _lhsIexpectedTypes
-              -- copy rule (down)
-              _sel1Oidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _sel1Olib =
-                  _lhsIlib
-              -- copy rule (down)
-              _sel2Ocat =
-                  _lhsIcat
-              -- copy rule (down)
-              _sel2Ocsql =
-                  _lhsIcsql
-              -- copy rule (down)
-              _sel2OexpectedTypes =
-                  _lhsIexpectedTypes
-              -- copy rule (down)
-              _sel2Oidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _sel2Olib =
-                  _lhsIlib
-              ( _sel1IannotatedTree,_sel1Icidenv,_sel1IfixedUpIdentifiersTree,_sel1IlibUpdates,_sel1IoriginalTree,_sel1IuType) =
-                  sel1_ _sel1Ocat _sel1Ocsql _sel1OexpectedTypes _sel1Oidenv _sel1Olib 
-              ( _sel2IannotatedTree,_sel2Icidenv,_sel2IfixedUpIdentifiersTree,_sel2IlibUpdates,_sel2IoriginalTree,_sel2IuType) =
-                  sel2_ _sel2Ocat _sel2Ocsql _sel2OexpectedTypes _sel2Oidenv _sel2Olib 
-          in  ( _lhsOannotatedTree,_lhsOcidenv,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree,_lhsOuType)))
-sem_QueryExpr_Select :: Annotation ->
-                        Distinct ->
-                        T_SelectList  ->
-                        T_TableRefList  ->
-                        T_MaybeBoolExpr  ->
-                        T_ScalarExprList  ->
-                        T_MaybeBoolExpr  ->
-                        T_ScalarExprDirectionPairList  ->
-                        T_MaybeScalarExpr  ->
-                        T_MaybeScalarExpr  ->
-                        T_QueryExpr 
-sem_QueryExpr_Select ann_ selDistinct_ selSelectList_ selTref_ selWhere_ selGroupBy_ selHaving_ selOrderBy_ selLimit_ selOffset_  =
-    (\ _lhsIcat
-       _lhsIcsql
-       _lhsIexpectedTypes
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOfixedUpIdentifiersTree :: QueryExpr 
-              _lhsOcidenv :: IDEnv
-              _selSelectListOidenv :: IDEnv
-              _selWhereOidenv :: IDEnv
-              _selGroupByOidenv :: IDEnv
-              _selHavingOidenv :: IDEnv
-              _selOrderByOidenv :: IDEnv
-              _lhsOannotatedTree :: QueryExpr 
-              _selSelectListOlib :: LocalBindings
-              _selWhereOlib :: LocalBindings
-              _selHavingOlib :: LocalBindings
-              _selGroupByOlib :: LocalBindings
-              _slTypes :: LocalBindings
-              _selOrderByOlib :: LocalBindings
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _tpe :: Et
-              _lhsOuType :: (Maybe [(String,Type)])
-              _selGroupByOexpectedTypes :: ([Maybe Type])
-              _lhsOoriginalTree :: QueryExpr 
-              _selSelectListOcat :: Catalog
-              _selTrefOcat :: Catalog
-              _selTrefOidenv :: IDEnv
-              _selTrefOlib :: LocalBindings
-              _selWhereOcat :: Catalog
-              _selGroupByOcat :: Catalog
-              _selHavingOcat :: Catalog
-              _selOrderByOcat :: Catalog
-              _selLimitOcat :: Catalog
-              _selLimitOidenv :: IDEnv
-              _selLimitOlib :: LocalBindings
-              _selOffsetOcat :: Catalog
-              _selOffsetOidenv :: IDEnv
-              _selOffsetOlib :: LocalBindings
-              _selSelectListIannotatedTree :: SelectList 
-              _selSelectListIcidenv :: IDEnv
-              _selSelectListIfixedUpIdentifiersTree :: SelectList 
-              _selSelectListIlibUpdates :: ([LocalBindingsUpdate])
-              _selSelectListIlistType :: ([(String,Maybe Type)])
-              _selSelectListIoriginalTree :: SelectList 
-              _selTrefIannotatedTree :: TableRefList 
-              _selTrefIfixedUpIdentifiersTree :: TableRefList 
-              _selTrefIlibUpdates :: ([LocalBindingsUpdate])
-              _selTrefInewLib2 :: LocalBindings
-              _selTrefIoriginalTree :: TableRefList 
-              _selTrefItrefIDs :: ([(String,[String])])
-              _selWhereIannotatedTree :: MaybeBoolExpr 
-              _selWhereIfixedUpIdentifiersTree :: MaybeBoolExpr 
-              _selWhereIoriginalTree :: MaybeBoolExpr 
-              _selGroupByIannotatedTree :: ScalarExprList 
-              _selGroupByIfixedUpIdentifiersTree :: ScalarExprList 
-              _selGroupByIoriginalTree :: ScalarExprList 
-              _selGroupByIuType :: ([Maybe Type])
-              _selHavingIannotatedTree :: MaybeBoolExpr 
-              _selHavingIfixedUpIdentifiersTree :: MaybeBoolExpr 
-              _selHavingIoriginalTree :: MaybeBoolExpr 
-              _selOrderByIannotatedTree :: ScalarExprDirectionPairList 
-              _selOrderByIfixedUpIdentifiersTree :: ScalarExprDirectionPairList 
-              _selOrderByIoriginalTree :: ScalarExprDirectionPairList 
-              _selLimitIannotatedTree :: MaybeScalarExpr 
-              _selLimitIfixedUpIdentifiersTree :: MaybeScalarExpr 
-              _selLimitIoriginalTree :: MaybeScalarExpr 
-              _selLimitIuType :: (Maybe Type)
-              _selOffsetIannotatedTree :: MaybeScalarExpr 
-              _selOffsetIfixedUpIdentifiersTree :: MaybeScalarExpr 
-              _selOffsetIoriginalTree :: MaybeScalarExpr 
-              _selOffsetIuType :: (Maybe Type)
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 187, column 9)
-              _lhsOfixedUpIdentifiersTree =
-                  Select ann_
-                         selDistinct_
-                         _selSelectListIfixedUpIdentifiersTree
-                         _selTrefIfixedUpIdentifiersTree
-                         _selWhereIfixedUpIdentifiersTree
-                         _selGroupByIfixedUpIdentifiersTree
-                         _selHavingIfixedUpIdentifiersTree
-                         _selOrderByIfixedUpIdentifiersTree
-                         _selLimitIfixedUpIdentifiersTree
-                         _selOffsetIfixedUpIdentifiersTree
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 229, column 14)
-              _lhsOcidenv =
-                  _selSelectListIcidenv
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 270, column 14)
-              _trefEnv =
-                  makeIDEnvP _selTrefItrefIDs
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 271, column 14)
-              _includeCorrelations =
-                  joinIDEnvs _lhsIidenv _trefEnv
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 272, column 14)
-              _selSelectListOidenv =
-                  _trefEnv
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 273, column 14)
-              _selWhereOidenv =
-                  _includeCorrelations
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 274, column 14)
-              _selGroupByOidenv =
-                  _trefEnv
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 275, column 14)
-              _selHavingOidenv =
-                  _includeCorrelations
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 276, column 14)
-              _selOrderByOidenv =
-                  _trefEnv
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 29, column 9)
-              _lhsOannotatedTree =
-                  setTypeAddErrors _tpe     _backTree
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 101, column 10)
-              _newLib =
-                  _selTrefInewLib2
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 102, column 10)
-              _selSelectListOlib =
-                  _newLib
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 104, column 10)
-              _selWhereOlib =
-                  joinBindings _newLib     _lhsIcsql
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 105, column 10)
-              _selHavingOlib =
-                  joinBindings _newLib     _lhsIcsql
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 106, column 10)
-              _selGroupByOlib =
-                  _newLib
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 111, column 10)
-              _slTypes =
-                  createLocalBindings $ Just [("",_selSelectListIlistType)]
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 112, column 10)
-              _selOrderByOlib =
-                  joinBindings _slTypes     _newLib
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 143, column 9)
-              _lhsOlibUpdates =
-                  _selSelectListIlibUpdates
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 155, column 9)
-              _tpe =
-                  Right $ SetOfType $ CompositeType $ fromMaybe [] $ liftList  _selSelectListIlistType
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 157, column 9)
-              _backTree =
-                  Select ann_
-                         selDistinct_
-                         _selSelectListIannotatedTree
-                         _selTrefIannotatedTree
-                         _selWhereIannotatedTree
-                         _selGroupByIannotatedTree
-                         _selHavingIannotatedTree
-                         _selOrderByIannotatedTree
-                         _selLimitIannotatedTree
-                         _selOffsetIannotatedTree
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 185, column 9)
-              _lhsOuType =
-                  etmt (_tpe     >>= unwrapSetOfComposite)
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 150, column 14)
-              _selGroupByOexpectedTypes =
-                  []
-              -- self rule
-              _annotatedTree =
-                  Select ann_ selDistinct_ _selSelectListIannotatedTree _selTrefIannotatedTree _selWhereIannotatedTree _selGroupByIannotatedTree _selHavingIannotatedTree _selOrderByIannotatedTree _selLimitIannotatedTree _selOffsetIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Select ann_ selDistinct_ _selSelectListIfixedUpIdentifiersTree _selTrefIfixedUpIdentifiersTree _selWhereIfixedUpIdentifiersTree _selGroupByIfixedUpIdentifiersTree _selHavingIfixedUpIdentifiersTree _selOrderByIfixedUpIdentifiersTree _selLimitIfixedUpIdentifiersTree _selOffsetIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  Select ann_ selDistinct_ _selSelectListIoriginalTree _selTrefIoriginalTree _selWhereIoriginalTree _selGroupByIoriginalTree _selHavingIoriginalTree _selOrderByIoriginalTree _selLimitIoriginalTree _selOffsetIoriginalTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _selSelectListOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _selTrefOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _selTrefOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _selTrefOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _selWhereOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _selGroupByOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _selHavingOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _selOrderByOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _selLimitOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _selLimitOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _selLimitOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _selOffsetOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _selOffsetOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _selOffsetOlib =
-                  _lhsIlib
-              ( _selSelectListIannotatedTree,_selSelectListIcidenv,_selSelectListIfixedUpIdentifiersTree,_selSelectListIlibUpdates,_selSelectListIlistType,_selSelectListIoriginalTree) =
-                  selSelectList_ _selSelectListOcat _selSelectListOidenv _selSelectListOlib 
-              ( _selTrefIannotatedTree,_selTrefIfixedUpIdentifiersTree,_selTrefIlibUpdates,_selTrefInewLib2,_selTrefIoriginalTree,_selTrefItrefIDs) =
-                  selTref_ _selTrefOcat _selTrefOidenv _selTrefOlib 
-              ( _selWhereIannotatedTree,_selWhereIfixedUpIdentifiersTree,_selWhereIoriginalTree) =
-                  selWhere_ _selWhereOcat _selWhereOidenv _selWhereOlib 
-              ( _selGroupByIannotatedTree,_selGroupByIfixedUpIdentifiersTree,_selGroupByIoriginalTree,_selGroupByIuType) =
-                  selGroupBy_ _selGroupByOcat _selGroupByOexpectedTypes _selGroupByOidenv _selGroupByOlib 
-              ( _selHavingIannotatedTree,_selHavingIfixedUpIdentifiersTree,_selHavingIoriginalTree) =
-                  selHaving_ _selHavingOcat _selHavingOidenv _selHavingOlib 
-              ( _selOrderByIannotatedTree,_selOrderByIfixedUpIdentifiersTree,_selOrderByIoriginalTree) =
-                  selOrderBy_ _selOrderByOcat _selOrderByOidenv _selOrderByOlib 
-              ( _selLimitIannotatedTree,_selLimitIfixedUpIdentifiersTree,_selLimitIoriginalTree,_selLimitIuType) =
-                  selLimit_ _selLimitOcat _selLimitOidenv _selLimitOlib 
-              ( _selOffsetIannotatedTree,_selOffsetIfixedUpIdentifiersTree,_selOffsetIoriginalTree,_selOffsetIuType) =
-                  selOffset_ _selOffsetOcat _selOffsetOidenv _selOffsetOlib 
-          in  ( _lhsOannotatedTree,_lhsOcidenv,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree,_lhsOuType)))
-sem_QueryExpr_Values :: Annotation ->
-                        T_ScalarExprListList  ->
-                        T_QueryExpr 
-sem_QueryExpr_Values ann_ vll_  =
-    (\ _lhsIcat
-       _lhsIcsql
-       _lhsIexpectedTypes
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOcidenv :: IDEnv
-              _lhsOannotatedTree :: QueryExpr 
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _tpe :: Et
-              _lhsOuType :: (Maybe [(String,Type)])
-              _vllOexpectedTypes :: ([Maybe Type])
-              _lhsOfixedUpIdentifiersTree :: QueryExpr 
-              _lhsOoriginalTree :: QueryExpr 
-              _vllOcat :: Catalog
-              _vllOidenv :: IDEnv
-              _vllOlib :: LocalBindings
-              _vllIannotatedTree :: ScalarExprListList 
-              _vllIfixedUpIdentifiersTree :: ScalarExprListList 
-              _vllIoriginalTree :: ScalarExprListList 
-              _vllIuType :: ([[Maybe Type]])
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 231, column 14)
-              _lhsOcidenv =
-                  unimplementedIDEnv
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 29, column 9)
-              _lhsOannotatedTree =
-                  setTypeAddErrors _tpe     _backTree
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 141, column 9)
-              _lhsOlibUpdates =
-                  []
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 150, column 9)
-              _tpe =
-                  typeCheckValuesExpr
-                              _lhsIcat
-                              _vllIuType
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 153, column 9)
-              _backTree =
-                  Values ann_ _vllIannotatedTree
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 185, column 9)
-              _lhsOuType =
-                  etmt (_tpe     >>= unwrapSetOfComposite)
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 164, column 14)
-              _vllOexpectedTypes =
-                  _lhsIexpectedTypes
-              -- self rule
-              _annotatedTree =
-                  Values ann_ _vllIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Values ann_ _vllIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  Values ann_ _vllIoriginalTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _vllOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _vllOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _vllOlib =
-                  _lhsIlib
-              ( _vllIannotatedTree,_vllIfixedUpIdentifiersTree,_vllIoriginalTree,_vllIuType) =
-                  vll_ _vllOcat _vllOexpectedTypes _vllOidenv _vllOlib 
-          in  ( _lhsOannotatedTree,_lhsOcidenv,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree,_lhsOuType)))
-sem_QueryExpr_WithQueryExpr :: Annotation ->
-                               T_WithQueryList  ->
-                               T_QueryExpr  ->
-                               T_QueryExpr 
-sem_QueryExpr_WithQueryExpr ann_ withs_ ex_  =
-    (\ _lhsIcat
-       _lhsIcsql
-       _lhsIexpectedTypes
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOcidenv :: IDEnv
-              _lhsOannotatedTree :: QueryExpr 
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _tpe :: Et
-              _exOcat :: Catalog
-              _withsOcatUpdates :: ([CatalogUpdate])
-              _lhsOuType :: (Maybe [(String,Type)])
-              _lhsOfixedUpIdentifiersTree :: QueryExpr 
-              _lhsOoriginalTree :: QueryExpr 
-              _withsOcat :: Catalog
-              _withsOidenv :: IDEnv
-              _withsOlib :: LocalBindings
-              _exOcsql :: LocalBindings
-              _exOexpectedTypes :: ([Maybe Type])
-              _exOidenv :: IDEnv
-              _exOlib :: LocalBindings
-              _withsIannotatedTree :: WithQueryList 
-              _withsIfixedUpIdentifiersTree :: WithQueryList 
-              _withsIoriginalTree :: WithQueryList 
-              _withsIproducedCat :: Catalog
-              _exIannotatedTree :: QueryExpr 
-              _exIcidenv :: IDEnv
-              _exIfixedUpIdentifiersTree :: QueryExpr 
-              _exIlibUpdates :: ([LocalBindingsUpdate])
-              _exIoriginalTree :: QueryExpr 
-              _exIuType :: (Maybe [(String,Type)])
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 232, column 21)
-              _lhsOcidenv =
-                  _exIcidenv
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 29, column 9)
-              _lhsOannotatedTree =
-                  setTypeAddErrors _tpe     _backTree
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 145, column 9)
-              _lhsOlibUpdates =
-                  _exIlibUpdates
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 178, column 9)
-              _tpe =
-                  lmt ((SetOfType . CompositeType) <$> _exIuType)
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 179, column 9)
-              _backTree =
-                  WithQueryExpr ann_ _withsIannotatedTree _exIannotatedTree
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 180, column 9)
-              _exOcat =
-                  _withsIproducedCat
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 181, column 9)
-              _withsOcatUpdates =
-                  []
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 185, column 9)
-              _lhsOuType =
-                  etmt (_tpe     >>= unwrapSetOfComposite)
-              -- self rule
-              _annotatedTree =
-                  WithQueryExpr ann_ _withsIannotatedTree _exIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  WithQueryExpr ann_ _withsIfixedUpIdentifiersTree _exIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  WithQueryExpr ann_ _withsIoriginalTree _exIoriginalTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _withsOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _withsOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _withsOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _exOcsql =
-                  _lhsIcsql
-              -- copy rule (down)
-              _exOexpectedTypes =
-                  _lhsIexpectedTypes
-              -- copy rule (down)
-              _exOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _exOlib =
-                  _lhsIlib
-              ( _withsIannotatedTree,_withsIfixedUpIdentifiersTree,_withsIoriginalTree,_withsIproducedCat) =
-                  withs_ _withsOcat _withsOcatUpdates _withsOidenv _withsOlib 
-              ( _exIannotatedTree,_exIcidenv,_exIfixedUpIdentifiersTree,_exIlibUpdates,_exIoriginalTree,_exIuType) =
-                  ex_ _exOcat _exOcsql _exOexpectedTypes _exOidenv _exOlib 
-          in  ( _lhsOannotatedTree,_lhsOcidenv,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree,_lhsOuType)))
--- Root --------------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-         producedCat          : Catalog
-         producedLib          : LocalBindings
-   alternatives:
-      alternative Root:
-         child statements     : StatementList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-data Root  = Root (StatementList ) 
-           deriving ( Show)
--- cata
-sem_Root :: Root  ->
-            T_Root 
-sem_Root (Root _statements )  =
-    (sem_Root_Root (sem_StatementList _statements ) )
--- semantic domain
-type T_Root  = Catalog ->
-               IDEnv ->
-               LocalBindings ->
-               ( Root ,Root ,Root ,Catalog,LocalBindings)
-data Inh_Root  = Inh_Root {cat_Inh_Root :: Catalog,idenv_Inh_Root :: IDEnv,lib_Inh_Root :: LocalBindings}
-data Syn_Root  = Syn_Root {annotatedTree_Syn_Root :: Root ,fixedUpIdentifiersTree_Syn_Root :: Root ,originalTree_Syn_Root :: Root ,producedCat_Syn_Root :: Catalog,producedLib_Syn_Root :: LocalBindings}
-wrap_Root :: T_Root  ->
-             Inh_Root  ->
-             Syn_Root 
-wrap_Root sem (Inh_Root _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOproducedCat,_lhsOproducedLib) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_Root _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree _lhsOproducedCat _lhsOproducedLib ))
-sem_Root_Root :: T_StatementList  ->
-                 T_Root 
-sem_Root_Root statements_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _statementsOcatUpdates :: ([CatalogUpdate])
-              _statementsOlibUpdates :: ([LocalBindingsUpdate])
-              _lhsOannotatedTree :: Root 
-              _lhsOfixedUpIdentifiersTree :: Root 
-              _lhsOoriginalTree :: Root 
-              _lhsOproducedCat :: Catalog
-              _lhsOproducedLib :: LocalBindings
-              _statementsOcat :: Catalog
-              _statementsOidenv :: IDEnv
-              _statementsOlib :: LocalBindings
-              _statementsIannotatedTree :: StatementList 
-              _statementsIfixedUpIdentifiersTree :: StatementList 
-              _statementsIoriginalTree :: StatementList 
-              _statementsIproducedCat :: Catalog
-              _statementsIproducedLib :: LocalBindings
-              -- "./TypeChecking/Statements.ag"(line 107, column 12)
-              _statementsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 108, column 12)
-              _statementsOlibUpdates =
-                  []
-              -- self rule
-              _annotatedTree =
-                  Root _statementsIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Root _statementsIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  Root _statementsIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (up)
-              _lhsOproducedCat =
-                  _statementsIproducedCat
-              -- copy rule (up)
-              _lhsOproducedLib =
-                  _statementsIproducedLib
-              -- copy rule (down)
-              _statementsOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _statementsOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _statementsOlib =
-                  _lhsIlib
-              ( _statementsIannotatedTree,_statementsIfixedUpIdentifiersTree,_statementsIoriginalTree,_statementsIproducedCat,_statementsIproducedLib) =
-                  statements_ _statementsOcat _statementsOcatUpdates _statementsOidenv _statementsOlib _statementsOlibUpdates 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOproducedCat,_lhsOproducedLib)))
--- RowConstraint -----------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-   alternatives:
-      alternative NotNullConstraint:
-         child ann            : {Annotation}
-         child name           : {String}
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative NullConstraint:
-         child ann            : {Annotation}
-         child name           : {String}
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative RowCheckConstraint:
-         child ann            : {Annotation}
-         child name           : {String}
-         child expr           : ScalarExpr 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative RowPrimaryKeyConstraint:
-         child ann            : {Annotation}
-         child name           : {String}
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative RowReferenceConstraint:
-         child ann            : {Annotation}
-         child name           : {String}
-         child table          : {String}
-         child att            : {Maybe String}
-         child onUpdate       : {Cascade}
-         child onDelete       : {Cascade}
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative RowUniqueConstraint:
-         child ann            : {Annotation}
-         child name           : {String}
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-data RowConstraint  = NotNullConstraint (Annotation) (String) 
-                    | NullConstraint (Annotation) (String) 
-                    | RowCheckConstraint (Annotation) (String) (ScalarExpr ) 
-                    | RowPrimaryKeyConstraint (Annotation) (String) 
-                    | RowReferenceConstraint (Annotation) (String) (String) ((Maybe String)) (Cascade) (Cascade) 
-                    | RowUniqueConstraint (Annotation) (String) 
-                    deriving ( Data,Eq,Show,Typeable)
--- cata
-sem_RowConstraint :: RowConstraint  ->
-                     T_RowConstraint 
-sem_RowConstraint (NotNullConstraint _ann _name )  =
-    (sem_RowConstraint_NotNullConstraint _ann _name )
-sem_RowConstraint (NullConstraint _ann _name )  =
-    (sem_RowConstraint_NullConstraint _ann _name )
-sem_RowConstraint (RowCheckConstraint _ann _name _expr )  =
-    (sem_RowConstraint_RowCheckConstraint _ann _name (sem_ScalarExpr _expr ) )
-sem_RowConstraint (RowPrimaryKeyConstraint _ann _name )  =
-    (sem_RowConstraint_RowPrimaryKeyConstraint _ann _name )
-sem_RowConstraint (RowReferenceConstraint _ann _name _table _att _onUpdate _onDelete )  =
-    (sem_RowConstraint_RowReferenceConstraint _ann _name _table _att _onUpdate _onDelete )
-sem_RowConstraint (RowUniqueConstraint _ann _name )  =
-    (sem_RowConstraint_RowUniqueConstraint _ann _name )
--- semantic domain
-type T_RowConstraint  = Catalog ->
-                        IDEnv ->
-                        LocalBindings ->
-                        ( RowConstraint ,RowConstraint ,RowConstraint )
-data Inh_RowConstraint  = Inh_RowConstraint {cat_Inh_RowConstraint :: Catalog,idenv_Inh_RowConstraint :: IDEnv,lib_Inh_RowConstraint :: LocalBindings}
-data Syn_RowConstraint  = Syn_RowConstraint {annotatedTree_Syn_RowConstraint :: RowConstraint ,fixedUpIdentifiersTree_Syn_RowConstraint :: RowConstraint ,originalTree_Syn_RowConstraint :: RowConstraint }
-wrap_RowConstraint :: T_RowConstraint  ->
-                      Inh_RowConstraint  ->
-                      Syn_RowConstraint 
-wrap_RowConstraint sem (Inh_RowConstraint _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_RowConstraint _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
-sem_RowConstraint_NotNullConstraint :: Annotation ->
-                                       String ->
-                                       T_RowConstraint 
-sem_RowConstraint_NotNullConstraint ann_ name_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: RowConstraint 
-              _lhsOfixedUpIdentifiersTree :: RowConstraint 
-              _lhsOoriginalTree :: RowConstraint 
-              -- self rule
-              _annotatedTree =
-                  NotNullConstraint ann_ name_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  NotNullConstraint ann_ name_
-              -- self rule
-              _originalTree =
-                  NotNullConstraint ann_ name_
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
-sem_RowConstraint_NullConstraint :: Annotation ->
-                                    String ->
-                                    T_RowConstraint 
-sem_RowConstraint_NullConstraint ann_ name_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: RowConstraint 
-              _lhsOfixedUpIdentifiersTree :: RowConstraint 
-              _lhsOoriginalTree :: RowConstraint 
-              -- self rule
-              _annotatedTree =
-                  NullConstraint ann_ name_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  NullConstraint ann_ name_
-              -- self rule
-              _originalTree =
-                  NullConstraint ann_ name_
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
-sem_RowConstraint_RowCheckConstraint :: Annotation ->
-                                        String ->
-                                        T_ScalarExpr  ->
-                                        T_RowConstraint 
-sem_RowConstraint_RowCheckConstraint ann_ name_ expr_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _exprOexpectedType :: (Maybe Type)
-              _lhsOannotatedTree :: RowConstraint 
-              _lhsOfixedUpIdentifiersTree :: RowConstraint 
-              _lhsOoriginalTree :: RowConstraint 
-              _exprOcat :: Catalog
-              _exprOidenv :: IDEnv
-              _exprOlib :: LocalBindings
-              _exprIannotatedTree :: ScalarExpr 
-              _exprIfixedUpIdentifiersTree :: ScalarExpr 
-              _exprIoriginalTree :: ScalarExpr 
-              _exprIuType :: (Maybe Type)
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 103, column 26)
-              _exprOexpectedType =
-                  Nothing
-              -- self rule
-              _annotatedTree =
-                  RowCheckConstraint ann_ name_ _exprIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  RowCheckConstraint ann_ name_ _exprIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  RowCheckConstraint ann_ name_ _exprIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _exprOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _exprOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _exprOlib =
-                  _lhsIlib
-              ( _exprIannotatedTree,_exprIfixedUpIdentifiersTree,_exprIoriginalTree,_exprIuType) =
-                  expr_ _exprOcat _exprOexpectedType _exprOidenv _exprOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
-sem_RowConstraint_RowPrimaryKeyConstraint :: Annotation ->
-                                             String ->
-                                             T_RowConstraint 
-sem_RowConstraint_RowPrimaryKeyConstraint ann_ name_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: RowConstraint 
-              _lhsOfixedUpIdentifiersTree :: RowConstraint 
-              _lhsOoriginalTree :: RowConstraint 
-              -- self rule
-              _annotatedTree =
-                  RowPrimaryKeyConstraint ann_ name_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  RowPrimaryKeyConstraint ann_ name_
-              -- self rule
-              _originalTree =
-                  RowPrimaryKeyConstraint ann_ name_
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
-sem_RowConstraint_RowReferenceConstraint :: Annotation ->
-                                            String ->
-                                            String ->
-                                            (Maybe String) ->
-                                            Cascade ->
-                                            Cascade ->
-                                            T_RowConstraint 
-sem_RowConstraint_RowReferenceConstraint ann_ name_ table_ att_ onUpdate_ onDelete_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: RowConstraint 
-              _lhsOfixedUpIdentifiersTree :: RowConstraint 
-              _lhsOoriginalTree :: RowConstraint 
-              -- self rule
-              _annotatedTree =
-                  RowReferenceConstraint ann_ name_ table_ att_ onUpdate_ onDelete_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  RowReferenceConstraint ann_ name_ table_ att_ onUpdate_ onDelete_
-              -- self rule
-              _originalTree =
-                  RowReferenceConstraint ann_ name_ table_ att_ onUpdate_ onDelete_
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
-sem_RowConstraint_RowUniqueConstraint :: Annotation ->
-                                         String ->
-                                         T_RowConstraint 
-sem_RowConstraint_RowUniqueConstraint ann_ name_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: RowConstraint 
-              _lhsOfixedUpIdentifiersTree :: RowConstraint 
-              _lhsOoriginalTree :: RowConstraint 
-              -- self rule
-              _annotatedTree =
-                  RowUniqueConstraint ann_ name_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  RowUniqueConstraint ann_ name_
-              -- self rule
-              _originalTree =
-                  RowUniqueConstraint ann_ name_
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
--- RowConstraintList -------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-   alternatives:
-      alternative Cons:
-         child hd             : RowConstraint 
-         child tl             : RowConstraintList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Nil:
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-type RowConstraintList  = [RowConstraint ]
--- cata
-sem_RowConstraintList :: RowConstraintList  ->
-                         T_RowConstraintList 
-sem_RowConstraintList list  =
-    (Prelude.foldr sem_RowConstraintList_Cons sem_RowConstraintList_Nil (Prelude.map sem_RowConstraint list) )
--- semantic domain
-type T_RowConstraintList  = Catalog ->
-                            IDEnv ->
-                            LocalBindings ->
-                            ( RowConstraintList ,RowConstraintList ,RowConstraintList )
-data Inh_RowConstraintList  = Inh_RowConstraintList {cat_Inh_RowConstraintList :: Catalog,idenv_Inh_RowConstraintList :: IDEnv,lib_Inh_RowConstraintList :: LocalBindings}
-data Syn_RowConstraintList  = Syn_RowConstraintList {annotatedTree_Syn_RowConstraintList :: RowConstraintList ,fixedUpIdentifiersTree_Syn_RowConstraintList :: RowConstraintList ,originalTree_Syn_RowConstraintList :: RowConstraintList }
-wrap_RowConstraintList :: T_RowConstraintList  ->
-                          Inh_RowConstraintList  ->
-                          Syn_RowConstraintList 
-wrap_RowConstraintList sem (Inh_RowConstraintList _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_RowConstraintList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
-sem_RowConstraintList_Cons :: T_RowConstraint  ->
-                              T_RowConstraintList  ->
-                              T_RowConstraintList 
-sem_RowConstraintList_Cons hd_ tl_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: RowConstraintList 
-              _lhsOfixedUpIdentifiersTree :: RowConstraintList 
-              _lhsOoriginalTree :: RowConstraintList 
-              _hdOcat :: Catalog
-              _hdOidenv :: IDEnv
-              _hdOlib :: LocalBindings
-              _tlOcat :: Catalog
-              _tlOidenv :: IDEnv
-              _tlOlib :: LocalBindings
-              _hdIannotatedTree :: RowConstraint 
-              _hdIfixedUpIdentifiersTree :: RowConstraint 
-              _hdIoriginalTree :: RowConstraint 
-              _tlIannotatedTree :: RowConstraintList 
-              _tlIfixedUpIdentifiersTree :: RowConstraintList 
-              _tlIoriginalTree :: RowConstraintList 
-              -- self rule
-              _annotatedTree =
-                  (:) _hdIannotatedTree _tlIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  (:) _hdIoriginalTree _tlIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _hdOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _hdOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _hdOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _tlOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _tlOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _tlOlib =
-                  _lhsIlib
-              ( _hdIannotatedTree,_hdIfixedUpIdentifiersTree,_hdIoriginalTree) =
-                  hd_ _hdOcat _hdOidenv _hdOlib 
-              ( _tlIannotatedTree,_tlIfixedUpIdentifiersTree,_tlIoriginalTree) =
-                  tl_ _tlOcat _tlOidenv _tlOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
-sem_RowConstraintList_Nil :: T_RowConstraintList 
-sem_RowConstraintList_Nil  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: RowConstraintList 
-              _lhsOfixedUpIdentifiersTree :: RowConstraintList 
-              _lhsOoriginalTree :: RowConstraintList 
-              -- self rule
-              _annotatedTree =
-                  []
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  []
-              -- self rule
-              _originalTree =
-                  []
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
--- SQIdentifier ------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-         tbAnnotatedTree      : SQIdentifier 
-         tbUType              : Maybe ([(String,Type)],[(String,Type)])
-   alternatives:
-      alternative SQIdentifier:
-         child ann            : {Annotation}
-         child is             : {[String]}
-         visit 0:
-            local tpe         : {E ([(String,Type)],[(String,Type)])}
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-data SQIdentifier  = SQIdentifier (Annotation) (([String])) 
-                   deriving ( Data,Eq,Show,Typeable)
--- cata
-sem_SQIdentifier :: SQIdentifier  ->
-                    T_SQIdentifier 
-sem_SQIdentifier (SQIdentifier _ann _is )  =
-    (sem_SQIdentifier_SQIdentifier _ann _is )
--- semantic domain
-type T_SQIdentifier  = Catalog ->
-                       IDEnv ->
-                       LocalBindings ->
-                       ( SQIdentifier ,SQIdentifier ,SQIdentifier ,SQIdentifier ,(Maybe ([(String,Type)],[(String,Type)])))
-data Inh_SQIdentifier  = Inh_SQIdentifier {cat_Inh_SQIdentifier :: Catalog,idenv_Inh_SQIdentifier :: IDEnv,lib_Inh_SQIdentifier :: LocalBindings}
-data Syn_SQIdentifier  = Syn_SQIdentifier {annotatedTree_Syn_SQIdentifier :: SQIdentifier ,fixedUpIdentifiersTree_Syn_SQIdentifier :: SQIdentifier ,originalTree_Syn_SQIdentifier :: SQIdentifier ,tbAnnotatedTree_Syn_SQIdentifier :: SQIdentifier ,tbUType_Syn_SQIdentifier :: (Maybe ([(String,Type)],[(String,Type)]))}
-wrap_SQIdentifier :: T_SQIdentifier  ->
-                     Inh_SQIdentifier  ->
-                     Syn_SQIdentifier 
-wrap_SQIdentifier sem (Inh_SQIdentifier _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOtbAnnotatedTree,_lhsOtbUType) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_SQIdentifier _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree _lhsOtbAnnotatedTree _lhsOtbUType ))
-sem_SQIdentifier_SQIdentifier :: Annotation ->
-                                 ([String]) ->
-                                 T_SQIdentifier 
-sem_SQIdentifier_SQIdentifier ann_ is_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _tpe :: (E ([(String,Type)],[(String,Type)]))
-              _lhsOtbUType :: (Maybe ([(String,Type)],[(String,Type)]))
-              _lhsOtbAnnotatedTree :: SQIdentifier 
-              _lhsOannotatedTree :: SQIdentifier 
-              _lhsOfixedUpIdentifiersTree :: SQIdentifier 
-              _lhsOoriginalTree :: SQIdentifier 
-              -- "./TypeChecking/Misc.ag"(line 67, column 9)
-              _tpe =
-                  catCompositeAttrsPair _lhsIcat relationComposites (last is_)
-              -- "./TypeChecking/Misc.ag"(line 68, column 9)
-              _lhsOtbUType =
-                  either (const Nothing) Just _tpe
-              -- "./TypeChecking/Misc.ag"(line 69, column 9)
-              _lhsOtbAnnotatedTree =
-                  updateAnnotation
-                    (\a -> a {errs = errs a ++ tes _tpe    }) _backTree
-              -- "./TypeChecking/Misc.ag"(line 72, column 9)
-              _backTree =
-                  SQIdentifier ann_ is_
-              -- self rule
-              _annotatedTree =
-                  SQIdentifier ann_ is_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  SQIdentifier ann_ is_
-              -- self rule
-              _originalTree =
-                  SQIdentifier ann_ is_
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOtbAnnotatedTree,_lhsOtbUType)))
--- ScalarExpr --------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         expectedType         : Maybe Type
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-         uType                : Maybe Type
-   alternatives:
-      alternative BooleanLit:
-         child ann            : {Annotation}
-         child b              : {Bool}
-         visit 0:
-            local prototype   : {Maybe FunctionPrototype}
-            local tpe         : {Et}
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Case:
-         child ann            : {Annotation}
-         child cases          : CaseScalarExprListScalarExprPairList 
-         child els            : MaybeScalarExpr 
-         visit 0:
-            local prototype   : {Maybe FunctionPrototype}
-            local whenTypes   : _
-            local thenTypes   : _
-            local tpe         : {Et}
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative CaseSimple:
-         child ann            : {Annotation}
-         child value          : ScalarExpr 
-         child cases          : CaseScalarExprListScalarExprPairList 
-         child els            : MaybeScalarExpr 
-         visit 0:
-            local prototype   : {Maybe FunctionPrototype}
-            local whenTypes   : _
-            local thenTypes   : _
-            local tpe         : {Et}
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Cast:
-         child ann            : {Annotation}
-         child expr           : ScalarExpr 
-         child tn             : TypeName 
-         visit 0:
-            local prototype   : {Maybe FunctionPrototype}
-            local tpe         : {Et}
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Exists:
-         child ann            : {Annotation}
-         child sel            : QueryExpr 
-         visit 0:
-            local prototype   : {Maybe FunctionPrototype}
-            local tpe         : {Et}
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Extract:
-         child ann            : {Annotation}
-         child field          : {ExtractField}
-         child e              : ScalarExpr 
-         visit 0:
-            local prototype   : {Maybe FunctionPrototype}
-            local tpe         : {Et}
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative FunCall:
-         child ann            : {Annotation}
-         child funName        : {String}
-         child args           : ScalarExprList 
-         visit 0:
-            local _tup1       : _
-            local tpe         : {Et}
-            local prototype   : _
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Identifier:
-         child ann            : {Annotation}
-         child i              : {String}
-         visit 0:
-            local prototype   : {Maybe FunctionPrototype}
-            local tpe         : {Et}
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative InPredicate:
-         child ann            : {Annotation}
-         child expr           : ScalarExpr 
-         child i              : {Bool}
-         child list           : InList 
-         visit 0:
-            local prototype   : {Maybe FunctionPrototype}
-            local rt          : {Either [TypeError] Type}
-            local tpe         : {Et}
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Interval:
-         child ann            : {Annotation}
-         child value          : {String}
-         child field          : {IntervalField}
-         child prec           : {Maybe Int}
-         visit 0:
-            local prototype   : {Maybe FunctionPrototype}
-            local tpe         : {Et}
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative LiftOperator:
-         child ann            : {Annotation}
-         child oper           : {String}
-         child flav           : {LiftFlavour}
-         child args           : ScalarExprList 
-         visit 0:
-            local prototype   : {Maybe FunctionPrototype}
-            local tpe         : {Et}
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative NullLit:
-         child ann            : {Annotation}
-         visit 0:
-            local prototype   : {Maybe FunctionPrototype}
-            local tpe         : {Et}
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative NumberLit:
-         child ann            : {Annotation}
-         child d              : {String}
-         visit 0:
-            local prototype   : {Maybe FunctionPrototype}
-            local tpe         : {Et}
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Placeholder:
-         child ann            : {Annotation}
-         visit 0:
-            local prototype   : {Maybe FunctionPrototype}
-            local tpe         : {Et}
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative PositionalArg:
-         child ann            : {Annotation}
-         child p              : {Integer}
-         visit 0:
-            local prototype   : {Maybe FunctionPrototype}
-            local tpe         : {Et}
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative QIdentifier:
-         child ann            : {Annotation}
-         child qual           : ScalarExpr 
-         child i              : {String}
-         visit 0:
-            local prototype   : {Maybe FunctionPrototype}
-            local tpe         : {Et}
-            local qid         : {Maybe String}
-            local backTree    : _
-            local qAnnTreeNoUnrec : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative ScalarSubQuery:
-         child ann            : {Annotation}
-         child sel            : QueryExpr 
-         visit 0:
-            local prototype   : {Maybe FunctionPrototype}
-            local tpe         : {Et}
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative StringLit:
-         child ann            : {Annotation}
-         child value          : {String}
-         visit 0:
-            local prototype   : {Maybe FunctionPrototype}
-            local tpe         : {Et}
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative TypedStringLit:
-         child ann            : {Annotation}
-         child tn             : TypeName 
-         child value          : {String}
-         visit 0:
-            local prototype   : {Maybe FunctionPrototype}
-            local tpe         : {Et}
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative WindowFn:
-         child ann            : {Annotation}
-         child fn             : ScalarExpr 
-         child partitionBy    : ScalarExprList 
-         child orderBy        : ScalarExprList 
-         child dir            : {Direction}
-         child frm            : {FrameClause}
-         visit 0:
-            local prototype   : {Maybe FunctionPrototype}
-            local tpe         : {Et}
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-data ScalarExpr  = BooleanLit (Annotation) (Bool) 
-                 | Case (Annotation) (CaseScalarExprListScalarExprPairList ) (MaybeScalarExpr ) 
-                 | CaseSimple (Annotation) (ScalarExpr ) (CaseScalarExprListScalarExprPairList ) (MaybeScalarExpr ) 
-                 | Cast (Annotation) (ScalarExpr ) (TypeName ) 
-                 | Exists (Annotation) (QueryExpr ) 
-                 | Extract (Annotation) (ExtractField) (ScalarExpr ) 
-                 | FunCall (Annotation) (String) (ScalarExprList ) 
-                 | Identifier (Annotation) (String) 
-                 | InPredicate (Annotation) (ScalarExpr ) (Bool) (InList ) 
-                 | Interval (Annotation) (String) (IntervalField) ((Maybe Int)) 
-                 | LiftOperator (Annotation) (String) (LiftFlavour) (ScalarExprList ) 
-                 | NullLit (Annotation) 
-                 | NumberLit (Annotation) (String) 
-                 | Placeholder (Annotation) 
-                 | PositionalArg (Annotation) (Integer) 
-                 | QIdentifier (Annotation) (ScalarExpr ) (String) 
-                 | ScalarSubQuery (Annotation) (QueryExpr ) 
-                 | StringLit (Annotation) (String) 
-                 | TypedStringLit (Annotation) (TypeName ) (String) 
-                 | WindowFn (Annotation) (ScalarExpr ) (ScalarExprList ) (ScalarExprList ) (Direction) (FrameClause) 
-                 deriving ( Data,Eq,Show,Typeable)
--- cata
-sem_ScalarExpr :: ScalarExpr  ->
-                  T_ScalarExpr 
-sem_ScalarExpr (BooleanLit _ann _b )  =
-    (sem_ScalarExpr_BooleanLit _ann _b )
-sem_ScalarExpr (Case _ann _cases _els )  =
-    (sem_ScalarExpr_Case _ann (sem_CaseScalarExprListScalarExprPairList _cases ) (sem_MaybeScalarExpr _els ) )
-sem_ScalarExpr (CaseSimple _ann _value _cases _els )  =
-    (sem_ScalarExpr_CaseSimple _ann (sem_ScalarExpr _value ) (sem_CaseScalarExprListScalarExprPairList _cases ) (sem_MaybeScalarExpr _els ) )
-sem_ScalarExpr (Cast _ann _expr _tn )  =
-    (sem_ScalarExpr_Cast _ann (sem_ScalarExpr _expr ) (sem_TypeName _tn ) )
-sem_ScalarExpr (Exists _ann _sel )  =
-    (sem_ScalarExpr_Exists _ann (sem_QueryExpr _sel ) )
-sem_ScalarExpr (Extract _ann _field _e )  =
-    (sem_ScalarExpr_Extract _ann _field (sem_ScalarExpr _e ) )
-sem_ScalarExpr (FunCall _ann _funName _args )  =
-    (sem_ScalarExpr_FunCall _ann _funName (sem_ScalarExprList _args ) )
-sem_ScalarExpr (Identifier _ann _i )  =
-    (sem_ScalarExpr_Identifier _ann _i )
-sem_ScalarExpr (InPredicate _ann _expr _i _list )  =
-    (sem_ScalarExpr_InPredicate _ann (sem_ScalarExpr _expr ) _i (sem_InList _list ) )
-sem_ScalarExpr (Interval _ann _value _field _prec )  =
-    (sem_ScalarExpr_Interval _ann _value _field _prec )
-sem_ScalarExpr (LiftOperator _ann _oper _flav _args )  =
-    (sem_ScalarExpr_LiftOperator _ann _oper _flav (sem_ScalarExprList _args ) )
-sem_ScalarExpr (NullLit _ann )  =
-    (sem_ScalarExpr_NullLit _ann )
-sem_ScalarExpr (NumberLit _ann _d )  =
-    (sem_ScalarExpr_NumberLit _ann _d )
-sem_ScalarExpr (Placeholder _ann )  =
-    (sem_ScalarExpr_Placeholder _ann )
-sem_ScalarExpr (PositionalArg _ann _p )  =
-    (sem_ScalarExpr_PositionalArg _ann _p )
-sem_ScalarExpr (QIdentifier _ann _qual _i )  =
-    (sem_ScalarExpr_QIdentifier _ann (sem_ScalarExpr _qual ) _i )
-sem_ScalarExpr (ScalarSubQuery _ann _sel )  =
-    (sem_ScalarExpr_ScalarSubQuery _ann (sem_QueryExpr _sel ) )
-sem_ScalarExpr (StringLit _ann _value )  =
-    (sem_ScalarExpr_StringLit _ann _value )
-sem_ScalarExpr (TypedStringLit _ann _tn _value )  =
-    (sem_ScalarExpr_TypedStringLit _ann (sem_TypeName _tn ) _value )
-sem_ScalarExpr (WindowFn _ann _fn _partitionBy _orderBy _dir _frm )  =
-    (sem_ScalarExpr_WindowFn _ann (sem_ScalarExpr _fn ) (sem_ScalarExprList _partitionBy ) (sem_ScalarExprList _orderBy ) _dir _frm )
--- semantic domain
-type T_ScalarExpr  = Catalog ->
-                     (Maybe Type) ->
-                     IDEnv ->
-                     LocalBindings ->
-                     ( ScalarExpr ,ScalarExpr ,ScalarExpr ,(Maybe Type))
-data Inh_ScalarExpr  = Inh_ScalarExpr {cat_Inh_ScalarExpr :: Catalog,expectedType_Inh_ScalarExpr :: (Maybe Type),idenv_Inh_ScalarExpr :: IDEnv,lib_Inh_ScalarExpr :: LocalBindings}
-data Syn_ScalarExpr  = Syn_ScalarExpr {annotatedTree_Syn_ScalarExpr :: ScalarExpr ,fixedUpIdentifiersTree_Syn_ScalarExpr :: ScalarExpr ,originalTree_Syn_ScalarExpr :: ScalarExpr ,uType_Syn_ScalarExpr :: (Maybe Type)}
-wrap_ScalarExpr :: T_ScalarExpr  ->
-                   Inh_ScalarExpr  ->
-                   Syn_ScalarExpr 
-wrap_ScalarExpr sem (Inh_ScalarExpr _lhsIcat _lhsIexpectedType _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType) = sem _lhsIcat _lhsIexpectedType _lhsIidenv _lhsIlib 
-     in  (Syn_ScalarExpr _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree _lhsOuType ))
-sem_ScalarExpr_BooleanLit :: Annotation ->
-                             Bool ->
-                             T_ScalarExpr 
-sem_ScalarExpr_BooleanLit ann_ b_  =
-    (\ _lhsIcat
-       _lhsIexpectedType
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: ScalarExpr 
-              _prototype :: (Maybe FunctionPrototype)
-              _lhsOuType :: (Maybe Type)
-              _tpe :: Et
-              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
-              _lhsOoriginalTree :: ScalarExpr 
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                    (setTypeAddErrorsA _tpe
-                     . \a -> a {fnProt = _prototype
-                               ,infType = msum [_lhsIexpectedType
-                                               ,etmt _tpe
-                                               ,Nothing]}) _backTree
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
-              _prototype =
-                  Nothing
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
-              _lhsOuType =
-                  etmt _tpe
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 155, column 19)
-              _tpe =
-                  Right typeBool
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 165, column 9)
-              _backTree =
-                  BooleanLit ann_ b_
-              -- self rule
-              _annotatedTree =
-                  BooleanLit ann_ b_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  BooleanLit ann_ b_
-              -- self rule
-              _originalTree =
-                  BooleanLit ann_ b_
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
-sem_ScalarExpr_Case :: Annotation ->
-                       T_CaseScalarExprListScalarExprPairList  ->
-                       T_MaybeScalarExpr  ->
-                       T_ScalarExpr 
-sem_ScalarExpr_Case ann_ cases_ els_  =
-    (\ _lhsIcat
-       _lhsIexpectedType
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: ScalarExpr 
-              _prototype :: (Maybe FunctionPrototype)
-              _lhsOuType :: (Maybe Type)
-              _tpe :: Et
-              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
-              _lhsOoriginalTree :: ScalarExpr 
-              _casesOcat :: Catalog
-              _casesOidenv :: IDEnv
-              _casesOlib :: LocalBindings
-              _elsOcat :: Catalog
-              _elsOidenv :: IDEnv
-              _elsOlib :: LocalBindings
-              _casesIannotatedTree :: CaseScalarExprListScalarExprPairList 
-              _casesIfixedUpIdentifiersTree :: CaseScalarExprListScalarExprPairList 
-              _casesIoriginalTree :: CaseScalarExprListScalarExprPairList 
-              _casesIthenTypes :: ([Maybe Type])
-              _casesIwhenTypes :: ([[Maybe Type]])
-              _elsIannotatedTree :: MaybeScalarExpr 
-              _elsIfixedUpIdentifiersTree :: MaybeScalarExpr 
-              _elsIoriginalTree :: MaybeScalarExpr 
-              _elsIuType :: (Maybe Type)
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                    (setTypeAddErrorsA _tpe
-                     . \a -> a {fnProt = _prototype
-                               ,infType = msum [_lhsIexpectedType
-                                               ,etmt _tpe
-                                               ,Nothing]}) _backTree
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
-              _prototype =
-                  Nothing
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
-              _lhsOuType =
-                  etmt _tpe
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 276, column 9)
-              _whenTypes =
-                  _casesIwhenTypes
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 277, column 9)
-              _thenTypes =
-                  _casesIthenTypes ++ maybe [] ((:[]) . Just) _elsIuType
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 281, column 9)
-              _tpe =
-                  do
-                  wt <- mapM lmt $ concat _whenTypes
-                  errorWhen (any (/= typeBool) wt)
-                      [WrongTypes typeBool wt]
-                  tt <- mapM lmt _thenTypes
-                  resolveResultSetType _lhsIcat tt
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 289, column 9)
-              _backTree =
-                  Case ann_ _casesIannotatedTree _elsIannotatedTree
-              -- self rule
-              _annotatedTree =
-                  Case ann_ _casesIannotatedTree _elsIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Case ann_ _casesIfixedUpIdentifiersTree _elsIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  Case ann_ _casesIoriginalTree _elsIoriginalTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _casesOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _casesOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _casesOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _elsOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _elsOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _elsOlib =
-                  _lhsIlib
-              ( _casesIannotatedTree,_casesIfixedUpIdentifiersTree,_casesIoriginalTree,_casesIthenTypes,_casesIwhenTypes) =
-                  cases_ _casesOcat _casesOidenv _casesOlib 
-              ( _elsIannotatedTree,_elsIfixedUpIdentifiersTree,_elsIoriginalTree,_elsIuType) =
-                  els_ _elsOcat _elsOidenv _elsOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
-sem_ScalarExpr_CaseSimple :: Annotation ->
-                             T_ScalarExpr  ->
-                             T_CaseScalarExprListScalarExprPairList  ->
-                             T_MaybeScalarExpr  ->
-                             T_ScalarExpr 
-sem_ScalarExpr_CaseSimple ann_ value_ cases_ els_  =
-    (\ _lhsIcat
-       _lhsIexpectedType
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: ScalarExpr 
-              _prototype :: (Maybe FunctionPrototype)
-              _lhsOuType :: (Maybe Type)
-              _tpe :: Et
-              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
-              _lhsOoriginalTree :: ScalarExpr 
-              _valueOcat :: Catalog
-              _valueOexpectedType :: (Maybe Type)
-              _valueOidenv :: IDEnv
-              _valueOlib :: LocalBindings
-              _casesOcat :: Catalog
-              _casesOidenv :: IDEnv
-              _casesOlib :: LocalBindings
-              _elsOcat :: Catalog
-              _elsOidenv :: IDEnv
-              _elsOlib :: LocalBindings
-              _valueIannotatedTree :: ScalarExpr 
-              _valueIfixedUpIdentifiersTree :: ScalarExpr 
-              _valueIoriginalTree :: ScalarExpr 
-              _valueIuType :: (Maybe Type)
-              _casesIannotatedTree :: CaseScalarExprListScalarExprPairList 
-              _casesIfixedUpIdentifiersTree :: CaseScalarExprListScalarExprPairList 
-              _casesIoriginalTree :: CaseScalarExprListScalarExprPairList 
-              _casesIthenTypes :: ([Maybe Type])
-              _casesIwhenTypes :: ([[Maybe Type]])
-              _elsIannotatedTree :: MaybeScalarExpr 
-              _elsIfixedUpIdentifiersTree :: MaybeScalarExpr 
-              _elsIoriginalTree :: MaybeScalarExpr 
-              _elsIuType :: (Maybe Type)
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                    (setTypeAddErrorsA _tpe
-                     . \a -> a {fnProt = _prototype
-                               ,infType = msum [_lhsIexpectedType
-                                               ,etmt _tpe
-                                               ,Nothing]}) _backTree
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
-              _prototype =
-                  Nothing
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
-              _lhsOuType =
-                  etmt _tpe
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 276, column 9)
-              _whenTypes =
-                  _casesIwhenTypes
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 277, column 9)
-              _thenTypes =
-                  _casesIthenTypes ++ maybe [] ((:[]) . Just) _elsIuType
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 294, column 9)
-              _tpe =
-                  do
-                  wt <- mapM lmt $ concat _whenTypes
-                  vt <- lmt _valueIuType
-                  _ <- resolveResultSetType _lhsIcat (vt : wt)
-                  tt <- mapM lmt _thenTypes
-                  resolveResultSetType _lhsIcat tt
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 301, column 9)
-              _backTree =
-                  CaseSimple ann_
-                             _valueIannotatedTree
-                             _casesIannotatedTree
-                             _elsIannotatedTree
-              -- self rule
-              _annotatedTree =
-                  CaseSimple ann_ _valueIannotatedTree _casesIannotatedTree _elsIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  CaseSimple ann_ _valueIfixedUpIdentifiersTree _casesIfixedUpIdentifiersTree _elsIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  CaseSimple ann_ _valueIoriginalTree _casesIoriginalTree _elsIoriginalTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _valueOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _valueOexpectedType =
-                  _lhsIexpectedType
-              -- copy rule (down)
-              _valueOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _valueOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _casesOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _casesOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _casesOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _elsOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _elsOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _elsOlib =
-                  _lhsIlib
-              ( _valueIannotatedTree,_valueIfixedUpIdentifiersTree,_valueIoriginalTree,_valueIuType) =
-                  value_ _valueOcat _valueOexpectedType _valueOidenv _valueOlib 
-              ( _casesIannotatedTree,_casesIfixedUpIdentifiersTree,_casesIoriginalTree,_casesIthenTypes,_casesIwhenTypes) =
-                  cases_ _casesOcat _casesOidenv _casesOlib 
-              ( _elsIannotatedTree,_elsIfixedUpIdentifiersTree,_elsIoriginalTree,_elsIuType) =
-                  els_ _elsOcat _elsOidenv _elsOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
-sem_ScalarExpr_Cast :: Annotation ->
-                       T_ScalarExpr  ->
-                       T_TypeName  ->
-                       T_ScalarExpr 
-sem_ScalarExpr_Cast ann_ expr_ tn_  =
-    (\ _lhsIcat
-       _lhsIexpectedType
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: ScalarExpr 
-              _prototype :: (Maybe FunctionPrototype)
-              _lhsOuType :: (Maybe Type)
-              _tpe :: Et
-              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
-              _lhsOoriginalTree :: ScalarExpr 
-              _exprOcat :: Catalog
-              _exprOexpectedType :: (Maybe Type)
-              _exprOidenv :: IDEnv
-              _exprOlib :: LocalBindings
-              _tnOcat :: Catalog
-              _tnOidenv :: IDEnv
-              _tnOlib :: LocalBindings
-              _exprIannotatedTree :: ScalarExpr 
-              _exprIfixedUpIdentifiersTree :: ScalarExpr 
-              _exprIoriginalTree :: ScalarExpr 
-              _exprIuType :: (Maybe Type)
-              _tnIannotatedTree :: TypeName 
-              _tnIfixedUpIdentifiersTree :: TypeName 
-              _tnInamedType :: (Maybe Type)
-              _tnIoriginalTree :: TypeName 
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                    (setTypeAddErrorsA _tpe
-                     . \a -> a {fnProt = _prototype
-                               ,infType = msum [_lhsIexpectedType
-                                               ,etmt _tpe
-                                               ,Nothing]}) _backTree
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
-              _prototype =
-                  Nothing
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
-              _lhsOuType =
-                  etmt _tpe
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 182, column 12)
-              _tpe =
-                  lmt _tnInamedType
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 183, column 12)
-              _backTree =
-                  Cast ann_ _exprIannotatedTree _tnIannotatedTree
-              -- self rule
-              _annotatedTree =
-                  Cast ann_ _exprIannotatedTree _tnIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Cast ann_ _exprIfixedUpIdentifiersTree _tnIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  Cast ann_ _exprIoriginalTree _tnIoriginalTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _exprOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _exprOexpectedType =
-                  _lhsIexpectedType
-              -- copy rule (down)
-              _exprOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _exprOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _tnOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _tnOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _tnOlib =
-                  _lhsIlib
-              ( _exprIannotatedTree,_exprIfixedUpIdentifiersTree,_exprIoriginalTree,_exprIuType) =
-                  expr_ _exprOcat _exprOexpectedType _exprOidenv _exprOlib 
-              ( _tnIannotatedTree,_tnIfixedUpIdentifiersTree,_tnInamedType,_tnIoriginalTree) =
-                  tn_ _tnOcat _tnOidenv _tnOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
-sem_ScalarExpr_Exists :: Annotation ->
-                         T_QueryExpr  ->
-                         T_ScalarExpr 
-sem_ScalarExpr_Exists ann_ sel_  =
-    (\ _lhsIcat
-       _lhsIexpectedType
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: ScalarExpr 
-              _prototype :: (Maybe FunctionPrototype)
-              _lhsOuType :: (Maybe Type)
-              _tpe :: Et
-              _selOcsql :: LocalBindings
-              _selOexpectedTypes :: ([Maybe Type])
-              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
-              _lhsOoriginalTree :: ScalarExpr 
-              _selOcat :: Catalog
-              _selOidenv :: IDEnv
-              _selOlib :: LocalBindings
-              _selIannotatedTree :: QueryExpr 
-              _selIcidenv :: IDEnv
-              _selIfixedUpIdentifiersTree :: QueryExpr 
-              _selIlibUpdates :: ([LocalBindingsUpdate])
-              _selIoriginalTree :: QueryExpr 
-              _selIuType :: (Maybe [(String,Type)])
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                    (setTypeAddErrorsA _tpe
-                     . \a -> a {fnProt = _prototype
-                               ,infType = msum [_lhsIexpectedType
-                                               ,etmt _tpe
-                                               ,Nothing]}) _backTree
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
-              _prototype =
-                  Nothing
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
-              _lhsOuType =
-                  etmt _tpe
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 355, column 9)
-              _tpe =
-                  Right typeBool
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 356, column 9)
-              _backTree =
-                  Exists ann_ _selIannotatedTree
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 379, column 9)
-              _selOcsql =
-                  _lhsIlib
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 171, column 29)
-              _selOexpectedTypes =
-                  []
-              -- self rule
-              _annotatedTree =
-                  Exists ann_ _selIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Exists ann_ _selIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  Exists ann_ _selIoriginalTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _selOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _selOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _selOlib =
-                  _lhsIlib
-              ( _selIannotatedTree,_selIcidenv,_selIfixedUpIdentifiersTree,_selIlibUpdates,_selIoriginalTree,_selIuType) =
-                  sel_ _selOcat _selOcsql _selOexpectedTypes _selOidenv _selOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
-sem_ScalarExpr_Extract :: Annotation ->
-                          ExtractField ->
-                          T_ScalarExpr  ->
-                          T_ScalarExpr 
-sem_ScalarExpr_Extract ann_ field_ e_  =
-    (\ _lhsIcat
-       _lhsIexpectedType
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: ScalarExpr 
-              _prototype :: (Maybe FunctionPrototype)
-              _lhsOuType :: (Maybe Type)
-              _tpe :: Et
-              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
-              _lhsOoriginalTree :: ScalarExpr 
-              _eOcat :: Catalog
-              _eOexpectedType :: (Maybe Type)
-              _eOidenv :: IDEnv
-              _eOlib :: LocalBindings
-              _eIannotatedTree :: ScalarExpr 
-              _eIfixedUpIdentifiersTree :: ScalarExpr 
-              _eIoriginalTree :: ScalarExpr 
-              _eIuType :: (Maybe Type)
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                    (setTypeAddErrorsA _tpe
-                     . \a -> a {fnProt = _prototype
-                               ,infType = msum [_lhsIexpectedType
-                                               ,etmt _tpe
-                                               ,Nothing]}) _backTree
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
-              _prototype =
-                  Nothing
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
-              _lhsOuType =
-                  etmt _tpe
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 424, column 9)
-              _tpe =
-                  do
-                  x <- lmt _eIuType
-                  if x == typeDate
-                    then Right typeFloat8
-                    else Left [NoMatchingOperator "extract" [x]]
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 429, column 9)
-              _backTree =
-                  Extract ann_ field_ _eIannotatedTree
-              -- self rule
-              _annotatedTree =
-                  Extract ann_ field_ _eIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Extract ann_ field_ _eIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  Extract ann_ field_ _eIoriginalTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _eOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _eOexpectedType =
-                  _lhsIexpectedType
-              -- copy rule (down)
-              _eOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _eOlib =
-                  _lhsIlib
-              ( _eIannotatedTree,_eIfixedUpIdentifiersTree,_eIoriginalTree,_eIuType) =
-                  e_ _eOcat _eOexpectedType _eOidenv _eOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
-sem_ScalarExpr_FunCall :: Annotation ->
-                          String ->
-                          T_ScalarExprList  ->
-                          T_ScalarExpr 
-sem_ScalarExpr_FunCall ann_ funName_ args_  =
-    (\ _lhsIcat
-       _lhsIexpectedType
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: ScalarExpr 
-              _lhsOuType :: (Maybe Type)
-              _tpe :: Et
-              _argsOexpectedTypes :: ([Maybe Type])
-              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
-              _lhsOoriginalTree :: ScalarExpr 
-              _argsOcat :: Catalog
-              _argsOidenv :: IDEnv
-              _argsOlib :: LocalBindings
-              _argsIannotatedTree :: ScalarExprList 
-              _argsIfixedUpIdentifiersTree :: ScalarExprList 
-              _argsIoriginalTree :: ScalarExprList 
-              _argsIuType :: ([Maybe Type])
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                    (setTypeAddErrorsA _tpe
-                     . \a -> a {fnProt = _prototype
-                               ,infType = msum [_lhsIexpectedType
-                                               ,etmt _tpe
-                                               ,Nothing]}) _backTree
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
-              _lhsOuType =
-                  etmt _tpe
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 196, column 9)
-              __tup1 =
-                  either (\e -> (Left e, Nothing)) id $ do
-                  args <- mapM lmt _argsIuType
-                  efp <- findCallMatch _lhsIcat
-                                       funName_
-                                       args
-                  let (_,_,r,_) = efp
-                  return (Right r, Just efp)
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 196, column 9)
-              (_tpe,_) =
-                  __tup1
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 196, column 9)
-              (_,_prototype) =
-                  __tup1
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 206, column 9)
-              _backTree =
-                  FunCall ann_ funName_ _argsIannotatedTree
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 130, column 9)
-              _argsOexpectedTypes =
-                  maybe [] id $
-                  case (funName_,_lhsIexpectedType) of
-                    ("!rowctor", Just (AnonymousRecordType ts)) -> return $ map Just ts
-                    _ -> do
-                         (_,t,_,_) <- _prototype
-                         return $ map Just t
-              -- self rule
-              _annotatedTree =
-                  FunCall ann_ funName_ _argsIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  FunCall ann_ funName_ _argsIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  FunCall ann_ funName_ _argsIoriginalTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _argsOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _argsOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _argsOlib =
-                  _lhsIlib
-              ( _argsIannotatedTree,_argsIfixedUpIdentifiersTree,_argsIoriginalTree,_argsIuType) =
-                  args_ _argsOcat _argsOexpectedTypes _argsOidenv _argsOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
-sem_ScalarExpr_Identifier :: Annotation ->
-                             String ->
-                             T_ScalarExpr 
-sem_ScalarExpr_Identifier ann_ i_  =
-    (\ _lhsIcat
-       _lhsIexpectedType
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOfixedUpIdentifiersTree :: ScalarExpr 
-              _lhsOannotatedTree :: ScalarExpr 
-              _prototype :: (Maybe FunctionPrototype)
-              _lhsOuType :: (Maybe Type)
-              _tpe :: Et
-              _lhsOoriginalTree :: ScalarExpr 
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 131, column 9)
-              _lhsOfixedUpIdentifiersTree =
-                  case qualifyID _lhsIidenv i_ of
-                    Nothing -> Identifier ann_ i_
-                    Just (t,i) -> QIdentifier ann_ (Identifier ann_ t) i
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                    (setTypeAddErrorsA _tpe
-                     . \a -> a {fnProt = _prototype
-                               ,infType = msum [_lhsIexpectedType
-                                               ,etmt _tpe
-                                               ,Nothing]}) _backTree
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
-              _prototype =
-                  Nothing
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
-              _lhsOuType =
-                  etmt _tpe
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 314, column 9)
-              _tpe =
-                  case lookupLocalBinding _lhsIlib "" i_ of
-                                        Right Nothing -> Left []
-                                        Right (Just t) -> Right t
-                                        Left e -> Left e
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 319, column 9)
-              _backTree =
-                  Identifier ann_ i_
-              -- self rule
-              _annotatedTree =
-                  Identifier ann_ i_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Identifier ann_ i_
-              -- self rule
-              _originalTree =
-                  Identifier ann_ i_
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
-sem_ScalarExpr_InPredicate :: Annotation ->
-                              T_ScalarExpr  ->
-                              Bool ->
-                              T_InList  ->
-                              T_ScalarExpr 
-sem_ScalarExpr_InPredicate ann_ expr_ i_ list_  =
-    (\ _lhsIcat
-       _lhsIexpectedType
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: ScalarExpr 
-              _prototype :: (Maybe FunctionPrototype)
-              _lhsOuType :: (Maybe Type)
-              _rt :: (Either [TypeError] Type)
-              _tpe :: Et
-              _listOexpectedType :: (Maybe Type)
-              _exprOexpectedType :: (Maybe Type)
-              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
-              _lhsOoriginalTree :: ScalarExpr 
-              _exprOcat :: Catalog
-              _exprOidenv :: IDEnv
-              _exprOlib :: LocalBindings
-              _listOcat :: Catalog
-              _listOidenv :: IDEnv
-              _listOlib :: LocalBindings
-              _exprIannotatedTree :: ScalarExpr 
-              _exprIfixedUpIdentifiersTree :: ScalarExpr 
-              _exprIoriginalTree :: ScalarExpr 
-              _exprIuType :: (Maybe Type)
-              _listIannotatedTree :: InList 
-              _listIfixedUpIdentifiersTree :: InList 
-              _listIlistType :: (Either [TypeError] Type)
-              _listIoriginalTree :: InList 
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                    (setTypeAddErrorsA _tpe
-                     . \a -> a {fnProt = _prototype
-                               ,infType = msum [_lhsIexpectedType
-                                               ,etmt _tpe
-                                               ,Nothing]}) _backTree
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
-              _prototype =
-                  Nothing
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
-              _lhsOuType =
-                  etmt _tpe
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 388, column 9)
-              _rt =
-                  do
-                  lt <- _listIlistType
-                  expt <- lmt _exprIuType
-                  resolveResultSetType _lhsIcat [expt, lt]
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 392, column 9)
-              _tpe =
-                  do
-                  _ <- _rt
-                  return typeBool
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 395, column 9)
-              _listOexpectedType =
-                  etmt _rt
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 396, column 9)
-              _exprOexpectedType =
-                  etmt _rt
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 397, column 9)
-              _backTree =
-                  InPredicate ann_
-                              _exprIannotatedTree
-                              i_
-                              _listIannotatedTree
-              -- self rule
-              _annotatedTree =
-                  InPredicate ann_ _exprIannotatedTree i_ _listIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  InPredicate ann_ _exprIfixedUpIdentifiersTree i_ _listIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  InPredicate ann_ _exprIoriginalTree i_ _listIoriginalTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _exprOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _exprOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _exprOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _listOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _listOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _listOlib =
-                  _lhsIlib
-              ( _exprIannotatedTree,_exprIfixedUpIdentifiersTree,_exprIoriginalTree,_exprIuType) =
-                  expr_ _exprOcat _exprOexpectedType _exprOidenv _exprOlib 
-              ( _listIannotatedTree,_listIfixedUpIdentifiersTree,_listIlistType,_listIoriginalTree) =
-                  list_ _listOcat _listOexpectedType _listOidenv _listOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
-sem_ScalarExpr_Interval :: Annotation ->
-                           String ->
-                           IntervalField ->
-                           (Maybe Int) ->
-                           T_ScalarExpr 
-sem_ScalarExpr_Interval ann_ value_ field_ prec_  =
-    (\ _lhsIcat
-       _lhsIexpectedType
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: ScalarExpr 
-              _prototype :: (Maybe FunctionPrototype)
-              _lhsOuType :: (Maybe Type)
-              _tpe :: Et
-              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
-              _lhsOoriginalTree :: ScalarExpr 
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                    (setTypeAddErrorsA _tpe
-                     . \a -> a {fnProt = _prototype
-                               ,infType = msum [_lhsIexpectedType
-                                               ,etmt _tpe
-                                               ,Nothing]}) _backTree
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
-              _prototype =
-                  Nothing
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
-              _lhsOuType =
-                  etmt _tpe
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 170, column 16)
-              _tpe =
-                  Right $ ScalarType "interval"
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 171, column 16)
-              _backTree =
-                  Interval ann_ value_ field_ prec_
-              -- self rule
-              _annotatedTree =
-                  Interval ann_ value_ field_ prec_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Interval ann_ value_ field_ prec_
-              -- self rule
-              _originalTree =
-                  Interval ann_ value_ field_ prec_
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
-sem_ScalarExpr_LiftOperator :: Annotation ->
-                               String ->
-                               LiftFlavour ->
-                               T_ScalarExprList  ->
-                               T_ScalarExpr 
-sem_ScalarExpr_LiftOperator ann_ oper_ flav_ args_  =
-    (\ _lhsIcat
-       _lhsIexpectedType
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: ScalarExpr 
-              _prototype :: (Maybe FunctionPrototype)
-              _lhsOuType :: (Maybe Type)
-              _tpe :: Et
-              _argsOexpectedTypes :: ([Maybe Type])
-              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
-              _lhsOoriginalTree :: ScalarExpr 
-              _argsOcat :: Catalog
-              _argsOidenv :: IDEnv
-              _argsOlib :: LocalBindings
-              _argsIannotatedTree :: ScalarExprList 
-              _argsIfixedUpIdentifiersTree :: ScalarExprList 
-              _argsIoriginalTree :: ScalarExprList 
-              _argsIuType :: ([Maybe Type])
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                    (setTypeAddErrorsA _tpe
-                     . \a -> a {fnProt = _prototype
-                               ,infType = msum [_lhsIexpectedType
-                                               ,etmt _tpe
-                                               ,Nothing]}) _backTree
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
-              _prototype =
-                  Nothing
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
-              _lhsOuType =
-                  etmt _tpe
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 229, column 9)
-              _tpe =
-                  do
-                  at <- mapM lmt _argsIuType
-                  errorWhen (length at /= 2)
-                            [AnyAllError $ "must have two args, got " ++ show at]
-                  let [aType,bType] = at
-                  errorWhen (not $ isArrayType bType)
-                            [AnyAllError $ "second arg must be array, got " ++ show at]
-                  elemType <- unwrapArray $ bType
-                  resType <- fmap (\(_,_,r,_) -> r) $ findCallMatch _lhsIcat
-                                                                    oper_
-                                                                    [aType,elemType]
-                  errorWhen (resType /= typeBool)
-                            [AnyAllError $ "operator must have bool return, got " ++ show resType]
-                  return resType
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 243, column 9)
-              _backTree =
-                  LiftOperator ann_ oper_ flav_ _argsIannotatedTree
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 138, column 9)
-              _argsOexpectedTypes =
-                  []
-              -- self rule
-              _annotatedTree =
-                  LiftOperator ann_ oper_ flav_ _argsIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  LiftOperator ann_ oper_ flav_ _argsIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  LiftOperator ann_ oper_ flav_ _argsIoriginalTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _argsOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _argsOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _argsOlib =
-                  _lhsIlib
-              ( _argsIannotatedTree,_argsIfixedUpIdentifiersTree,_argsIoriginalTree,_argsIuType) =
-                  args_ _argsOcat _argsOexpectedTypes _argsOidenv _argsOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
-sem_ScalarExpr_NullLit :: Annotation ->
-                          T_ScalarExpr 
-sem_ScalarExpr_NullLit ann_  =
-    (\ _lhsIcat
-       _lhsIexpectedType
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: ScalarExpr 
-              _prototype :: (Maybe FunctionPrototype)
-              _lhsOuType :: (Maybe Type)
-              _tpe :: Et
-              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
-              _lhsOoriginalTree :: ScalarExpr 
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                    (setTypeAddErrorsA _tpe
-                     . \a -> a {fnProt = _prototype
-                               ,infType = msum [_lhsIexpectedType
-                                               ,etmt _tpe
-                                               ,Nothing]}) _backTree
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
-              _prototype =
-                  Nothing
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
-              _lhsOuType =
-                  etmt _tpe
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 157, column 16)
-              _tpe =
-                  Right UnknownType
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 167, column 9)
-              _backTree =
-                  NullLit ann_
-              -- self rule
-              _annotatedTree =
-                  NullLit ann_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  NullLit ann_
-              -- self rule
-              _originalTree =
-                  NullLit ann_
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
-sem_ScalarExpr_NumberLit :: Annotation ->
-                            String ->
-                            T_ScalarExpr 
-sem_ScalarExpr_NumberLit ann_ d_  =
-    (\ _lhsIcat
-       _lhsIexpectedType
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: ScalarExpr 
-              _prototype :: (Maybe FunctionPrototype)
-              _lhsOuType :: (Maybe Type)
-              _tpe :: Et
-              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
-              _lhsOoriginalTree :: ScalarExpr 
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                    (setTypeAddErrorsA _tpe
-                     . \a -> a {fnProt = _prototype
-                               ,infType = msum [_lhsIexpectedType
-                                               ,etmt _tpe
-                                               ,Nothing]}) _backTree
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
-              _prototype =
-                  Nothing
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
-              _lhsOuType =
-                  etmt _tpe
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 149, column 18)
-              _tpe =
-                  if all (`elem` digChars) d_
-                  then Right typeInt
-                  else Right typeNumeric
-                  where
-                    digChars = concatMap show [(0::Int)..9]
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 161, column 9)
-              _backTree =
-                  NumberLit ann_ d_
-              -- self rule
-              _annotatedTree =
-                  NumberLit ann_ d_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  NumberLit ann_ d_
-              -- self rule
-              _originalTree =
-                  NumberLit ann_ d_
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
-sem_ScalarExpr_Placeholder :: Annotation ->
-                              T_ScalarExpr 
-sem_ScalarExpr_Placeholder ann_  =
-    (\ _lhsIcat
-       _lhsIexpectedType
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: ScalarExpr 
-              _prototype :: (Maybe FunctionPrototype)
-              _lhsOuType :: (Maybe Type)
-              _tpe :: Et
-              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
-              _lhsOoriginalTree :: ScalarExpr 
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                    (setTypeAddErrorsA _tpe
-                     . \a -> a {fnProt = _prototype
-                               ,infType = msum [_lhsIexpectedType
-                                               ,etmt _tpe
-                                               ,Nothing]}) _backTree
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
-              _prototype =
-                  Nothing
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
-              _lhsOuType =
-                  etmt _tpe
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 349, column 9)
-              _tpe =
-                  Right UnknownType
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 350, column 9)
-              _backTree =
-                  Placeholder ann_
-              -- self rule
-              _annotatedTree =
-                  Placeholder ann_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Placeholder ann_
-              -- self rule
-              _originalTree =
-                  Placeholder ann_
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
-sem_ScalarExpr_PositionalArg :: Annotation ->
-                                Integer ->
-                                T_ScalarExpr 
-sem_ScalarExpr_PositionalArg ann_ p_  =
-    (\ _lhsIcat
-       _lhsIexpectedType
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: ScalarExpr 
-              _prototype :: (Maybe FunctionPrototype)
-              _lhsOuType :: (Maybe Type)
-              _tpe :: Et
-              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
-              _lhsOoriginalTree :: ScalarExpr 
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                    (setTypeAddErrorsA _tpe
-                     . \a -> a {fnProt = _prototype
-                               ,infType = msum [_lhsIexpectedType
-                                               ,etmt _tpe
-                                               ,Nothing]}) _backTree
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
-              _prototype =
-                  Nothing
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
-              _lhsOuType =
-                  etmt _tpe
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 343, column 9)
-              _tpe =
-                  unwrapLookup <$> lbLookupID _lhsIlib ['$':show p_]
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 344, column 9)
-              _backTree =
-                  PositionalArg ann_ p_
-              -- self rule
-              _annotatedTree =
-                  PositionalArg ann_ p_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  PositionalArg ann_ p_
-              -- self rule
-              _originalTree =
-                  PositionalArg ann_ p_
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
-sem_ScalarExpr_QIdentifier :: Annotation ->
-                              T_ScalarExpr  ->
-                              String ->
-                              T_ScalarExpr 
-sem_ScalarExpr_QIdentifier ann_ qual_ i_  =
-    (\ _lhsIcat
-       _lhsIexpectedType
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOfixedUpIdentifiersTree :: ScalarExpr 
-              _lhsOannotatedTree :: ScalarExpr 
-              _prototype :: (Maybe FunctionPrototype)
-              _lhsOuType :: (Maybe Type)
-              _tpe :: Et
-              _qid :: (Maybe String)
-              _lhsOoriginalTree :: ScalarExpr 
-              _qualOcat :: Catalog
-              _qualOexpectedType :: (Maybe Type)
-              _qualOidenv :: IDEnv
-              _qualOlib :: LocalBindings
-              _qualIannotatedTree :: ScalarExpr 
-              _qualIfixedUpIdentifiersTree :: ScalarExpr 
-              _qualIoriginalTree :: ScalarExpr 
-              _qualIuType :: (Maybe Type)
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 137, column 9)
-              _lhsOfixedUpIdentifiersTree =
-                  QIdentifier ann_ _qualIoriginalTree i_
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                    (setTypeAddErrorsA _tpe
-                     . \a -> a {fnProt = _prototype
-                               ,infType = msum [_lhsIexpectedType
-                                               ,etmt _tpe
-                                               ,Nothing]}) _backTree
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
-              _prototype =
-                  Nothing
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
-              _lhsOuType =
-                  etmt _tpe
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 321, column 9)
-              _tpe =
-                  case _qid     of
-                            Nothing -> Left [InternalError "dot selection not implemented"]
-                            Just q -> case lookupLocalBinding _lhsIlib q i_ of
-                                        Right Nothing -> Left []
-                                        Right (Just t) -> Right t
-                                        Left e -> Left e
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 334, column 9)
-              _qid =
-                  case _backTree     of
-                     QIdentifier _ (Identifier _ q) _ -> Just q
-                     _ -> Nothing
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 337, column 9)
-              _backTree =
-                  QIdentifier ann_ _qAnnTreeNoUnrec     i_
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 339, column 9)
-              _qAnnTreeNoUnrec =
-                  updateAnnotation (\a -> a {errs = []}) _qualIannotatedTree
-              -- self rule
-              _annotatedTree =
-                  QIdentifier ann_ _qualIannotatedTree i_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  QIdentifier ann_ _qualIfixedUpIdentifiersTree i_
-              -- self rule
-              _originalTree =
-                  QIdentifier ann_ _qualIoriginalTree i_
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _qualOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _qualOexpectedType =
-                  _lhsIexpectedType
-              -- copy rule (down)
-              _qualOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _qualOlib =
-                  _lhsIlib
-              ( _qualIannotatedTree,_qualIfixedUpIdentifiersTree,_qualIoriginalTree,_qualIuType) =
-                  qual_ _qualOcat _qualOexpectedType _qualOidenv _qualOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
-sem_ScalarExpr_ScalarSubQuery :: Annotation ->
-                                 T_QueryExpr  ->
-                                 T_ScalarExpr 
-sem_ScalarExpr_ScalarSubQuery ann_ sel_  =
-    (\ _lhsIcat
-       _lhsIexpectedType
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: ScalarExpr 
-              _prototype :: (Maybe FunctionPrototype)
-              _lhsOuType :: (Maybe Type)
-              _tpe :: Et
-              _selOcsql :: LocalBindings
-              _selOexpectedTypes :: ([Maybe Type])
-              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
-              _lhsOoriginalTree :: ScalarExpr 
-              _selOcat :: Catalog
-              _selOidenv :: IDEnv
-              _selOlib :: LocalBindings
-              _selIannotatedTree :: QueryExpr 
-              _selIcidenv :: IDEnv
-              _selIfixedUpIdentifiersTree :: QueryExpr 
-              _selIlibUpdates :: ([LocalBindingsUpdate])
-              _selIoriginalTree :: QueryExpr 
-              _selIuType :: (Maybe [(String,Type)])
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                    (setTypeAddErrorsA _tpe
-                     . \a -> a {fnProt = _prototype
-                               ,infType = msum [_lhsIexpectedType
-                                               ,etmt _tpe
-                                               ,Nothing]}) _backTree
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
-              _prototype =
-                  Nothing
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
-              _lhsOuType =
-                  etmt _tpe
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 367, column 9)
-              _tpe =
-                  do
-                  selType <- lmt (map snd <$> _selIuType)
-                  case length selType of
-                    0 -> Left [InternalError "no columns in scalar subquery?"]
-                    1 -> Right $ head selType
-                    _ -> Right $ AnonymousRecordType selType
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 375, column 9)
-              _backTree =
-                  ScalarSubQuery ann_ _selIannotatedTree
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 377, column 9)
-              _selOcsql =
-                  _lhsIlib
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 171, column 29)
-              _selOexpectedTypes =
-                  []
-              -- self rule
-              _annotatedTree =
-                  ScalarSubQuery ann_ _selIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  ScalarSubQuery ann_ _selIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  ScalarSubQuery ann_ _selIoriginalTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _selOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _selOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _selOlib =
-                  _lhsIlib
-              ( _selIannotatedTree,_selIcidenv,_selIfixedUpIdentifiersTree,_selIlibUpdates,_selIoriginalTree,_selIuType) =
-                  sel_ _selOcat _selOcsql _selOexpectedTypes _selOidenv _selOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
-sem_ScalarExpr_StringLit :: Annotation ->
-                            String ->
-                            T_ScalarExpr 
-sem_ScalarExpr_StringLit ann_ value_  =
-    (\ _lhsIcat
-       _lhsIexpectedType
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: ScalarExpr 
-              _prototype :: (Maybe FunctionPrototype)
-              _lhsOuType :: (Maybe Type)
-              _tpe :: Et
-              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
-              _lhsOoriginalTree :: ScalarExpr 
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                    (setTypeAddErrorsA _tpe
-                     . \a -> a {fnProt = _prototype
-                               ,infType = msum [_lhsIexpectedType
-                                               ,etmt _tpe
-                                               ,Nothing]}) _backTree
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
-              _prototype =
-                  Nothing
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
-              _lhsOuType =
-                  etmt _tpe
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 154, column 18)
-              _tpe =
-                  Right UnknownType
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 163, column 9)
-              _backTree =
-                  StringLit ann_ value_
-              -- self rule
-              _annotatedTree =
-                  StringLit ann_ value_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  StringLit ann_ value_
-              -- self rule
-              _originalTree =
-                  StringLit ann_ value_
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
-sem_ScalarExpr_TypedStringLit :: Annotation ->
-                                 T_TypeName  ->
-                                 String ->
-                                 T_ScalarExpr 
-sem_ScalarExpr_TypedStringLit ann_ tn_ value_  =
-    (\ _lhsIcat
-       _lhsIexpectedType
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: ScalarExpr 
-              _prototype :: (Maybe FunctionPrototype)
-              _lhsOuType :: (Maybe Type)
-              _tpe :: Et
-              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
-              _lhsOoriginalTree :: ScalarExpr 
-              _tnOcat :: Catalog
-              _tnOidenv :: IDEnv
-              _tnOlib :: LocalBindings
-              _tnIannotatedTree :: TypeName 
-              _tnIfixedUpIdentifiersTree :: TypeName 
-              _tnInamedType :: (Maybe Type)
-              _tnIoriginalTree :: TypeName 
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                    (setTypeAddErrorsA _tpe
-                     . \a -> a {fnProt = _prototype
-                               ,infType = msum [_lhsIexpectedType
-                                               ,etmt _tpe
-                                               ,Nothing]}) _backTree
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
-              _prototype =
-                  Nothing
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
-              _lhsOuType =
-                  etmt _tpe
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 187, column 10)
-              _tpe =
-                  lmt _tnInamedType
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 188, column 10)
-              _backTree =
-                  TypedStringLit ann_ _tnIannotatedTree value_
-              -- self rule
-              _annotatedTree =
-                  TypedStringLit ann_ _tnIannotatedTree value_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  TypedStringLit ann_ _tnIfixedUpIdentifiersTree value_
-              -- self rule
-              _originalTree =
-                  TypedStringLit ann_ _tnIoriginalTree value_
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _tnOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _tnOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _tnOlib =
-                  _lhsIlib
-              ( _tnIannotatedTree,_tnIfixedUpIdentifiersTree,_tnInamedType,_tnIoriginalTree) =
-                  tn_ _tnOcat _tnOidenv _tnOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
-sem_ScalarExpr_WindowFn :: Annotation ->
-                           T_ScalarExpr  ->
-                           T_ScalarExprList  ->
-                           T_ScalarExprList  ->
-                           Direction ->
-                           FrameClause ->
-                           T_ScalarExpr 
-sem_ScalarExpr_WindowFn ann_ fn_ partitionBy_ orderBy_ dir_ frm_  =
-    (\ _lhsIcat
-       _lhsIexpectedType
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: ScalarExpr 
-              _prototype :: (Maybe FunctionPrototype)
-              _lhsOuType :: (Maybe Type)
-              _tpe :: Et
-              _partitionByOexpectedTypes :: ([Maybe Type])
-              _orderByOexpectedTypes :: ([Maybe Type])
-              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
-              _lhsOoriginalTree :: ScalarExpr 
-              _fnOcat :: Catalog
-              _fnOexpectedType :: (Maybe Type)
-              _fnOidenv :: IDEnv
-              _fnOlib :: LocalBindings
-              _partitionByOcat :: Catalog
-              _partitionByOidenv :: IDEnv
-              _partitionByOlib :: LocalBindings
-              _orderByOcat :: Catalog
-              _orderByOidenv :: IDEnv
-              _orderByOlib :: LocalBindings
-              _fnIannotatedTree :: ScalarExpr 
-              _fnIfixedUpIdentifiersTree :: ScalarExpr 
-              _fnIoriginalTree :: ScalarExpr 
-              _fnIuType :: (Maybe Type)
-              _partitionByIannotatedTree :: ScalarExprList 
-              _partitionByIfixedUpIdentifiersTree :: ScalarExprList 
-              _partitionByIoriginalTree :: ScalarExprList 
-              _partitionByIuType :: ([Maybe Type])
-              _orderByIannotatedTree :: ScalarExprList 
-              _orderByIfixedUpIdentifiersTree :: ScalarExprList 
-              _orderByIoriginalTree :: ScalarExprList 
-              _orderByIuType :: ([Maybe Type])
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                    (setTypeAddErrorsA _tpe
-                     . \a -> a {fnProt = _prototype
-                               ,infType = msum [_lhsIexpectedType
-                                               ,etmt _tpe
-                                               ,Nothing]}) _backTree
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
-              _prototype =
-                  Nothing
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
-              _lhsOuType =
-                  etmt _tpe
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 210, column 9)
-              _tpe =
-                  lmt _fnIuType
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 211, column 9)
-              _backTree =
-                  WindowFn ann_
-                           _fnIannotatedTree
-                           _partitionByIannotatedTree
-                           _orderByIannotatedTree
-                           dir_
-                           frm_
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 140, column 9)
-              _partitionByOexpectedTypes =
-                  []
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 141, column 9)
-              _orderByOexpectedTypes =
-                  []
-              -- self rule
-              _annotatedTree =
-                  WindowFn ann_ _fnIannotatedTree _partitionByIannotatedTree _orderByIannotatedTree dir_ frm_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  WindowFn ann_ _fnIfixedUpIdentifiersTree _partitionByIfixedUpIdentifiersTree _orderByIfixedUpIdentifiersTree dir_ frm_
-              -- self rule
-              _originalTree =
-                  WindowFn ann_ _fnIoriginalTree _partitionByIoriginalTree _orderByIoriginalTree dir_ frm_
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _fnOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _fnOexpectedType =
-                  _lhsIexpectedType
-              -- copy rule (down)
-              _fnOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _fnOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _partitionByOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _partitionByOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _partitionByOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _orderByOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _orderByOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _orderByOlib =
-                  _lhsIlib
-              ( _fnIannotatedTree,_fnIfixedUpIdentifiersTree,_fnIoriginalTree,_fnIuType) =
-                  fn_ _fnOcat _fnOexpectedType _fnOidenv _fnOlib 
-              ( _partitionByIannotatedTree,_partitionByIfixedUpIdentifiersTree,_partitionByIoriginalTree,_partitionByIuType) =
-                  partitionBy_ _partitionByOcat _partitionByOexpectedTypes _partitionByOidenv _partitionByOlib 
-              ( _orderByIannotatedTree,_orderByIfixedUpIdentifiersTree,_orderByIoriginalTree,_orderByIuType) =
-                  orderBy_ _orderByOcat _orderByOexpectedTypes _orderByOidenv _orderByOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
--- ScalarExprDirectionPair -------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-   alternatives:
-      alternative Tuple:
-         child x1             : ScalarExpr 
-         child x2             : {Direction}
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-type ScalarExprDirectionPair  = ( ScalarExpr ,(Direction))
--- cata
-sem_ScalarExprDirectionPair :: ScalarExprDirectionPair  ->
-                               T_ScalarExprDirectionPair 
-sem_ScalarExprDirectionPair ( x1,x2)  =
-    (sem_ScalarExprDirectionPair_Tuple (sem_ScalarExpr x1 ) x2 )
--- semantic domain
-type T_ScalarExprDirectionPair  = Catalog ->
-                                  IDEnv ->
-                                  LocalBindings ->
-                                  ( ScalarExprDirectionPair ,ScalarExprDirectionPair ,ScalarExprDirectionPair )
-data Inh_ScalarExprDirectionPair  = Inh_ScalarExprDirectionPair {cat_Inh_ScalarExprDirectionPair :: Catalog,idenv_Inh_ScalarExprDirectionPair :: IDEnv,lib_Inh_ScalarExprDirectionPair :: LocalBindings}
-data Syn_ScalarExprDirectionPair  = Syn_ScalarExprDirectionPair {annotatedTree_Syn_ScalarExprDirectionPair :: ScalarExprDirectionPair ,fixedUpIdentifiersTree_Syn_ScalarExprDirectionPair :: ScalarExprDirectionPair ,originalTree_Syn_ScalarExprDirectionPair :: ScalarExprDirectionPair }
-wrap_ScalarExprDirectionPair :: T_ScalarExprDirectionPair  ->
-                                Inh_ScalarExprDirectionPair  ->
-                                Syn_ScalarExprDirectionPair 
-wrap_ScalarExprDirectionPair sem (Inh_ScalarExprDirectionPair _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_ScalarExprDirectionPair _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
-sem_ScalarExprDirectionPair_Tuple :: T_ScalarExpr  ->
-                                     Direction ->
-                                     T_ScalarExprDirectionPair 
-sem_ScalarExprDirectionPair_Tuple x1_ x2_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _x1OexpectedType :: (Maybe Type)
-              _lhsOannotatedTree :: ScalarExprDirectionPair 
-              _lhsOfixedUpIdentifiersTree :: ScalarExprDirectionPair 
-              _lhsOoriginalTree :: ScalarExprDirectionPair 
-              _x1Ocat :: Catalog
-              _x1Oidenv :: IDEnv
-              _x1Olib :: LocalBindings
-              _x1IannotatedTree :: ScalarExpr 
-              _x1IfixedUpIdentifiersTree :: ScalarExpr 
-              _x1IoriginalTree :: ScalarExpr 
-              _x1IuType :: (Maybe Type)
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 83, column 13)
-              _x1OexpectedType =
-                  Nothing
-              -- self rule
-              _annotatedTree =
-                  (_x1IannotatedTree,x2_)
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  (_x1IfixedUpIdentifiersTree,x2_)
-              -- self rule
-              _originalTree =
-                  (_x1IoriginalTree,x2_)
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _x1Ocat =
-                  _lhsIcat
-              -- copy rule (down)
-              _x1Oidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _x1Olib =
-                  _lhsIlib
-              ( _x1IannotatedTree,_x1IfixedUpIdentifiersTree,_x1IoriginalTree,_x1IuType) =
-                  x1_ _x1Ocat _x1OexpectedType _x1Oidenv _x1Olib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
--- ScalarExprDirectionPairList ---------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-   alternatives:
-      alternative Cons:
-         child hd             : ScalarExprDirectionPair 
-         child tl             : ScalarExprDirectionPairList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Nil:
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-type ScalarExprDirectionPairList  = [ScalarExprDirectionPair ]
--- cata
-sem_ScalarExprDirectionPairList :: ScalarExprDirectionPairList  ->
-                                   T_ScalarExprDirectionPairList 
-sem_ScalarExprDirectionPairList list  =
-    (Prelude.foldr sem_ScalarExprDirectionPairList_Cons sem_ScalarExprDirectionPairList_Nil (Prelude.map sem_ScalarExprDirectionPair list) )
--- semantic domain
-type T_ScalarExprDirectionPairList  = Catalog ->
-                                      IDEnv ->
-                                      LocalBindings ->
-                                      ( ScalarExprDirectionPairList ,ScalarExprDirectionPairList ,ScalarExprDirectionPairList )
-data Inh_ScalarExprDirectionPairList  = Inh_ScalarExprDirectionPairList {cat_Inh_ScalarExprDirectionPairList :: Catalog,idenv_Inh_ScalarExprDirectionPairList :: IDEnv,lib_Inh_ScalarExprDirectionPairList :: LocalBindings}
-data Syn_ScalarExprDirectionPairList  = Syn_ScalarExprDirectionPairList {annotatedTree_Syn_ScalarExprDirectionPairList :: ScalarExprDirectionPairList ,fixedUpIdentifiersTree_Syn_ScalarExprDirectionPairList :: ScalarExprDirectionPairList ,originalTree_Syn_ScalarExprDirectionPairList :: ScalarExprDirectionPairList }
-wrap_ScalarExprDirectionPairList :: T_ScalarExprDirectionPairList  ->
-                                    Inh_ScalarExprDirectionPairList  ->
-                                    Syn_ScalarExprDirectionPairList 
-wrap_ScalarExprDirectionPairList sem (Inh_ScalarExprDirectionPairList _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_ScalarExprDirectionPairList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
-sem_ScalarExprDirectionPairList_Cons :: T_ScalarExprDirectionPair  ->
-                                        T_ScalarExprDirectionPairList  ->
-                                        T_ScalarExprDirectionPairList 
-sem_ScalarExprDirectionPairList_Cons hd_ tl_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: ScalarExprDirectionPairList 
-              _lhsOfixedUpIdentifiersTree :: ScalarExprDirectionPairList 
-              _lhsOoriginalTree :: ScalarExprDirectionPairList 
-              _hdOcat :: Catalog
-              _hdOidenv :: IDEnv
-              _hdOlib :: LocalBindings
-              _tlOcat :: Catalog
-              _tlOidenv :: IDEnv
-              _tlOlib :: LocalBindings
-              _hdIannotatedTree :: ScalarExprDirectionPair 
-              _hdIfixedUpIdentifiersTree :: ScalarExprDirectionPair 
-              _hdIoriginalTree :: ScalarExprDirectionPair 
-              _tlIannotatedTree :: ScalarExprDirectionPairList 
-              _tlIfixedUpIdentifiersTree :: ScalarExprDirectionPairList 
-              _tlIoriginalTree :: ScalarExprDirectionPairList 
-              -- self rule
-              _annotatedTree =
-                  (:) _hdIannotatedTree _tlIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  (:) _hdIoriginalTree _tlIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _hdOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _hdOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _hdOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _tlOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _tlOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _tlOlib =
-                  _lhsIlib
-              ( _hdIannotatedTree,_hdIfixedUpIdentifiersTree,_hdIoriginalTree) =
-                  hd_ _hdOcat _hdOidenv _hdOlib 
-              ( _tlIannotatedTree,_tlIfixedUpIdentifiersTree,_tlIoriginalTree) =
-                  tl_ _tlOcat _tlOidenv _tlOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
-sem_ScalarExprDirectionPairList_Nil :: T_ScalarExprDirectionPairList 
-sem_ScalarExprDirectionPairList_Nil  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: ScalarExprDirectionPairList 
-              _lhsOfixedUpIdentifiersTree :: ScalarExprDirectionPairList 
-              _lhsOoriginalTree :: ScalarExprDirectionPairList 
-              -- self rule
-              _annotatedTree =
-                  []
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  []
-              -- self rule
-              _originalTree =
-                  []
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
--- ScalarExprList ----------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         expectedTypes        : [Maybe Type]
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-         uType                : [Maybe Type]
-   alternatives:
-      alternative Cons:
-         child hd             : ScalarExpr 
-         child tl             : ScalarExprList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Nil:
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-type ScalarExprList  = [ScalarExpr ]
--- cata
-sem_ScalarExprList :: ScalarExprList  ->
-                      T_ScalarExprList 
-sem_ScalarExprList list  =
-    (Prelude.foldr sem_ScalarExprList_Cons sem_ScalarExprList_Nil (Prelude.map sem_ScalarExpr list) )
--- semantic domain
-type T_ScalarExprList  = Catalog ->
-                         ([Maybe Type]) ->
-                         IDEnv ->
-                         LocalBindings ->
-                         ( ScalarExprList ,ScalarExprList ,ScalarExprList ,([Maybe Type]))
-data Inh_ScalarExprList  = Inh_ScalarExprList {cat_Inh_ScalarExprList :: Catalog,expectedTypes_Inh_ScalarExprList :: ([Maybe Type]),idenv_Inh_ScalarExprList :: IDEnv,lib_Inh_ScalarExprList :: LocalBindings}
-data Syn_ScalarExprList  = Syn_ScalarExprList {annotatedTree_Syn_ScalarExprList :: ScalarExprList ,fixedUpIdentifiersTree_Syn_ScalarExprList :: ScalarExprList ,originalTree_Syn_ScalarExprList :: ScalarExprList ,uType_Syn_ScalarExprList :: ([Maybe Type])}
-wrap_ScalarExprList :: T_ScalarExprList  ->
-                       Inh_ScalarExprList  ->
-                       Syn_ScalarExprList 
-wrap_ScalarExprList sem (Inh_ScalarExprList _lhsIcat _lhsIexpectedTypes _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType) = sem _lhsIcat _lhsIexpectedTypes _lhsIidenv _lhsIlib 
-     in  (Syn_ScalarExprList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree _lhsOuType ))
-sem_ScalarExprList_Cons :: T_ScalarExpr  ->
-                           T_ScalarExprList  ->
-                           T_ScalarExprList 
-sem_ScalarExprList_Cons hd_ tl_  =
-    (\ _lhsIcat
-       _lhsIexpectedTypes
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOuType :: ([Maybe Type])
-              _hdOexpectedType :: (Maybe Type)
-              _tlOexpectedTypes :: ([Maybe Type])
-              _lhsOannotatedTree :: ScalarExprList 
-              _lhsOfixedUpIdentifiersTree :: ScalarExprList 
-              _lhsOoriginalTree :: ScalarExprList 
-              _hdOcat :: Catalog
-              _hdOidenv :: IDEnv
-              _hdOlib :: LocalBindings
-              _tlOcat :: Catalog
-              _tlOidenv :: IDEnv
-              _tlOlib :: LocalBindings
-              _hdIannotatedTree :: ScalarExpr 
-              _hdIfixedUpIdentifiersTree :: ScalarExpr 
-              _hdIoriginalTree :: ScalarExpr 
-              _hdIuType :: (Maybe Type)
-              _tlIannotatedTree :: ScalarExprList 
-              _tlIfixedUpIdentifiersTree :: ScalarExprList 
-              _tlIoriginalTree :: ScalarExprList 
-              _tlIuType :: ([Maybe Type])
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 107, column 12)
-              _lhsOuType =
-                  _hdIuType : _tlIuType
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 86, column 12)
-              _hdOexpectedType =
-                  case _lhsIexpectedTypes of
-                    (t:_) -> t
-                    _ -> Nothing
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 89, column 12)
-              _tlOexpectedTypes =
-                  case _lhsIexpectedTypes of
-                   (_:ts) -> ts
-                   _ -> []
-              -- self rule
-              _annotatedTree =
-                  (:) _hdIannotatedTree _tlIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  (:) _hdIoriginalTree _tlIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _hdOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _hdOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _hdOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _tlOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _tlOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _tlOlib =
-                  _lhsIlib
-              ( _hdIannotatedTree,_hdIfixedUpIdentifiersTree,_hdIoriginalTree,_hdIuType) =
-                  hd_ _hdOcat _hdOexpectedType _hdOidenv _hdOlib 
-              ( _tlIannotatedTree,_tlIfixedUpIdentifiersTree,_tlIoriginalTree,_tlIuType) =
-                  tl_ _tlOcat _tlOexpectedTypes _tlOidenv _tlOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
-sem_ScalarExprList_Nil :: T_ScalarExprList 
-sem_ScalarExprList_Nil  =
-    (\ _lhsIcat
-       _lhsIexpectedTypes
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOuType :: ([Maybe Type])
-              _lhsOannotatedTree :: ScalarExprList 
-              _lhsOfixedUpIdentifiersTree :: ScalarExprList 
-              _lhsOoriginalTree :: ScalarExprList 
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 108, column 11)
-              _lhsOuType =
-                  []
-              -- self rule
-              _annotatedTree =
-                  []
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  []
-              -- self rule
-              _originalTree =
-                  []
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
--- ScalarExprListList ------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         expectedTypes        : [Maybe Type]
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-         uType                : [[Maybe Type]]
-   alternatives:
-      alternative Cons:
-         child hd             : ScalarExprList 
-         child tl             : ScalarExprListList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Nil:
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-type ScalarExprListList  = [ScalarExprList ]
--- cata
-sem_ScalarExprListList :: ScalarExprListList  ->
-                          T_ScalarExprListList 
-sem_ScalarExprListList list  =
-    (Prelude.foldr sem_ScalarExprListList_Cons sem_ScalarExprListList_Nil (Prelude.map sem_ScalarExprList list) )
--- semantic domain
-type T_ScalarExprListList  = Catalog ->
-                             ([Maybe Type]) ->
-                             IDEnv ->
-                             LocalBindings ->
-                             ( ScalarExprListList ,ScalarExprListList ,ScalarExprListList ,([[Maybe Type]]))
-data Inh_ScalarExprListList  = Inh_ScalarExprListList {cat_Inh_ScalarExprListList :: Catalog,expectedTypes_Inh_ScalarExprListList :: ([Maybe Type]),idenv_Inh_ScalarExprListList :: IDEnv,lib_Inh_ScalarExprListList :: LocalBindings}
-data Syn_ScalarExprListList  = Syn_ScalarExprListList {annotatedTree_Syn_ScalarExprListList :: ScalarExprListList ,fixedUpIdentifiersTree_Syn_ScalarExprListList :: ScalarExprListList ,originalTree_Syn_ScalarExprListList :: ScalarExprListList ,uType_Syn_ScalarExprListList :: ([[Maybe Type]])}
-wrap_ScalarExprListList :: T_ScalarExprListList  ->
-                           Inh_ScalarExprListList  ->
-                           Syn_ScalarExprListList 
-wrap_ScalarExprListList sem (Inh_ScalarExprListList _lhsIcat _lhsIexpectedTypes _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType) = sem _lhsIcat _lhsIexpectedTypes _lhsIidenv _lhsIlib 
-     in  (Syn_ScalarExprListList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree _lhsOuType ))
-sem_ScalarExprListList_Cons :: T_ScalarExprList  ->
-                               T_ScalarExprListList  ->
-                               T_ScalarExprListList 
-sem_ScalarExprListList_Cons hd_ tl_  =
-    (\ _lhsIcat
-       _lhsIexpectedTypes
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOuType :: ([[Maybe Type]])
-              _hdOexpectedTypes :: ([Maybe Type])
-              _tlOexpectedTypes :: ([Maybe Type])
-              _lhsOannotatedTree :: ScalarExprListList 
-              _lhsOfixedUpIdentifiersTree :: ScalarExprListList 
-              _lhsOoriginalTree :: ScalarExprListList 
-              _hdOcat :: Catalog
-              _hdOidenv :: IDEnv
-              _hdOlib :: LocalBindings
-              _tlOcat :: Catalog
-              _tlOidenv :: IDEnv
-              _tlOlib :: LocalBindings
-              _hdIannotatedTree :: ScalarExprList 
-              _hdIfixedUpIdentifiersTree :: ScalarExprList 
-              _hdIoriginalTree :: ScalarExprList 
-              _hdIuType :: ([Maybe Type])
-              _tlIannotatedTree :: ScalarExprListList 
-              _tlIfixedUpIdentifiersTree :: ScalarExprListList 
-              _tlIoriginalTree :: ScalarExprListList 
-              _tlIuType :: ([[Maybe Type]])
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 117, column 12)
-              _lhsOuType =
-                  _hdIuType : _tlIuType
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 167, column 12)
-              _hdOexpectedTypes =
-                  _lhsIexpectedTypes
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 168, column 12)
-              _tlOexpectedTypes =
-                  _lhsIexpectedTypes
-              -- self rule
-              _annotatedTree =
-                  (:) _hdIannotatedTree _tlIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  (:) _hdIoriginalTree _tlIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _hdOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _hdOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _hdOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _tlOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _tlOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _tlOlib =
-                  _lhsIlib
-              ( _hdIannotatedTree,_hdIfixedUpIdentifiersTree,_hdIoriginalTree,_hdIuType) =
-                  hd_ _hdOcat _hdOexpectedTypes _hdOidenv _hdOlib 
-              ( _tlIannotatedTree,_tlIfixedUpIdentifiersTree,_tlIoriginalTree,_tlIuType) =
-                  tl_ _tlOcat _tlOexpectedTypes _tlOidenv _tlOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
-sem_ScalarExprListList_Nil :: T_ScalarExprListList 
-sem_ScalarExprListList_Nil  =
-    (\ _lhsIcat
-       _lhsIexpectedTypes
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOuType :: ([[Maybe Type]])
-              _lhsOannotatedTree :: ScalarExprListList 
-              _lhsOfixedUpIdentifiersTree :: ScalarExprListList 
-              _lhsOoriginalTree :: ScalarExprListList 
-              -- "./TypeChecking/ScalarExprs/ScalarExprs.ag"(line 118, column 11)
-              _lhsOuType =
-                  []
-              -- self rule
-              _annotatedTree =
-                  []
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  []
-              -- self rule
-              _originalTree =
-                  []
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
--- ScalarExprListStatementListPair -----------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-   alternatives:
-      alternative Tuple:
-         child x1             : ScalarExprList 
-         child x2             : StatementList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-type ScalarExprListStatementListPair  = ( ScalarExprList ,StatementList )
--- cata
-sem_ScalarExprListStatementListPair :: ScalarExprListStatementListPair  ->
-                                       T_ScalarExprListStatementListPair 
-sem_ScalarExprListStatementListPair ( x1,x2)  =
-    (sem_ScalarExprListStatementListPair_Tuple (sem_ScalarExprList x1 ) (sem_StatementList x2 ) )
--- semantic domain
-type T_ScalarExprListStatementListPair  = Catalog ->
-                                          IDEnv ->
-                                          LocalBindings ->
-                                          ( ScalarExprListStatementListPair ,ScalarExprListStatementListPair ,ScalarExprListStatementListPair )
-data Inh_ScalarExprListStatementListPair  = Inh_ScalarExprListStatementListPair {cat_Inh_ScalarExprListStatementListPair :: Catalog,idenv_Inh_ScalarExprListStatementListPair :: IDEnv,lib_Inh_ScalarExprListStatementListPair :: LocalBindings}
-data Syn_ScalarExprListStatementListPair  = Syn_ScalarExprListStatementListPair {annotatedTree_Syn_ScalarExprListStatementListPair :: ScalarExprListStatementListPair ,fixedUpIdentifiersTree_Syn_ScalarExprListStatementListPair :: ScalarExprListStatementListPair ,originalTree_Syn_ScalarExprListStatementListPair :: ScalarExprListStatementListPair }
-wrap_ScalarExprListStatementListPair :: T_ScalarExprListStatementListPair  ->
-                                        Inh_ScalarExprListStatementListPair  ->
-                                        Syn_ScalarExprListStatementListPair 
-wrap_ScalarExprListStatementListPair sem (Inh_ScalarExprListStatementListPair _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_ScalarExprListStatementListPair _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
-sem_ScalarExprListStatementListPair_Tuple :: T_ScalarExprList  ->
-                                             T_StatementList  ->
-                                             T_ScalarExprListStatementListPair 
-sem_ScalarExprListStatementListPair_Tuple x1_ x2_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _x2OcatUpdates :: ([CatalogUpdate])
-              _x2OlibUpdates :: ([LocalBindingsUpdate])
-              _x1OexpectedTypes :: ([Maybe Type])
-              _lhsOannotatedTree :: ScalarExprListStatementListPair 
-              _lhsOfixedUpIdentifiersTree :: ScalarExprListStatementListPair 
-              _lhsOoriginalTree :: ScalarExprListStatementListPair 
-              _x1Ocat :: Catalog
-              _x1Oidenv :: IDEnv
-              _x1Olib :: LocalBindings
-              _x2Ocat :: Catalog
-              _x2Oidenv :: IDEnv
-              _x2Olib :: LocalBindings
-              _x1IannotatedTree :: ScalarExprList 
-              _x1IfixedUpIdentifiersTree :: ScalarExprList 
-              _x1IoriginalTree :: ScalarExprList 
-              _x1IuType :: ([Maybe Type])
-              _x2IannotatedTree :: StatementList 
-              _x2IfixedUpIdentifiersTree :: StatementList 
-              _x2IoriginalTree :: StatementList 
-              _x2IproducedCat :: Catalog
-              _x2IproducedLib :: LocalBindings
-              -- "./TypeChecking/Statements.ag"(line 121, column 9)
-              _x2OcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 122, column 9)
-              _x2OlibUpdates =
-                  []
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 144, column 13)
-              _x1OexpectedTypes =
-                  []
-              -- self rule
-              _annotatedTree =
-                  (_x1IannotatedTree,_x2IannotatedTree)
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  (_x1IfixedUpIdentifiersTree,_x2IfixedUpIdentifiersTree)
-              -- self rule
-              _originalTree =
-                  (_x1IoriginalTree,_x2IoriginalTree)
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _x1Ocat =
-                  _lhsIcat
-              -- copy rule (down)
-              _x1Oidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _x1Olib =
-                  _lhsIlib
-              -- copy rule (down)
-              _x2Ocat =
-                  _lhsIcat
-              -- copy rule (down)
-              _x2Oidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _x2Olib =
-                  _lhsIlib
-              ( _x1IannotatedTree,_x1IfixedUpIdentifiersTree,_x1IoriginalTree,_x1IuType) =
-                  x1_ _x1Ocat _x1OexpectedTypes _x1Oidenv _x1Olib 
-              ( _x2IannotatedTree,_x2IfixedUpIdentifiersTree,_x2IoriginalTree,_x2IproducedCat,_x2IproducedLib) =
-                  x2_ _x2Ocat _x2OcatUpdates _x2Oidenv _x2Olib _x2OlibUpdates 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
--- ScalarExprListStatementListPairList -------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-   alternatives:
-      alternative Cons:
-         child hd             : ScalarExprListStatementListPair 
-         child tl             : ScalarExprListStatementListPairList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Nil:
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-type ScalarExprListStatementListPairList  = [ScalarExprListStatementListPair ]
--- cata
-sem_ScalarExprListStatementListPairList :: ScalarExprListStatementListPairList  ->
-                                           T_ScalarExprListStatementListPairList 
-sem_ScalarExprListStatementListPairList list  =
-    (Prelude.foldr sem_ScalarExprListStatementListPairList_Cons sem_ScalarExprListStatementListPairList_Nil (Prelude.map sem_ScalarExprListStatementListPair list) )
--- semantic domain
-type T_ScalarExprListStatementListPairList  = Catalog ->
-                                              IDEnv ->
-                                              LocalBindings ->
-                                              ( ScalarExprListStatementListPairList ,ScalarExprListStatementListPairList ,ScalarExprListStatementListPairList )
-data Inh_ScalarExprListStatementListPairList  = Inh_ScalarExprListStatementListPairList {cat_Inh_ScalarExprListStatementListPairList :: Catalog,idenv_Inh_ScalarExprListStatementListPairList :: IDEnv,lib_Inh_ScalarExprListStatementListPairList :: LocalBindings}
-data Syn_ScalarExprListStatementListPairList  = Syn_ScalarExprListStatementListPairList {annotatedTree_Syn_ScalarExprListStatementListPairList :: ScalarExprListStatementListPairList ,fixedUpIdentifiersTree_Syn_ScalarExprListStatementListPairList :: ScalarExprListStatementListPairList ,originalTree_Syn_ScalarExprListStatementListPairList :: ScalarExprListStatementListPairList }
-wrap_ScalarExprListStatementListPairList :: T_ScalarExprListStatementListPairList  ->
-                                            Inh_ScalarExprListStatementListPairList  ->
-                                            Syn_ScalarExprListStatementListPairList 
-wrap_ScalarExprListStatementListPairList sem (Inh_ScalarExprListStatementListPairList _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_ScalarExprListStatementListPairList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
-sem_ScalarExprListStatementListPairList_Cons :: T_ScalarExprListStatementListPair  ->
-                                                T_ScalarExprListStatementListPairList  ->
-                                                T_ScalarExprListStatementListPairList 
-sem_ScalarExprListStatementListPairList_Cons hd_ tl_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: ScalarExprListStatementListPairList 
-              _lhsOfixedUpIdentifiersTree :: ScalarExprListStatementListPairList 
-              _lhsOoriginalTree :: ScalarExprListStatementListPairList 
-              _hdOcat :: Catalog
-              _hdOidenv :: IDEnv
-              _hdOlib :: LocalBindings
-              _tlOcat :: Catalog
-              _tlOidenv :: IDEnv
-              _tlOlib :: LocalBindings
-              _hdIannotatedTree :: ScalarExprListStatementListPair 
-              _hdIfixedUpIdentifiersTree :: ScalarExprListStatementListPair 
-              _hdIoriginalTree :: ScalarExprListStatementListPair 
-              _tlIannotatedTree :: ScalarExprListStatementListPairList 
-              _tlIfixedUpIdentifiersTree :: ScalarExprListStatementListPairList 
-              _tlIoriginalTree :: ScalarExprListStatementListPairList 
-              -- self rule
-              _annotatedTree =
-                  (:) _hdIannotatedTree _tlIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  (:) _hdIoriginalTree _tlIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _hdOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _hdOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _hdOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _tlOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _tlOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _tlOlib =
-                  _lhsIlib
-              ( _hdIannotatedTree,_hdIfixedUpIdentifiersTree,_hdIoriginalTree) =
-                  hd_ _hdOcat _hdOidenv _hdOlib 
-              ( _tlIannotatedTree,_tlIfixedUpIdentifiersTree,_tlIoriginalTree) =
-                  tl_ _tlOcat _tlOidenv _tlOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
-sem_ScalarExprListStatementListPairList_Nil :: T_ScalarExprListStatementListPairList 
-sem_ScalarExprListStatementListPairList_Nil  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: ScalarExprListStatementListPairList 
-              _lhsOfixedUpIdentifiersTree :: ScalarExprListStatementListPairList 
-              _lhsOoriginalTree :: ScalarExprListStatementListPairList 
-              -- self rule
-              _annotatedTree =
-                  []
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  []
-              -- self rule
-              _originalTree =
-                  []
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
--- ScalarExprRoot ----------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-   alternatives:
-      alternative ScalarExprRoot:
-         child expr           : ScalarExpr 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-data ScalarExprRoot  = ScalarExprRoot (ScalarExpr ) 
-                     deriving ( Show)
--- cata
-sem_ScalarExprRoot :: ScalarExprRoot  ->
-                      T_ScalarExprRoot 
-sem_ScalarExprRoot (ScalarExprRoot _expr )  =
-    (sem_ScalarExprRoot_ScalarExprRoot (sem_ScalarExpr _expr ) )
--- semantic domain
-type T_ScalarExprRoot  = Catalog ->
-                         IDEnv ->
-                         LocalBindings ->
-                         ( ScalarExprRoot ,ScalarExprRoot ,ScalarExprRoot )
-data Inh_ScalarExprRoot  = Inh_ScalarExprRoot {cat_Inh_ScalarExprRoot :: Catalog,idenv_Inh_ScalarExprRoot :: IDEnv,lib_Inh_ScalarExprRoot :: LocalBindings}
-data Syn_ScalarExprRoot  = Syn_ScalarExprRoot {annotatedTree_Syn_ScalarExprRoot :: ScalarExprRoot ,fixedUpIdentifiersTree_Syn_ScalarExprRoot :: ScalarExprRoot ,originalTree_Syn_ScalarExprRoot :: ScalarExprRoot }
-wrap_ScalarExprRoot :: T_ScalarExprRoot  ->
-                       Inh_ScalarExprRoot  ->
-                       Syn_ScalarExprRoot 
-wrap_ScalarExprRoot sem (Inh_ScalarExprRoot _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_ScalarExprRoot _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
-sem_ScalarExprRoot_ScalarExprRoot :: T_ScalarExpr  ->
-                                     T_ScalarExprRoot 
-sem_ScalarExprRoot_ScalarExprRoot expr_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _exprOexpectedType :: (Maybe Type)
-              _lhsOannotatedTree :: ScalarExprRoot 
-              _lhsOfixedUpIdentifiersTree :: ScalarExprRoot 
-              _lhsOoriginalTree :: ScalarExprRoot 
-              _exprOcat :: Catalog
-              _exprOidenv :: IDEnv
-              _exprOlib :: LocalBindings
-              _exprIannotatedTree :: ScalarExpr 
-              _exprIfixedUpIdentifiersTree :: ScalarExpr 
-              _exprIoriginalTree :: ScalarExpr 
-              _exprIuType :: (Maybe Type)
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 123, column 22)
-              _exprOexpectedType =
-                  Nothing
-              -- self rule
-              _annotatedTree =
-                  ScalarExprRoot _exprIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  ScalarExprRoot _exprIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  ScalarExprRoot _exprIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _exprOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _exprOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _exprOlib =
-                  _lhsIlib
-              ( _exprIannotatedTree,_exprIfixedUpIdentifiersTree,_exprIoriginalTree,_exprIuType) =
-                  expr_ _exprOcat _exprOexpectedType _exprOidenv _exprOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
--- ScalarExprStatementListPair ---------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-   alternatives:
-      alternative Tuple:
-         child x1             : ScalarExpr 
-         child x2             : StatementList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-type ScalarExprStatementListPair  = ( ScalarExpr ,StatementList )
--- cata
-sem_ScalarExprStatementListPair :: ScalarExprStatementListPair  ->
-                                   T_ScalarExprStatementListPair 
-sem_ScalarExprStatementListPair ( x1,x2)  =
-    (sem_ScalarExprStatementListPair_Tuple (sem_ScalarExpr x1 ) (sem_StatementList x2 ) )
--- semantic domain
-type T_ScalarExprStatementListPair  = Catalog ->
-                                      IDEnv ->
-                                      LocalBindings ->
-                                      ( ScalarExprStatementListPair ,ScalarExprStatementListPair ,ScalarExprStatementListPair )
-data Inh_ScalarExprStatementListPair  = Inh_ScalarExprStatementListPair {cat_Inh_ScalarExprStatementListPair :: Catalog,idenv_Inh_ScalarExprStatementListPair :: IDEnv,lib_Inh_ScalarExprStatementListPair :: LocalBindings}
-data Syn_ScalarExprStatementListPair  = Syn_ScalarExprStatementListPair {annotatedTree_Syn_ScalarExprStatementListPair :: ScalarExprStatementListPair ,fixedUpIdentifiersTree_Syn_ScalarExprStatementListPair :: ScalarExprStatementListPair ,originalTree_Syn_ScalarExprStatementListPair :: ScalarExprStatementListPair }
-wrap_ScalarExprStatementListPair :: T_ScalarExprStatementListPair  ->
-                                    Inh_ScalarExprStatementListPair  ->
-                                    Syn_ScalarExprStatementListPair 
-wrap_ScalarExprStatementListPair sem (Inh_ScalarExprStatementListPair _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_ScalarExprStatementListPair _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
-sem_ScalarExprStatementListPair_Tuple :: T_ScalarExpr  ->
-                                         T_StatementList  ->
-                                         T_ScalarExprStatementListPair 
-sem_ScalarExprStatementListPair_Tuple x1_ x2_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _x2OcatUpdates :: ([CatalogUpdate])
-              _x2OlibUpdates :: ([LocalBindingsUpdate])
-              _x1OexpectedType :: (Maybe Type)
-              _lhsOannotatedTree :: ScalarExprStatementListPair 
-              _lhsOfixedUpIdentifiersTree :: ScalarExprStatementListPair 
-              _lhsOoriginalTree :: ScalarExprStatementListPair 
-              _x1Ocat :: Catalog
-              _x1Oidenv :: IDEnv
-              _x1Olib :: LocalBindings
-              _x2Ocat :: Catalog
-              _x2Oidenv :: IDEnv
-              _x2Olib :: LocalBindings
-              _x1IannotatedTree :: ScalarExpr 
-              _x1IfixedUpIdentifiersTree :: ScalarExpr 
-              _x1IoriginalTree :: ScalarExpr 
-              _x1IuType :: (Maybe Type)
-              _x2IannotatedTree :: StatementList 
-              _x2IfixedUpIdentifiersTree :: StatementList 
-              _x2IoriginalTree :: StatementList 
-              _x2IproducedCat :: Catalog
-              _x2IproducedLib :: LocalBindings
-              -- "./TypeChecking/Statements.ag"(line 125, column 9)
-              _x2OcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 126, column 9)
-              _x2OlibUpdates =
-                  []
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 126, column 13)
-              _x1OexpectedType =
-                  Nothing
-              -- self rule
-              _annotatedTree =
-                  (_x1IannotatedTree,_x2IannotatedTree)
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  (_x1IfixedUpIdentifiersTree,_x2IfixedUpIdentifiersTree)
-              -- self rule
-              _originalTree =
-                  (_x1IoriginalTree,_x2IoriginalTree)
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _x1Ocat =
-                  _lhsIcat
-              -- copy rule (down)
-              _x1Oidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _x1Olib =
-                  _lhsIlib
-              -- copy rule (down)
-              _x2Ocat =
-                  _lhsIcat
-              -- copy rule (down)
-              _x2Oidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _x2Olib =
-                  _lhsIlib
-              ( _x1IannotatedTree,_x1IfixedUpIdentifiersTree,_x1IoriginalTree,_x1IuType) =
-                  x1_ _x1Ocat _x1OexpectedType _x1Oidenv _x1Olib 
-              ( _x2IannotatedTree,_x2IfixedUpIdentifiersTree,_x2IoriginalTree,_x2IproducedCat,_x2IproducedLib) =
-                  x2_ _x2Ocat _x2OcatUpdates _x2Oidenv _x2Olib _x2OlibUpdates 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
--- ScalarExprStatementListPairList -----------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-   alternatives:
-      alternative Cons:
-         child hd             : ScalarExprStatementListPair 
-         child tl             : ScalarExprStatementListPairList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Nil:
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-type ScalarExprStatementListPairList  = [ScalarExprStatementListPair ]
--- cata
-sem_ScalarExprStatementListPairList :: ScalarExprStatementListPairList  ->
-                                       T_ScalarExprStatementListPairList 
-sem_ScalarExprStatementListPairList list  =
-    (Prelude.foldr sem_ScalarExprStatementListPairList_Cons sem_ScalarExprStatementListPairList_Nil (Prelude.map sem_ScalarExprStatementListPair list) )
--- semantic domain
-type T_ScalarExprStatementListPairList  = Catalog ->
-                                          IDEnv ->
-                                          LocalBindings ->
-                                          ( ScalarExprStatementListPairList ,ScalarExprStatementListPairList ,ScalarExprStatementListPairList )
-data Inh_ScalarExprStatementListPairList  = Inh_ScalarExprStatementListPairList {cat_Inh_ScalarExprStatementListPairList :: Catalog,idenv_Inh_ScalarExprStatementListPairList :: IDEnv,lib_Inh_ScalarExprStatementListPairList :: LocalBindings}
-data Syn_ScalarExprStatementListPairList  = Syn_ScalarExprStatementListPairList {annotatedTree_Syn_ScalarExprStatementListPairList :: ScalarExprStatementListPairList ,fixedUpIdentifiersTree_Syn_ScalarExprStatementListPairList :: ScalarExprStatementListPairList ,originalTree_Syn_ScalarExprStatementListPairList :: ScalarExprStatementListPairList }
-wrap_ScalarExprStatementListPairList :: T_ScalarExprStatementListPairList  ->
-                                        Inh_ScalarExprStatementListPairList  ->
-                                        Syn_ScalarExprStatementListPairList 
-wrap_ScalarExprStatementListPairList sem (Inh_ScalarExprStatementListPairList _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_ScalarExprStatementListPairList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
-sem_ScalarExprStatementListPairList_Cons :: T_ScalarExprStatementListPair  ->
-                                            T_ScalarExprStatementListPairList  ->
-                                            T_ScalarExprStatementListPairList 
-sem_ScalarExprStatementListPairList_Cons hd_ tl_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: ScalarExprStatementListPairList 
-              _lhsOfixedUpIdentifiersTree :: ScalarExprStatementListPairList 
-              _lhsOoriginalTree :: ScalarExprStatementListPairList 
-              _hdOcat :: Catalog
-              _hdOidenv :: IDEnv
-              _hdOlib :: LocalBindings
-              _tlOcat :: Catalog
-              _tlOidenv :: IDEnv
-              _tlOlib :: LocalBindings
-              _hdIannotatedTree :: ScalarExprStatementListPair 
-              _hdIfixedUpIdentifiersTree :: ScalarExprStatementListPair 
-              _hdIoriginalTree :: ScalarExprStatementListPair 
-              _tlIannotatedTree :: ScalarExprStatementListPairList 
-              _tlIfixedUpIdentifiersTree :: ScalarExprStatementListPairList 
-              _tlIoriginalTree :: ScalarExprStatementListPairList 
-              -- self rule
-              _annotatedTree =
-                  (:) _hdIannotatedTree _tlIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  (:) _hdIoriginalTree _tlIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _hdOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _hdOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _hdOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _tlOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _tlOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _tlOlib =
-                  _lhsIlib
-              ( _hdIannotatedTree,_hdIfixedUpIdentifiersTree,_hdIoriginalTree) =
-                  hd_ _hdOcat _hdOidenv _hdOlib 
-              ( _tlIannotatedTree,_tlIfixedUpIdentifiersTree,_tlIoriginalTree) =
-                  tl_ _tlOcat _tlOidenv _tlOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
-sem_ScalarExprStatementListPairList_Nil :: T_ScalarExprStatementListPairList 
-sem_ScalarExprStatementListPairList_Nil  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: ScalarExprStatementListPairList 
-              _lhsOfixedUpIdentifiersTree :: ScalarExprStatementListPairList 
-              _lhsOoriginalTree :: ScalarExprStatementListPairList 
-              -- self rule
-              _annotatedTree =
-                  []
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  []
-              -- self rule
-              _originalTree =
-                  []
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
--- SelectItem --------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         itemType             : (String,Maybe Type)
-         originalTree         : SELF 
-         seIdTree             : [SelectItem]
-   alternatives:
-      alternative SelExp:
-         child ann            : {Annotation}
-         child ex             : ScalarExpr 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative SelectItem:
-         child ann            : {Annotation}
-         child ex             : ScalarExpr 
-         child name           : {String}
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-data SelectItem  = SelExp (Annotation) (ScalarExpr ) 
-                 | SelectItem (Annotation) (ScalarExpr ) (String) 
-                 deriving ( Data,Eq,Show,Typeable)
--- cata
-sem_SelectItem :: SelectItem  ->
-                  T_SelectItem 
-sem_SelectItem (SelExp _ann _ex )  =
-    (sem_SelectItem_SelExp _ann (sem_ScalarExpr _ex ) )
-sem_SelectItem (SelectItem _ann _ex _name )  =
-    (sem_SelectItem_SelectItem _ann (sem_ScalarExpr _ex ) _name )
--- semantic domain
-type T_SelectItem  = Catalog ->
-                     IDEnv ->
-                     LocalBindings ->
-                     ( SelectItem ,SelectItem ,((String,Maybe Type)),SelectItem ,([SelectItem]))
-data Inh_SelectItem  = Inh_SelectItem {cat_Inh_SelectItem :: Catalog,idenv_Inh_SelectItem :: IDEnv,lib_Inh_SelectItem :: LocalBindings}
-data Syn_SelectItem  = Syn_SelectItem {annotatedTree_Syn_SelectItem :: SelectItem ,fixedUpIdentifiersTree_Syn_SelectItem :: SelectItem ,itemType_Syn_SelectItem :: ((String,Maybe Type)),originalTree_Syn_SelectItem :: SelectItem ,seIdTree_Syn_SelectItem :: ([SelectItem])}
-wrap_SelectItem :: T_SelectItem  ->
-                   Inh_SelectItem  ->
-                   Syn_SelectItem 
-wrap_SelectItem sem (Inh_SelectItem _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOitemType,_lhsOoriginalTree,_lhsOseIdTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_SelectItem _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOitemType _lhsOoriginalTree _lhsOseIdTree ))
-sem_SelectItem_SelExp :: Annotation ->
-                         T_ScalarExpr  ->
-                         T_SelectItem 
-sem_SelectItem_SelExp ann_ ex_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOseIdTree :: ([SelectItem])
-              _lhsOitemType :: ((String,Maybe Type))
-              _exOexpectedType :: (Maybe Type)
-              _lhsOannotatedTree :: SelectItem 
-              _lhsOfixedUpIdentifiersTree :: SelectItem 
-              _lhsOoriginalTree :: SelectItem 
-              _exOcat :: Catalog
-              _exOidenv :: IDEnv
-              _exOlib :: LocalBindings
-              _exIannotatedTree :: ScalarExpr 
-              _exIfixedUpIdentifiersTree :: ScalarExpr 
-              _exIoriginalTree :: ScalarExpr 
-              _exIuType :: (Maybe Type)
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 150, column 14)
-              _lhsOseIdTree =
-                  case _exIfixedUpIdentifiersTree of
-                    Identifier a "*" -> let s = expandStar _lhsIidenv Nothing
-                                            in if null s
-                                               then [addSIAlias $ SelExp ann_ _exIfixedUpIdentifiersTree]
-                                               else makeSelExps ann_ a a s
-                    QIdentifier a0 (Identifier a1 q) "*" ->
-                       let s = expandStar _lhsIidenv $ Just q
-                       in if null s
-                          then [addSIAlias $ SelExp ann_ _exIfixedUpIdentifiersTree]
-                          else makeSelExps ann_ a0 a1 s
-                    _ -> [addSIAlias $ SelExp ann_ _exIfixedUpIdentifiersTree]
-              -- "./TypeChecking/QueryExprs/SelectLists.ag"(line 32, column 9)
-              _annotatedTree =
-                  SelExp ann_ _exIannotatedTree
-              -- "./TypeChecking/QueryExprs/SelectLists.ag"(line 60, column 9)
-              _lhsOitemType =
-                  ("", Nothing)
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 106, column 25)
-              _exOexpectedType =
-                  Nothing
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  SelExp ann_ _exIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  SelExp ann_ _exIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _exOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _exOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _exOlib =
-                  _lhsIlib
-              ( _exIannotatedTree,_exIfixedUpIdentifiersTree,_exIoriginalTree,_exIuType) =
-                  ex_ _exOcat _exOexpectedType _exOidenv _exOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOitemType,_lhsOoriginalTree,_lhsOseIdTree)))
-sem_SelectItem_SelectItem :: Annotation ->
-                             T_ScalarExpr  ->
-                             String ->
-                             T_SelectItem 
-sem_SelectItem_SelectItem ann_ ex_ name_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOseIdTree :: ([SelectItem])
-              _lhsOitemType :: ((String,Maybe Type))
-              _exOexpectedType :: (Maybe Type)
-              _lhsOannotatedTree :: SelectItem 
-              _lhsOfixedUpIdentifiersTree :: SelectItem 
-              _lhsOoriginalTree :: SelectItem 
-              _exOcat :: Catalog
-              _exOidenv :: IDEnv
-              _exOlib :: LocalBindings
-              _exIannotatedTree :: ScalarExpr 
-              _exIfixedUpIdentifiersTree :: ScalarExpr 
-              _exIoriginalTree :: ScalarExpr 
-              _exIuType :: (Maybe Type)
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 163, column 18)
-              _lhsOseIdTree =
-                  [SelectItem ann_ _exIfixedUpIdentifiersTree name_]
-              -- "./TypeChecking/QueryExprs/SelectLists.ag"(line 34, column 9)
-              _annotatedTree =
-                  SelectItem ann_ _exIannotatedTree name_
-              -- "./TypeChecking/QueryExprs/SelectLists.ag"(line 62, column 9)
-              _lhsOitemType =
-                  (name_, unwrapSetof `fmap` _exIuType)
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 106, column 25)
-              _exOexpectedType =
-                  Nothing
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  SelectItem ann_ _exIfixedUpIdentifiersTree name_
-              -- self rule
-              _originalTree =
-                  SelectItem ann_ _exIoriginalTree name_
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _exOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _exOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _exOlib =
-                  _lhsIlib
-              ( _exIannotatedTree,_exIfixedUpIdentifiersTree,_exIoriginalTree,_exIuType) =
-                  ex_ _exOcat _exOexpectedType _exOidenv _exOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOitemType,_lhsOoriginalTree,_lhsOseIdTree)))
--- SelectItemList ----------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         listType             : [(String,Maybe Type)]
-         originalTree         : SELF 
-   alternatives:
-      alternative Cons:
-         child hd             : SelectItem 
-         child tl             : SelectItemList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Nil:
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-type SelectItemList  = [SelectItem ]
--- cata
-sem_SelectItemList :: SelectItemList  ->
-                      T_SelectItemList 
-sem_SelectItemList list  =
-    (Prelude.foldr sem_SelectItemList_Cons sem_SelectItemList_Nil (Prelude.map sem_SelectItem list) )
--- semantic domain
-type T_SelectItemList  = Catalog ->
-                         IDEnv ->
-                         LocalBindings ->
-                         ( SelectItemList ,SelectItemList ,([(String,Maybe Type)]),SelectItemList )
-data Inh_SelectItemList  = Inh_SelectItemList {cat_Inh_SelectItemList :: Catalog,idenv_Inh_SelectItemList :: IDEnv,lib_Inh_SelectItemList :: LocalBindings}
-data Syn_SelectItemList  = Syn_SelectItemList {annotatedTree_Syn_SelectItemList :: SelectItemList ,fixedUpIdentifiersTree_Syn_SelectItemList :: SelectItemList ,listType_Syn_SelectItemList :: ([(String,Maybe Type)]),originalTree_Syn_SelectItemList :: SelectItemList }
-wrap_SelectItemList :: T_SelectItemList  ->
-                       Inh_SelectItemList  ->
-                       Syn_SelectItemList 
-wrap_SelectItemList sem (Inh_SelectItemList _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlistType,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_SelectItemList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOlistType _lhsOoriginalTree ))
-sem_SelectItemList_Cons :: T_SelectItem  ->
-                           T_SelectItemList  ->
-                           T_SelectItemList 
-sem_SelectItemList_Cons hd_ tl_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOfixedUpIdentifiersTree :: SelectItemList 
-              _lhsOlistType :: ([(String,Maybe Type)])
-              _lhsOannotatedTree :: SelectItemList 
-              _lhsOoriginalTree :: SelectItemList 
-              _hdOcat :: Catalog
-              _hdOidenv :: IDEnv
-              _hdOlib :: LocalBindings
-              _tlOcat :: Catalog
-              _tlOidenv :: IDEnv
-              _tlOlib :: LocalBindings
-              _hdIannotatedTree :: SelectItem 
-              _hdIfixedUpIdentifiersTree :: SelectItem 
-              _hdIitemType :: ((String,Maybe Type))
-              _hdIoriginalTree :: SelectItem 
-              _hdIseIdTree :: ([SelectItem])
-              _tlIannotatedTree :: SelectItemList 
-              _tlIfixedUpIdentifiersTree :: SelectItemList 
-              _tlIlistType :: ([(String,Maybe Type)])
-              _tlIoriginalTree :: SelectItemList 
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 141, column 12)
-              _lhsOfixedUpIdentifiersTree =
-                  _hdIseIdTree ++ _tlIfixedUpIdentifiersTree
-              -- "./TypeChecking/QueryExprs/SelectLists.ag"(line 42, column 12)
-              _lhsOlistType =
-                  _hdIitemType : _tlIlistType
-              -- self rule
-              _annotatedTree =
-                  (:) _hdIannotatedTree _tlIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  (:) _hdIoriginalTree _tlIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _hdOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _hdOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _hdOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _tlOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _tlOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _tlOlib =
-                  _lhsIlib
-              ( _hdIannotatedTree,_hdIfixedUpIdentifiersTree,_hdIitemType,_hdIoriginalTree,_hdIseIdTree) =
-                  hd_ _hdOcat _hdOidenv _hdOlib 
-              ( _tlIannotatedTree,_tlIfixedUpIdentifiersTree,_tlIlistType,_tlIoriginalTree) =
-                  tl_ _tlOcat _tlOidenv _tlOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlistType,_lhsOoriginalTree)))
-sem_SelectItemList_Nil :: T_SelectItemList 
-sem_SelectItemList_Nil  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOfixedUpIdentifiersTree :: SelectItemList 
-              _lhsOlistType :: ([(String,Maybe Type)])
-              _lhsOannotatedTree :: SelectItemList 
-              _lhsOoriginalTree :: SelectItemList 
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 142, column 11)
-              _lhsOfixedUpIdentifiersTree =
-                  []
-              -- "./TypeChecking/QueryExprs/SelectLists.ag"(line 43, column 11)
-              _lhsOlistType =
-                  []
-              -- self rule
-              _annotatedTree =
-                  []
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  []
-              -- self rule
-              _originalTree =
-                  []
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlistType,_lhsOoriginalTree)))
--- SelectList --------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         cidenv               : IDEnv
-         fixedUpIdentifiersTree : SELF 
-         libUpdates           : [LocalBindingsUpdate]
-         listType             : [(String,Maybe Type)]
-         originalTree         : SELF 
-   alternatives:
-      alternative SelectList:
-         child ann            : {Annotation}
-         child items          : SelectItemList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-data SelectList  = SelectList (Annotation) (SelectItemList ) 
-                 deriving ( Data,Eq,Show,Typeable)
--- cata
-sem_SelectList :: SelectList  ->
-                  T_SelectList 
-sem_SelectList (SelectList _ann _items )  =
-    (sem_SelectList_SelectList _ann (sem_SelectItemList _items ) )
--- semantic domain
-type T_SelectList  = Catalog ->
-                     IDEnv ->
-                     LocalBindings ->
-                     ( SelectList ,IDEnv,SelectList ,([LocalBindingsUpdate]),([(String,Maybe Type)]),SelectList )
-data Inh_SelectList  = Inh_SelectList {cat_Inh_SelectList :: Catalog,idenv_Inh_SelectList :: IDEnv,lib_Inh_SelectList :: LocalBindings}
-data Syn_SelectList  = Syn_SelectList {annotatedTree_Syn_SelectList :: SelectList ,cidenv_Syn_SelectList :: IDEnv,fixedUpIdentifiersTree_Syn_SelectList :: SelectList ,libUpdates_Syn_SelectList :: ([LocalBindingsUpdate]),listType_Syn_SelectList :: ([(String,Maybe Type)]),originalTree_Syn_SelectList :: SelectList }
-wrap_SelectList :: T_SelectList  ->
-                   Inh_SelectList  ->
-                   Syn_SelectList 
-wrap_SelectList sem (Inh_SelectList _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOcidenv,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOlistType,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_SelectList _lhsOannotatedTree _lhsOcidenv _lhsOfixedUpIdentifiersTree _lhsOlibUpdates _lhsOlistType _lhsOoriginalTree ))
-sem_SelectList_SelectList :: Annotation ->
-                             T_SelectItemList  ->
-                             T_SelectList 
-sem_SelectList_SelectList ann_ items_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOcidenv :: IDEnv
-              _lhsOlistType :: ([(String,Maybe Type)])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _lhsOannotatedTree :: SelectList 
-              _lhsOfixedUpIdentifiersTree :: SelectList 
-              _lhsOoriginalTree :: SelectList 
-              _itemsOcat :: Catalog
-              _itemsOidenv :: IDEnv
-              _itemsOlib :: LocalBindings
-              _itemsIannotatedTree :: SelectItemList 
-              _itemsIfixedUpIdentifiersTree :: SelectItemList 
-              _itemsIlistType :: ([(String,Maybe Type)])
-              _itemsIoriginalTree :: SelectItemList 
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 124, column 18)
-              _lhsOcidenv =
-                  makeIDEnv "" $ flip map _itemsIfixedUpIdentifiersTree
-                                   $ \(SelectItem _ _ n) -> n
-              -- "./TypeChecking/QueryExprs/SelectLists.ag"(line 77, column 9)
-              _lhsOlistType =
-                  _itemsIlistType
-              -- "./TypeChecking/QueryExprs/SelectLists.ag"(line 97, column 9)
-              _lhsOlibUpdates =
-                  []
-              -- "./TypeChecking/QueryExprs/SelectLists.ag"(line 131, column 9)
-              _lhsOannotatedTree =
-                  SelectList ann_
-                             _itemsIannotatedTree
-              -- self rule
-              _annotatedTree =
-                  SelectList ann_ _itemsIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  SelectList ann_ _itemsIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  SelectList ann_ _itemsIoriginalTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _itemsOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _itemsOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _itemsOlib =
-                  _lhsIlib
-              ( _itemsIannotatedTree,_itemsIfixedUpIdentifiersTree,_itemsIlistType,_itemsIoriginalTree) =
-                  items_ _itemsOcat _itemsOidenv _itemsOlib 
-          in  ( _lhsOannotatedTree,_lhsOcidenv,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOlistType,_lhsOoriginalTree)))
--- Statement ---------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         inProducedCat        : Catalog
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         catUpdates           : [CatalogUpdate]
-         fixedUpIdentifiersTree : SELF 
-         libUpdates           : [LocalBindingsUpdate]
-         originalTree         : SELF 
-   alternatives:
-      alternative AlterSequence:
-         child ann            : {Annotation}
-         child name           : {String}
-         child ownedBy        : SQIdentifier 
-         visit 0:
-            local libUpdates  : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative AlterTable:
-         child ann            : {Annotation}
-         child name           : {String}
-         child actions        : AlterTableActionList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Assignment:
-         child ann            : {Annotation}
-         child target         : ScalarExpr 
-         child value          : ScalarExpr 
-         visit 0:
-            local libUpdates  : _
-            local tpe         : {Either [TypeError] Type}
-            local backTree    : _
-            local catUpdates  : {[CatalogUpdate]}
-            local statementType : {Maybe StatementType}
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Block:
-         child ann            : {Annotation}
-         child lb             : {Maybe String}
-         child vars           : VarDefList 
-         child sts            : StatementList 
-         visit 0:
-            local libUpdates  : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative CaseStatement:
-         child ann            : {Annotation}
-         child cases          : ScalarExprListStatementListPairList 
-         child els            : StatementList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative CaseStatementSimple:
-         child ann            : {Annotation}
-         child val            : ScalarExpr 
-         child cases          : ScalarExprListStatementListPairList 
-         child els            : StatementList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative ContinueStatement:
-         child ann            : {Annotation}
-         child lb             : {Maybe String}
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Copy:
-         child ann            : {Annotation}
-         child table          : {String}
-         child targetCols     : {[String]}
-         child source         : {CopySource}
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative CopyData:
-         child ann            : {Annotation}
-         child insData        : {String}
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative CreateDomain:
-         child ann            : {Annotation}
-         child name           : {String}
-         child typ            : TypeName 
-         child checkName      : {String}
-         child check          : MaybeBoolExpr 
-         visit 0:
-            local libUpdates  : _
-            local tpe         : {Either [TypeError] Type}
-            local backTree    : _
-            local statementType : {Maybe StatementType}
-            local catUpdates  : {[CatalogUpdate]}
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative CreateFunction:
-         child ann            : {Annotation}
-         child name           : {String}
-         child params         : ParamDefList 
-         child rettype        : TypeName 
-         child rep            : {Replace}
-         child lang           : {Language}
-         child body           : FnBody 
-         child vol            : {Volatility}
-         visit 0:
-            local libUpdates  : _
-            local tpe         : {Either [TypeError] Type}
-            local catUpdates  : {[CatalogUpdate]}
-            local backTree    : _
-            local statementType : {Maybe StatementType}
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative CreateLanguage:
-         child ann            : {Annotation}
-         child name           : {String}
-         visit 0:
-            local libUpdates  : _
-            local tpe         : {Either [TypeError] Type}
-            local backTree    : _
-            local statementType : {Maybe StatementType}
-            local catUpdates  : {[CatalogUpdate]}
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative CreateSequence:
-         child ann            : {Annotation}
-         child name           : {String}
-         child incr           : {Integer}
-         child min            : {Integer}
-         child max            : {Integer}
-         child start          : {Integer}
-         child cache          : {Integer}
-         visit 0:
-            local libUpdates  : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative CreateTable:
-         child ann            : {Annotation}
-         child name           : {String}
-         child atts           : AttributeDefList 
-         child cons           : ConstraintList 
-         visit 0:
-            local libUpdates  : _
-            local tpe         : {Either [TypeError] Type}
-            local catUpdates  : {[CatalogUpdate]}
-            local attrs       : {[(String,Type)]}
-            local statementType : {Maybe StatementType}
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative CreateTableAs:
-         child ann            : {Annotation}
-         child name           : {String}
-         child expr           : QueryExpr 
-         visit 0:
-            local libUpdates  : _
-            local tpe         : {Either [TypeError] Type}
-            local catUpdates  : {[CatalogUpdate]}
-            local attrs       : {Either [TypeError] [(String,Type)]}
-            local backTree    : _
-            local statementType : {Maybe StatementType}
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative CreateTrigger:
-         child ann            : {Annotation}
-         child name           : {String}
-         child wh             : {TriggerWhen}
-         child events         : {[TriggerEvent]}
-         child tbl            : {String}
-         child firing         : {TriggerFire}
-         child fnName         : {String}
-         child fnArgs         : ScalarExprList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative CreateType:
-         child ann            : {Annotation}
-         child name           : {String}
-         child atts           : TypeAttributeDefList 
-         visit 0:
-            local libUpdates  : _
-            local tpe         : {Either [TypeError] Type}
-            local attrs       : _
-            local backTree    : _
-            local statementType : {Maybe StatementType}
-            local catUpdates  : {[CatalogUpdate]}
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative CreateView:
-         child ann            : {Annotation}
-         child name           : {String}
-         child colNames       : {Maybe [String]}
-         child expr           : QueryExpr 
-         visit 0:
-            local libUpdates  : _
-            local tpe         : {Either [TypeError] Type}
-            local backTree    : _
-            local catUpdates  : {[CatalogUpdate]}
-            local statementType : {Maybe StatementType}
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Delete:
-         child ann            : {Annotation}
-         child table          : SQIdentifier 
-         child using          : TableRefList 
-         child whr            : MaybeBoolExpr 
-         child returning      : MaybeSelectList 
-         visit 0:
-            local libUpdates  : _
-            local tpe         : {Either [TypeError] Type}
-            local statementType : {Maybe StatementType}
-            local backTree    : _
-            local catUpdates  : {[CatalogUpdate]}
-            local lib         : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative DropFunction:
-         child ann            : {Annotation}
-         child ifE            : {IfExists}
-         child sigs           : StringTypeNameListPairList 
-         child cascade        : {Cascade}
-         visit 0:
-            local libUpdates  : _
-            local tpe         : {Either [TypeError] Type}
-            local backTree    : _
-            local catUpdates  : {[CatalogUpdate]}
-            local statementType : {Maybe StatementType}
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative DropSomething:
-         child ann            : {Annotation}
-         child dropType       : {DropType}
-         child ifE            : {IfExists}
-         child names          : {[String]}
-         child cascade        : {Cascade}
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Execute:
-         child ann            : {Annotation}
-         child expr           : ScalarExpr 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative ExitStatement:
-         child ann            : {Annotation}
-         child lb             : {Maybe String}
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative ForIntegerStatement:
-         child ann            : {Annotation}
-         child lb             : {Maybe String}
-         child var            : ScalarExpr 
-         child from           : ScalarExpr 
-         child to             : ScalarExpr 
-         child sts            : StatementList 
-         visit 0:
-            local libUpdates  : _
-            local tpe         : {Either [TypeError] Type}
-            local implicitVar : _
-            local backTree    : _
-            local catUpdates  : {[CatalogUpdate]}
-            local statementType : {Maybe StatementType}
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative ForQueryStatement:
-         child ann            : {Annotation}
-         child lb             : {Maybe String}
-         child var            : ScalarExpr 
-         child sel            : QueryExpr 
-         child sts            : StatementList 
-         visit 0:
-            local libUpdates  : _
-            local tpe         : {Either [TypeError] Type}
-            local backTree    : _
-            local catUpdates  : {[CatalogUpdate]}
-            local statementType : {Maybe StatementType}
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative If:
-         child ann            : {Annotation}
-         child cases          : ScalarExprStatementListPairList 
-         child els            : StatementList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Insert:
-         child ann            : {Annotation}
-         child table          : SQIdentifier 
-         child targetCols     : {[String]}
-         child insData        : QueryExpr 
-         child returning      : MaybeSelectList 
-         visit 0:
-            local libUpdates  : _
-            local tpe         : {Either [TypeError] Type}
-            local statementType : {Maybe StatementType}
-            local columnTypes : {Either [TypeError] [(String,Type)]}
-            local backTree    : _
-            local catUpdates  : {[CatalogUpdate]}
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Into:
-         child ann            : {Annotation}
-         child strict         : {Bool}
-         child into           : ScalarExprList 
-         child stmt           : Statement 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative LoopStatement:
-         child ann            : {Annotation}
-         child lb             : {Maybe String}
-         child sts            : StatementList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Notify:
-         child ann            : {Annotation}
-         child name           : {String}
-         visit 0:
-            local libUpdates  : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative NullStatement:
-         child ann            : {Annotation}
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Perform:
-         child ann            : {Annotation}
-         child expr           : ScalarExpr 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative QueryStatement:
-         child ann            : {Annotation}
-         child ex             : QueryExpr 
-         visit 0:
-            local tpe         : {Either [TypeError] Type}
-            local statementType : {Maybe StatementType}
-            local backTree    : _
-            local catUpdates  : {[CatalogUpdate]}
-            local libUpdates  : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Raise:
-         child ann            : {Annotation}
-         child level          : {RaiseType}
-         child message        : {String}
-         child args           : ScalarExprList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Return:
-         child ann            : {Annotation}
-         child value          : MaybeScalarExpr 
-         visit 0:
-            local libUpdates  : _
-            local tpe         : {Either [TypeError] Type}
-            local backTree    : _
-            local catUpdates  : {[CatalogUpdate]}
-            local statementType : {Maybe StatementType}
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative ReturnNext:
-         child ann            : {Annotation}
-         child expr           : ScalarExpr 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative ReturnQuery:
-         child ann            : {Annotation}
-         child sel            : QueryExpr 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Set:
-         child ann            : {Annotation}
-         child name           : {String}
-         child values         : {[SetValue]}
-         visit 0:
-            local libUpdates  : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Truncate:
-         child ann            : {Annotation}
-         child tables         : {[String]}
-         child restartIdentity : {RestartIdentity}
-         child cascade        : {Cascade}
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Update:
-         child ann            : {Annotation}
-         child table          : SQIdentifier 
-         child assigns        : ScalarExprList 
-         child fromList       : TableRefList 
-         child whr            : MaybeBoolExpr 
-         child returning      : MaybeSelectList 
-         visit 0:
-            local libUpdates  : _
-            local tpe         : {Either [TypeError] Type}
-            local statementType : {Maybe StatementType}
-            local backTree    : _
-            local catUpdates  : {[CatalogUpdate]}
-            local lib         : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative WhileStatement:
-         child ann            : {Annotation}
-         child lb             : {Maybe String}
-         child expr           : ScalarExpr 
-         child sts            : StatementList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-data Statement  = AlterSequence (Annotation) (String) (SQIdentifier ) 
-                | AlterTable (Annotation) (String) (AlterTableActionList ) 
-                | Assignment (Annotation) (ScalarExpr ) (ScalarExpr ) 
-                | Block (Annotation) ((Maybe String)) (VarDefList ) (StatementList ) 
-                | CaseStatement (Annotation) (ScalarExprListStatementListPairList ) (StatementList ) 
-                | CaseStatementSimple (Annotation) (ScalarExpr ) (ScalarExprListStatementListPairList ) (StatementList ) 
-                | ContinueStatement (Annotation) ((Maybe String)) 
-                | Copy (Annotation) (String) (([String])) (CopySource) 
-                | CopyData (Annotation) (String) 
-                | CreateDomain (Annotation) (String) (TypeName ) (String) (MaybeBoolExpr ) 
-                | CreateFunction (Annotation) (String) (ParamDefList ) (TypeName ) (Replace) (Language) (FnBody ) (Volatility) 
-                | CreateLanguage (Annotation) (String) 
-                | CreateSequence (Annotation) (String) (Integer) (Integer) (Integer) (Integer) (Integer) 
-                | CreateTable (Annotation) (String) (AttributeDefList ) (ConstraintList ) 
-                | CreateTableAs (Annotation) (String) (QueryExpr ) 
-                | CreateTrigger (Annotation) (String) (TriggerWhen) (([TriggerEvent])) (String) (TriggerFire) (String) (ScalarExprList ) 
-                | CreateType (Annotation) (String) (TypeAttributeDefList ) 
-                | CreateView (Annotation) (String) ((Maybe [String])) (QueryExpr ) 
-                | Delete (Annotation) (SQIdentifier ) (TableRefList ) (MaybeBoolExpr ) (MaybeSelectList ) 
-                | DropFunction (Annotation) (IfExists) (StringTypeNameListPairList ) (Cascade) 
-                | DropSomething (Annotation) (DropType) (IfExists) (([String])) (Cascade) 
-                | Execute (Annotation) (ScalarExpr ) 
-                | ExitStatement (Annotation) ((Maybe String)) 
-                | ForIntegerStatement (Annotation) ((Maybe String)) (ScalarExpr ) (ScalarExpr ) (ScalarExpr ) (StatementList ) 
-                | ForQueryStatement (Annotation) ((Maybe String)) (ScalarExpr ) (QueryExpr ) (StatementList ) 
-                | If (Annotation) (ScalarExprStatementListPairList ) (StatementList ) 
-                | Insert (Annotation) (SQIdentifier ) (([String])) (QueryExpr ) (MaybeSelectList ) 
-                | Into (Annotation) (Bool) (ScalarExprList ) (Statement ) 
-                | LoopStatement (Annotation) ((Maybe String)) (StatementList ) 
-                | Notify (Annotation) (String) 
-                | NullStatement (Annotation) 
-                | Perform (Annotation) (ScalarExpr ) 
-                | QueryStatement (Annotation) (QueryExpr ) 
-                | Raise (Annotation) (RaiseType) (String) (ScalarExprList ) 
-                | Return (Annotation) (MaybeScalarExpr ) 
-                | ReturnNext (Annotation) (ScalarExpr ) 
-                | ReturnQuery (Annotation) (QueryExpr ) 
-                | Set (Annotation) (String) (([SetValue])) 
-                | Truncate (Annotation) (([String])) (RestartIdentity) (Cascade) 
-                | Update (Annotation) (SQIdentifier ) (ScalarExprList ) (TableRefList ) (MaybeBoolExpr ) (MaybeSelectList ) 
-                | WhileStatement (Annotation) ((Maybe String)) (ScalarExpr ) (StatementList ) 
-                deriving ( Data,Eq,Show,Typeable)
--- cata
-sem_Statement :: Statement  ->
-                 T_Statement 
-sem_Statement (AlterSequence _ann _name _ownedBy )  =
-    (sem_Statement_AlterSequence _ann _name (sem_SQIdentifier _ownedBy ) )
-sem_Statement (AlterTable _ann _name _actions )  =
-    (sem_Statement_AlterTable _ann _name (sem_AlterTableActionList _actions ) )
-sem_Statement (Assignment _ann _target _value )  =
-    (sem_Statement_Assignment _ann (sem_ScalarExpr _target ) (sem_ScalarExpr _value ) )
-sem_Statement (Block _ann _lb _vars _sts )  =
-    (sem_Statement_Block _ann _lb (sem_VarDefList _vars ) (sem_StatementList _sts ) )
-sem_Statement (CaseStatement _ann _cases _els )  =
-    (sem_Statement_CaseStatement _ann (sem_ScalarExprListStatementListPairList _cases ) (sem_StatementList _els ) )
-sem_Statement (CaseStatementSimple _ann _val _cases _els )  =
-    (sem_Statement_CaseStatementSimple _ann (sem_ScalarExpr _val ) (sem_ScalarExprListStatementListPairList _cases ) (sem_StatementList _els ) )
-sem_Statement (ContinueStatement _ann _lb )  =
-    (sem_Statement_ContinueStatement _ann _lb )
-sem_Statement (Copy _ann _table _targetCols _source )  =
-    (sem_Statement_Copy _ann _table _targetCols _source )
-sem_Statement (CopyData _ann _insData )  =
-    (sem_Statement_CopyData _ann _insData )
-sem_Statement (CreateDomain _ann _name _typ _checkName _check )  =
-    (sem_Statement_CreateDomain _ann _name (sem_TypeName _typ ) _checkName (sem_MaybeBoolExpr _check ) )
-sem_Statement (CreateFunction _ann _name _params _rettype _rep _lang _body _vol )  =
-    (sem_Statement_CreateFunction _ann _name (sem_ParamDefList _params ) (sem_TypeName _rettype ) _rep _lang (sem_FnBody _body ) _vol )
-sem_Statement (CreateLanguage _ann _name )  =
-    (sem_Statement_CreateLanguage _ann _name )
-sem_Statement (CreateSequence _ann _name _incr _min _max _start _cache )  =
-    (sem_Statement_CreateSequence _ann _name _incr _min _max _start _cache )
-sem_Statement (CreateTable _ann _name _atts _cons )  =
-    (sem_Statement_CreateTable _ann _name (sem_AttributeDefList _atts ) (sem_ConstraintList _cons ) )
-sem_Statement (CreateTableAs _ann _name _expr )  =
-    (sem_Statement_CreateTableAs _ann _name (sem_QueryExpr _expr ) )
-sem_Statement (CreateTrigger _ann _name _wh _events _tbl _firing _fnName _fnArgs )  =
-    (sem_Statement_CreateTrigger _ann _name _wh _events _tbl _firing _fnName (sem_ScalarExprList _fnArgs ) )
-sem_Statement (CreateType _ann _name _atts )  =
-    (sem_Statement_CreateType _ann _name (sem_TypeAttributeDefList _atts ) )
-sem_Statement (CreateView _ann _name _colNames _expr )  =
-    (sem_Statement_CreateView _ann _name _colNames (sem_QueryExpr _expr ) )
-sem_Statement (Delete _ann _table _using _whr _returning )  =
-    (sem_Statement_Delete _ann (sem_SQIdentifier _table ) (sem_TableRefList _using ) (sem_MaybeBoolExpr _whr ) (sem_MaybeSelectList _returning ) )
-sem_Statement (DropFunction _ann _ifE _sigs _cascade )  =
-    (sem_Statement_DropFunction _ann _ifE (sem_StringTypeNameListPairList _sigs ) _cascade )
-sem_Statement (DropSomething _ann _dropType _ifE _names _cascade )  =
-    (sem_Statement_DropSomething _ann _dropType _ifE _names _cascade )
-sem_Statement (Execute _ann _expr )  =
-    (sem_Statement_Execute _ann (sem_ScalarExpr _expr ) )
-sem_Statement (ExitStatement _ann _lb )  =
-    (sem_Statement_ExitStatement _ann _lb )
-sem_Statement (ForIntegerStatement _ann _lb _var _from _to _sts )  =
-    (sem_Statement_ForIntegerStatement _ann _lb (sem_ScalarExpr _var ) (sem_ScalarExpr _from ) (sem_ScalarExpr _to ) (sem_StatementList _sts ) )
-sem_Statement (ForQueryStatement _ann _lb _var _sel _sts )  =
-    (sem_Statement_ForQueryStatement _ann _lb (sem_ScalarExpr _var ) (sem_QueryExpr _sel ) (sem_StatementList _sts ) )
-sem_Statement (If _ann _cases _els )  =
-    (sem_Statement_If _ann (sem_ScalarExprStatementListPairList _cases ) (sem_StatementList _els ) )
-sem_Statement (Insert _ann _table _targetCols _insData _returning )  =
-    (sem_Statement_Insert _ann (sem_SQIdentifier _table ) _targetCols (sem_QueryExpr _insData ) (sem_MaybeSelectList _returning ) )
-sem_Statement (Into _ann _strict _into _stmt )  =
-    (sem_Statement_Into _ann _strict (sem_ScalarExprList _into ) (sem_Statement _stmt ) )
-sem_Statement (LoopStatement _ann _lb _sts )  =
-    (sem_Statement_LoopStatement _ann _lb (sem_StatementList _sts ) )
-sem_Statement (Notify _ann _name )  =
-    (sem_Statement_Notify _ann _name )
-sem_Statement (NullStatement _ann )  =
-    (sem_Statement_NullStatement _ann )
-sem_Statement (Perform _ann _expr )  =
-    (sem_Statement_Perform _ann (sem_ScalarExpr _expr ) )
-sem_Statement (QueryStatement _ann _ex )  =
-    (sem_Statement_QueryStatement _ann (sem_QueryExpr _ex ) )
-sem_Statement (Raise _ann _level _message _args )  =
-    (sem_Statement_Raise _ann _level _message (sem_ScalarExprList _args ) )
-sem_Statement (Return _ann _value )  =
-    (sem_Statement_Return _ann (sem_MaybeScalarExpr _value ) )
-sem_Statement (ReturnNext _ann _expr )  =
-    (sem_Statement_ReturnNext _ann (sem_ScalarExpr _expr ) )
-sem_Statement (ReturnQuery _ann _sel )  =
-    (sem_Statement_ReturnQuery _ann (sem_QueryExpr _sel ) )
-sem_Statement (Set _ann _name _values )  =
-    (sem_Statement_Set _ann _name _values )
-sem_Statement (Truncate _ann _tables _restartIdentity _cascade )  =
-    (sem_Statement_Truncate _ann _tables _restartIdentity _cascade )
-sem_Statement (Update _ann _table _assigns _fromList _whr _returning )  =
-    (sem_Statement_Update _ann (sem_SQIdentifier _table ) (sem_ScalarExprList _assigns ) (sem_TableRefList _fromList ) (sem_MaybeBoolExpr _whr ) (sem_MaybeSelectList _returning ) )
-sem_Statement (WhileStatement _ann _lb _expr _sts )  =
-    (sem_Statement_WhileStatement _ann _lb (sem_ScalarExpr _expr ) (sem_StatementList _sts ) )
--- semantic domain
-type T_Statement  = Catalog ->
-                    IDEnv ->
-                    Catalog ->
-                    LocalBindings ->
-                    ( Statement ,([CatalogUpdate]),Statement ,([LocalBindingsUpdate]),Statement )
-data Inh_Statement  = Inh_Statement {cat_Inh_Statement :: Catalog,idenv_Inh_Statement :: IDEnv,inProducedCat_Inh_Statement :: Catalog,lib_Inh_Statement :: LocalBindings}
-data Syn_Statement  = Syn_Statement {annotatedTree_Syn_Statement :: Statement ,catUpdates_Syn_Statement :: ([CatalogUpdate]),fixedUpIdentifiersTree_Syn_Statement :: Statement ,libUpdates_Syn_Statement :: ([LocalBindingsUpdate]),originalTree_Syn_Statement :: Statement }
-wrap_Statement :: T_Statement  ->
-                  Inh_Statement  ->
-                  Syn_Statement 
-wrap_Statement sem (Inh_Statement _lhsIcat _lhsIidenv _lhsIinProducedCat _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIinProducedCat _lhsIlib 
-     in  (Syn_Statement _lhsOannotatedTree _lhsOcatUpdates _lhsOfixedUpIdentifiersTree _lhsOlibUpdates _lhsOoriginalTree ))
-sem_Statement_AlterSequence :: Annotation ->
-                               String ->
-                               T_SQIdentifier  ->
-                               T_Statement 
-sem_Statement_AlterSequence ann_ name_ ownedBy_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _lhsOannotatedTree :: Statement 
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              _ownedByOcat :: Catalog
-              _ownedByOidenv :: IDEnv
-              _ownedByOlib :: LocalBindings
-              _ownedByIannotatedTree :: SQIdentifier 
-              _ownedByIfixedUpIdentifiersTree :: SQIdentifier 
-              _ownedByIoriginalTree :: SQIdentifier 
-              _ownedByItbAnnotatedTree :: SQIdentifier 
-              _ownedByItbUType :: (Maybe ([(String,Type)],[(String,Type)]))
-              -- "./TypeChecking/Statements.ag"(line 94, column 9)
-              _libUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 116, column 9)
-              _lhsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 117, column 9)
-              _lhsOlibUpdates =
-                  []
-              -- self rule
-              _annotatedTree =
-                  AlterSequence ann_ name_ _ownedByIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  AlterSequence ann_ name_ _ownedByIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  AlterSequence ann_ name_ _ownedByIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _ownedByOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _ownedByOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _ownedByOlib =
-                  _lhsIlib
-              ( _ownedByIannotatedTree,_ownedByIfixedUpIdentifiersTree,_ownedByIoriginalTree,_ownedByItbAnnotatedTree,_ownedByItbUType) =
-                  ownedBy_ _ownedByOcat _ownedByOidenv _ownedByOlib 
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_AlterTable :: Annotation ->
-                            String ->
-                            T_AlterTableActionList  ->
-                            T_Statement 
-sem_Statement_AlterTable ann_ name_ actions_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _lhsOannotatedTree :: Statement 
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              _actionsOcat :: Catalog
-              _actionsOidenv :: IDEnv
-              _actionsOlib :: LocalBindings
-              _actionsIannotatedTree :: AlterTableActionList 
-              _actionsIfixedUpIdentifiersTree :: AlterTableActionList 
-              _actionsIoriginalTree :: AlterTableActionList 
-              -- "./TypeChecking/Statements.ag"(line 116, column 9)
-              _lhsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 117, column 9)
-              _lhsOlibUpdates =
-                  []
-              -- self rule
-              _annotatedTree =
-                  AlterTable ann_ name_ _actionsIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  AlterTable ann_ name_ _actionsIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  AlterTable ann_ name_ _actionsIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _actionsOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _actionsOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _actionsOlib =
-                  _lhsIlib
-              ( _actionsIannotatedTree,_actionsIfixedUpIdentifiersTree,_actionsIoriginalTree) =
-                  actions_ _actionsOcat _actionsOidenv _actionsOlib 
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_Assignment :: Annotation ->
-                            T_ScalarExpr  ->
-                            T_ScalarExpr  ->
-                            T_Statement 
-sem_Statement_Assignment ann_ target_ value_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: Statement 
-              _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _tpe :: (Either [TypeError] Type)
-              _catUpdates :: ([CatalogUpdate])
-              _statementType :: (Maybe StatementType)
-              _valueOexpectedType :: (Maybe Type)
-              _targetOexpectedType :: (Maybe Type)
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              _targetOcat :: Catalog
-              _targetOidenv :: IDEnv
-              _targetOlib :: LocalBindings
-              _valueOcat :: Catalog
-              _valueOidenv :: IDEnv
-              _valueOlib :: LocalBindings
-              _targetIannotatedTree :: ScalarExpr 
-              _targetIfixedUpIdentifiersTree :: ScalarExpr 
-              _targetIoriginalTree :: ScalarExpr 
-              _targetIuType :: (Maybe Type)
-              _valueIannotatedTree :: ScalarExpr 
-              _valueIfixedUpIdentifiersTree :: ScalarExpr 
-              _valueIoriginalTree :: ScalarExpr 
-              _valueIuType :: (Maybe Type)
-              -- "./TypeChecking/Statements.ag"(line 82, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                      (\a -> a {stType = _statementType
-                               ,catUpd = _catUpdates    }) $
-                  setTypeAddErrors _tpe     _backTree
-              -- "./TypeChecking/Statements.ag"(line 88, column 9)
-              _lhsOcatUpdates =
-                  _catUpdates
-              -- "./TypeChecking/Statements.ag"(line 89, column 9)
-              _lhsOlibUpdates =
-                  _libUpdates
-              -- "./TypeChecking/Statements.ag"(line 94, column 9)
-              _libUpdates =
-                  []
-              -- "./TypeChecking/Plpgsql/Plpgsql.ag"(line 20, column 9)
-              _tpe =
-                  do
-                  fromType <- lmt _valueIuType
-                  toType <- lmt _targetIuType
-                  checkAssignmentValid _lhsIcat fromType toType
-                  return $ Pseudo Void
-              -- "./TypeChecking/Plpgsql/Plpgsql.ag"(line 26, column 9)
-              _backTree =
-                  Assignment ann_ _targetIannotatedTree _valueIannotatedTree
-              -- "./TypeChecking/Plpgsql/Plpgsql.ag"(line 27, column 9)
-              _catUpdates =
-                  []
-              -- "./TypeChecking/Plpgsql/Plpgsql.ag"(line 28, column 9)
-              _statementType =
-                  Nothing
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 109, column 18)
-              _valueOexpectedType =
-                  Nothing
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 115, column 18)
-              _targetOexpectedType =
-                  Nothing
-              -- self rule
-              _annotatedTree =
-                  Assignment ann_ _targetIannotatedTree _valueIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Assignment ann_ _targetIfixedUpIdentifiersTree _valueIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  Assignment ann_ _targetIoriginalTree _valueIoriginalTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _targetOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _targetOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _targetOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _valueOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _valueOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _valueOlib =
-                  _lhsIlib
-              ( _targetIannotatedTree,_targetIfixedUpIdentifiersTree,_targetIoriginalTree,_targetIuType) =
-                  target_ _targetOcat _targetOexpectedType _targetOidenv _targetOlib 
-              ( _valueIannotatedTree,_valueIfixedUpIdentifiersTree,_valueIoriginalTree,_valueIuType) =
-                  value_ _valueOcat _valueOexpectedType _valueOidenv _valueOlib 
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_Block :: Annotation ->
-                       (Maybe String) ->
-                       T_VarDefList  ->
-                       T_StatementList  ->
-                       T_Statement 
-sem_Statement_Block ann_ lb_ vars_ sts_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOcatUpdates :: ([CatalogUpdate])
-              _stsOcatUpdates :: ([CatalogUpdate])
-              _stsOlib :: LocalBindings
-              _lhsOannotatedTree :: Statement 
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _varsOcat :: Catalog
-              _varsOidenv :: IDEnv
-              _varsOlib :: LocalBindings
-              _stsOcat :: Catalog
-              _stsOidenv :: IDEnv
-              _stsOlibUpdates :: ([LocalBindingsUpdate])
-              _varsIannotatedTree :: VarDefList 
-              _varsIdefs :: ([(String,Maybe Type)])
-              _varsIfixedUpIdentifiersTree :: VarDefList 
-              _varsIoriginalTree :: VarDefList 
-              _stsIannotatedTree :: StatementList 
-              _stsIfixedUpIdentifiersTree :: StatementList 
-              _stsIoriginalTree :: StatementList 
-              _stsIproducedCat :: Catalog
-              _stsIproducedLib :: LocalBindings
-              -- "./TypeChecking/Statements.ag"(line 94, column 9)
-              _libUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 100, column 13)
-              _lhsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 101, column 13)
-              _stsOcatUpdates =
-                  []
-              -- "./TypeChecking/Plpgsql/Block.ag"(line 22, column 9)
-              _stsOlib =
-                  fromRight _lhsIlib $
-                  lbUpdate _lhsIcat
-                           (LBIds "declarations" lb_ $ mapMaybe lv _varsIdefs)
-                           _lhsIlib
-                  where
-                    lv (_,Nothing) = Nothing
-                    lv (s,Just t) = Just (s,t)
-              -- self rule
-              _annotatedTree =
-                  Block ann_ lb_ _varsIannotatedTree _stsIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Block ann_ lb_ _varsIfixedUpIdentifiersTree _stsIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  Block ann_ lb_ _varsIoriginalTree _stsIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (from local)
-              _lhsOlibUpdates =
-                  _libUpdates
-              -- copy rule (down)
-              _varsOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _varsOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _varsOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _stsOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _stsOidenv =
-                  _lhsIidenv
-              -- copy rule (from local)
-              _stsOlibUpdates =
-                  _libUpdates
-              ( _varsIannotatedTree,_varsIdefs,_varsIfixedUpIdentifiersTree,_varsIoriginalTree) =
-                  vars_ _varsOcat _varsOidenv _varsOlib 
-              ( _stsIannotatedTree,_stsIfixedUpIdentifiersTree,_stsIoriginalTree,_stsIproducedCat,_stsIproducedLib) =
-                  sts_ _stsOcat _stsOcatUpdates _stsOidenv _stsOlib _stsOlibUpdates 
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_CaseStatement :: Annotation ->
-                               T_ScalarExprListStatementListPairList  ->
-                               T_StatementList  ->
-                               T_Statement 
-sem_Statement_CaseStatement ann_ cases_ els_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _elsOcatUpdates :: ([CatalogUpdate])
-              _elsOlibUpdates :: ([LocalBindingsUpdate])
-              _lhsOannotatedTree :: Statement 
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              _casesOcat :: Catalog
-              _casesOidenv :: IDEnv
-              _casesOlib :: LocalBindings
-              _elsOcat :: Catalog
-              _elsOidenv :: IDEnv
-              _elsOlib :: LocalBindings
-              _casesIannotatedTree :: ScalarExprListStatementListPairList 
-              _casesIfixedUpIdentifiersTree :: ScalarExprListStatementListPairList 
-              _casesIoriginalTree :: ScalarExprListStatementListPairList 
-              _elsIannotatedTree :: StatementList 
-              _elsIfixedUpIdentifiersTree :: StatementList 
-              _elsIoriginalTree :: StatementList 
-              _elsIproducedCat :: Catalog
-              _elsIproducedLib :: LocalBindings
-              -- "./TypeChecking/Statements.ag"(line 116, column 9)
-              _lhsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 117, column 9)
-              _lhsOlibUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 134, column 9)
-              _elsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 135, column 9)
-              _elsOlibUpdates =
-                  []
-              -- self rule
-              _annotatedTree =
-                  CaseStatement ann_ _casesIannotatedTree _elsIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  CaseStatement ann_ _casesIfixedUpIdentifiersTree _elsIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  CaseStatement ann_ _casesIoriginalTree _elsIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _casesOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _casesOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _casesOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _elsOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _elsOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _elsOlib =
-                  _lhsIlib
-              ( _casesIannotatedTree,_casesIfixedUpIdentifiersTree,_casesIoriginalTree) =
-                  cases_ _casesOcat _casesOidenv _casesOlib 
-              ( _elsIannotatedTree,_elsIfixedUpIdentifiersTree,_elsIoriginalTree,_elsIproducedCat,_elsIproducedLib) =
-                  els_ _elsOcat _elsOcatUpdates _elsOidenv _elsOlib _elsOlibUpdates 
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_CaseStatementSimple :: Annotation ->
-                                     T_ScalarExpr  ->
-                                     T_ScalarExprListStatementListPairList  ->
-                                     T_StatementList  ->
-                                     T_Statement 
-sem_Statement_CaseStatementSimple ann_ val_ cases_ els_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _elsOcatUpdates :: ([CatalogUpdate])
-              _elsOlibUpdates :: ([LocalBindingsUpdate])
-              _valOexpectedType :: (Maybe Type)
-              _lhsOannotatedTree :: Statement 
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              _valOcat :: Catalog
-              _valOidenv :: IDEnv
-              _valOlib :: LocalBindings
-              _casesOcat :: Catalog
-              _casesOidenv :: IDEnv
-              _casesOlib :: LocalBindings
-              _elsOcat :: Catalog
-              _elsOidenv :: IDEnv
-              _elsOlib :: LocalBindings
-              _valIannotatedTree :: ScalarExpr 
-              _valIfixedUpIdentifiersTree :: ScalarExpr 
-              _valIoriginalTree :: ScalarExpr 
-              _valIuType :: (Maybe Type)
-              _casesIannotatedTree :: ScalarExprListStatementListPairList 
-              _casesIfixedUpIdentifiersTree :: ScalarExprListStatementListPairList 
-              _casesIoriginalTree :: ScalarExprListStatementListPairList 
-              _elsIannotatedTree :: StatementList 
-              _elsIfixedUpIdentifiersTree :: StatementList 
-              _elsIoriginalTree :: StatementList 
-              _elsIproducedCat :: Catalog
-              _elsIproducedLib :: LocalBindings
-              -- "./TypeChecking/Statements.ag"(line 116, column 9)
-              _lhsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 117, column 9)
-              _lhsOlibUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 134, column 9)
-              _elsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 135, column 9)
-              _elsOlibUpdates =
-                  []
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 110, column 27)
-              _valOexpectedType =
-                  Nothing
-              -- self rule
-              _annotatedTree =
-                  CaseStatementSimple ann_ _valIannotatedTree _casesIannotatedTree _elsIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  CaseStatementSimple ann_ _valIfixedUpIdentifiersTree _casesIfixedUpIdentifiersTree _elsIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  CaseStatementSimple ann_ _valIoriginalTree _casesIoriginalTree _elsIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _valOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _valOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _valOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _casesOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _casesOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _casesOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _elsOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _elsOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _elsOlib =
-                  _lhsIlib
-              ( _valIannotatedTree,_valIfixedUpIdentifiersTree,_valIoriginalTree,_valIuType) =
-                  val_ _valOcat _valOexpectedType _valOidenv _valOlib 
-              ( _casesIannotatedTree,_casesIfixedUpIdentifiersTree,_casesIoriginalTree) =
-                  cases_ _casesOcat _casesOidenv _casesOlib 
-              ( _elsIannotatedTree,_elsIfixedUpIdentifiersTree,_elsIoriginalTree,_elsIproducedCat,_elsIproducedLib) =
-                  els_ _elsOcat _elsOcatUpdates _elsOidenv _elsOlib _elsOlibUpdates 
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_ContinueStatement :: Annotation ->
-                                   (Maybe String) ->
-                                   T_Statement 
-sem_Statement_ContinueStatement ann_ lb_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _lhsOannotatedTree :: Statement 
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              -- "./TypeChecking/Statements.ag"(line 116, column 9)
-              _lhsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 117, column 9)
-              _lhsOlibUpdates =
-                  []
-              -- self rule
-              _annotatedTree =
-                  ContinueStatement ann_ lb_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  ContinueStatement ann_ lb_
-              -- self rule
-              _originalTree =
-                  ContinueStatement ann_ lb_
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_Copy :: Annotation ->
-                      String ->
-                      ([String]) ->
-                      CopySource ->
-                      T_Statement 
-sem_Statement_Copy ann_ table_ targetCols_ source_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _lhsOannotatedTree :: Statement 
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              -- "./TypeChecking/Statements.ag"(line 116, column 9)
-              _lhsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 117, column 9)
-              _lhsOlibUpdates =
-                  []
-              -- self rule
-              _annotatedTree =
-                  Copy ann_ table_ targetCols_ source_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Copy ann_ table_ targetCols_ source_
-              -- self rule
-              _originalTree =
-                  Copy ann_ table_ targetCols_ source_
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_CopyData :: Annotation ->
-                          String ->
-                          T_Statement 
-sem_Statement_CopyData ann_ insData_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _lhsOannotatedTree :: Statement 
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              -- "./TypeChecking/Statements.ag"(line 116, column 9)
-              _lhsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 117, column 9)
-              _lhsOlibUpdates =
-                  []
-              -- self rule
-              _annotatedTree =
-                  CopyData ann_ insData_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  CopyData ann_ insData_
-              -- self rule
-              _originalTree =
-                  CopyData ann_ insData_
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_CreateDomain :: Annotation ->
-                              String ->
-                              T_TypeName  ->
-                              String ->
-                              T_MaybeBoolExpr  ->
-                              T_Statement 
-sem_Statement_CreateDomain ann_ name_ typ_ checkName_ check_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: Statement 
-              _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _tpe :: (Either [TypeError] Type)
-              _statementType :: (Maybe StatementType)
-              _catUpdates :: ([CatalogUpdate])
-              _checkOlib :: LocalBindings
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              _typOcat :: Catalog
-              _typOidenv :: IDEnv
-              _typOlib :: LocalBindings
-              _checkOcat :: Catalog
-              _checkOidenv :: IDEnv
-              _typIannotatedTree :: TypeName 
-              _typIfixedUpIdentifiersTree :: TypeName 
-              _typInamedType :: (Maybe Type)
-              _typIoriginalTree :: TypeName 
-              _checkIannotatedTree :: MaybeBoolExpr 
-              _checkIfixedUpIdentifiersTree :: MaybeBoolExpr 
-              _checkIoriginalTree :: MaybeBoolExpr 
-              -- "./TypeChecking/Statements.ag"(line 82, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                      (\a -> a {stType = _statementType
-                               ,catUpd = _catUpdates    }) $
-                  setTypeAddErrors _tpe     _backTree
-              -- "./TypeChecking/Statements.ag"(line 88, column 9)
-              _lhsOcatUpdates =
-                  _catUpdates
-              -- "./TypeChecking/Statements.ag"(line 89, column 9)
-              _lhsOlibUpdates =
-                  _libUpdates
-              -- "./TypeChecking/Statements.ag"(line 94, column 9)
-              _libUpdates =
-                  []
-              -- "./TypeChecking/Ddl/MiscCreates.ag"(line 65, column 9)
-              _tpe =
-                  Right $ Pseudo Void
-              -- "./TypeChecking/Ddl/MiscCreates.ag"(line 66, column 9)
-              _backTree =
-                  CreateDomain ann_ name_ _typIannotatedTree checkName_ _checkIannotatedTree
-              -- "./TypeChecking/Ddl/MiscCreates.ag"(line 67, column 9)
-              _statementType =
-                  Nothing
-              -- "./TypeChecking/Ddl/MiscCreates.ag"(line 68, column 9)
-              _catUpdates =
-                  maybe [] (\t -> [CatCreateDomain (DomainType name_) t]) _typInamedType
-              -- "./TypeChecking/Ddl/MiscCreates.ag"(line 70, column 9)
-              _checkOlib =
-                  either (const _lhsIlib) id $ do
-                  nt <- lmt _typInamedType
-                  lbUpdate _lhsIcat
-                    (LBIds "domain check value" Nothing [("value", nt)])
-                    _lhsIlib
-              -- self rule
-              _annotatedTree =
-                  CreateDomain ann_ name_ _typIannotatedTree checkName_ _checkIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  CreateDomain ann_ name_ _typIfixedUpIdentifiersTree checkName_ _checkIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  CreateDomain ann_ name_ _typIoriginalTree checkName_ _checkIoriginalTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _typOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _typOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _typOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _checkOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _checkOidenv =
-                  _lhsIidenv
-              ( _typIannotatedTree,_typIfixedUpIdentifiersTree,_typInamedType,_typIoriginalTree) =
-                  typ_ _typOcat _typOidenv _typOlib 
-              ( _checkIannotatedTree,_checkIfixedUpIdentifiersTree,_checkIoriginalTree) =
-                  check_ _checkOcat _checkOidenv _checkOlib 
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_CreateFunction :: Annotation ->
-                                String ->
-                                T_ParamDefList  ->
-                                T_TypeName  ->
-                                Replace ->
-                                Language ->
-                                T_FnBody  ->
-                                Volatility ->
-                                T_Statement 
-sem_Statement_CreateFunction ann_ name_ params_ rettype_ rep_ lang_ body_ vol_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: Statement 
-              _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _bodyOlib :: LocalBindings
-              _paramsOpos :: Int
-              _tpe :: (Either [TypeError] Type)
-              _catUpdates :: ([CatalogUpdate])
-              _statementType :: (Maybe StatementType)
-              _bodyOcat :: Catalog
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              _paramsOcat :: Catalog
-              _paramsOidenv :: IDEnv
-              _paramsOlib :: LocalBindings
-              _rettypeOcat :: Catalog
-              _rettypeOidenv :: IDEnv
-              _rettypeOlib :: LocalBindings
-              _bodyOidenv :: IDEnv
-              _paramsIannotatedTree :: ParamDefList 
-              _paramsIfixedUpIdentifiersTree :: ParamDefList 
-              _paramsIoriginalTree :: ParamDefList 
-              _paramsIparams :: ([(ParamName, Maybe Type)])
-              _rettypeIannotatedTree :: TypeName 
-              _rettypeIfixedUpIdentifiersTree :: TypeName 
-              _rettypeInamedType :: (Maybe Type)
-              _rettypeIoriginalTree :: TypeName 
-              _bodyIannotatedTree :: FnBody 
-              _bodyIfixedUpIdentifiersTree :: FnBody 
-              _bodyIoriginalTree :: FnBody 
-              -- "./TypeChecking/Statements.ag"(line 82, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                      (\a -> a {stType = _statementType
-                               ,catUpd = _catUpdates    }) $
-                  setTypeAddErrors _tpe     _backTree
-              -- "./TypeChecking/Statements.ag"(line 88, column 9)
-              _lhsOcatUpdates =
-                  _catUpdates
-              -- "./TypeChecking/Statements.ag"(line 89, column 9)
-              _lhsOlibUpdates =
-                  _libUpdates
-              -- "./TypeChecking/Statements.ag"(line 94, column 9)
-              _libUpdates =
-                  []
-              -- "./TypeChecking/Ddl/CreateFunction.ag"(line 63, column 9)
-              _bodyOlib =
-                  either (const _lhsIlib) id $ do
-                  _ <- lmt _rettypeInamedType
-                  lbUpdate _lhsIcat (LBIds (name_ ++ " parameters") (Just name_) paramsNoPos) _lhsIlib
-                  >>= lbUpdate _lhsIcat (LBIds (name_ ++ " parameters") Nothing paramsPosOnly)
-                  where
-                    paramsPosOnly :: [(String,Type)]
-                    paramsPosOnly = mapMaybe prm _paramsIparams
-                    prm :: (ParamName,Maybe Type) -> Maybe (String,Type)
-                    prm (NamedParam p _,Just t) = Just ("$" ++ show p, t)
-                    prm (UnnamedParam p,Just t) = Just ("$" ++ show p, t)
-                    prm _ = Nothing
-                    paramsNoPos :: [(String,Type)]
-                    paramsNoPos = mapMaybe pnp _paramsIparams
-                    pnp :: (ParamName,Maybe Type) -> Maybe (String,Type)
-                    pnp (NamedParam _ n,Just t) = Just (n,t)
-                    pnp _ = Nothing
-              -- "./TypeChecking/Ddl/CreateFunction.ag"(line 79, column 9)
-              _paramsOpos =
-                  1
-              -- "./TypeChecking/Ddl/CreateFunction.ag"(line 88, column 9)
-              _tpe =
-                  Right $ Pseudo Void
-              -- "./TypeChecking/Ddl/CreateFunction.ag"(line 89, column 9)
-              _catUpdates =
-                  either (const []) id $ do
-                  let ps = mapMaybe lpt _paramsIparams
-                  rt <- lmt _rettypeInamedType
-                  return [CatCreateFunction FunName
-                                            (map toLower name_)
-                                            ps
-                                            rt
-                                            False]
-                  where
-                    lpt (_,Just t) = Just t
-                    lpt _ = Nothing
-              -- "./TypeChecking/Ddl/CreateFunction.ag"(line 101, column 9)
-              _backTree =
-                  CreateFunction ann_
-                                 name_
-                                 _paramsIannotatedTree
-                                 _rettypeIannotatedTree
-                                 rep_
-                                 lang_
-                                 _bodyIannotatedTree
-                                 vol_
-              -- "./TypeChecking/Ddl/CreateFunction.ag"(line 109, column 9)
-              _statementType =
-                  Nothing
-              -- "./TypeChecking/Ddl/CreateFunction.ag"(line 110, column 9)
-              _bodyOcat =
-                  _lhsIinProducedCat
-              -- self rule
-              _annotatedTree =
-                  CreateFunction ann_ name_ _paramsIannotatedTree _rettypeIannotatedTree rep_ lang_ _bodyIannotatedTree vol_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  CreateFunction ann_ name_ _paramsIfixedUpIdentifiersTree _rettypeIfixedUpIdentifiersTree rep_ lang_ _bodyIfixedUpIdentifiersTree vol_
-              -- self rule
-              _originalTree =
-                  CreateFunction ann_ name_ _paramsIoriginalTree _rettypeIoriginalTree rep_ lang_ _bodyIoriginalTree vol_
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _paramsOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _paramsOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _paramsOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _rettypeOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _rettypeOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _rettypeOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _bodyOidenv =
-                  _lhsIidenv
-              ( _paramsIannotatedTree,_paramsIfixedUpIdentifiersTree,_paramsIoriginalTree,_paramsIparams) =
-                  params_ _paramsOcat _paramsOidenv _paramsOlib _paramsOpos 
-              ( _rettypeIannotatedTree,_rettypeIfixedUpIdentifiersTree,_rettypeInamedType,_rettypeIoriginalTree) =
-                  rettype_ _rettypeOcat _rettypeOidenv _rettypeOlib 
-              ( _bodyIannotatedTree,_bodyIfixedUpIdentifiersTree,_bodyIoriginalTree) =
-                  body_ _bodyOcat _bodyOidenv _bodyOlib 
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_CreateLanguage :: Annotation ->
-                                String ->
-                                T_Statement 
-sem_Statement_CreateLanguage ann_ name_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: Statement 
-              _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _tpe :: (Either [TypeError] Type)
-              _statementType :: (Maybe StatementType)
-              _catUpdates :: ([CatalogUpdate])
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              -- "./TypeChecking/Statements.ag"(line 82, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                      (\a -> a {stType = _statementType
-                               ,catUpd = _catUpdates    }) $
-                  setTypeAddErrors _tpe     _backTree
-              -- "./TypeChecking/Statements.ag"(line 88, column 9)
-              _lhsOcatUpdates =
-                  _catUpdates
-              -- "./TypeChecking/Statements.ag"(line 89, column 9)
-              _lhsOlibUpdates =
-                  _libUpdates
-              -- "./TypeChecking/Statements.ag"(line 94, column 9)
-              _libUpdates =
-                  []
-              -- "./TypeChecking/Ddl/MiscCreates.ag"(line 78, column 9)
-              _tpe =
-                  Right $ Pseudo Void
-              -- "./TypeChecking/Ddl/MiscCreates.ag"(line 79, column 9)
-              _backTree =
-                  CreateLanguage ann_ name_
-              -- "./TypeChecking/Ddl/MiscCreates.ag"(line 80, column 9)
-              _statementType =
-                  Nothing
-              -- "./TypeChecking/Ddl/MiscCreates.ag"(line 81, column 9)
-              _catUpdates =
-                  [CatCreateFunction FunName "plpgsql_call_handler" [] (Pseudo LanguageHandler) False
-                  ,CatCreateFunction FunName "plpgsql_validator" [ScalarType "oid"] (Pseudo Void) False]
-              -- self rule
-              _annotatedTree =
-                  CreateLanguage ann_ name_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  CreateLanguage ann_ name_
-              -- self rule
-              _originalTree =
-                  CreateLanguage ann_ name_
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_CreateSequence :: Annotation ->
-                                String ->
-                                Integer ->
-                                Integer ->
-                                Integer ->
-                                Integer ->
-                                Integer ->
-                                T_Statement 
-sem_Statement_CreateSequence ann_ name_ incr_ min_ max_ start_ cache_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _lhsOannotatedTree :: Statement 
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              -- "./TypeChecking/Statements.ag"(line 94, column 9)
-              _libUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 116, column 9)
-              _lhsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 117, column 9)
-              _lhsOlibUpdates =
-                  []
-              -- self rule
-              _annotatedTree =
-                  CreateSequence ann_ name_ incr_ min_ max_ start_ cache_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  CreateSequence ann_ name_ incr_ min_ max_ start_ cache_
-              -- self rule
-              _originalTree =
-                  CreateSequence ann_ name_ incr_ min_ max_ start_ cache_
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_CreateTable :: Annotation ->
-                             String ->
-                             T_AttributeDefList  ->
-                             T_ConstraintList  ->
-                             T_Statement 
-sem_Statement_CreateTable ann_ name_ atts_ cons_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: Statement 
-              _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _tpe :: (Either [TypeError] Type)
-              _catUpdates :: ([CatalogUpdate])
-              _attrs :: ([(String,Type)])
-              _statementType :: (Maybe StatementType)
-              _consOlib :: LocalBindings
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              _attsOcat :: Catalog
-              _attsOidenv :: IDEnv
-              _attsOlib :: LocalBindings
-              _consOcat :: Catalog
-              _consOidenv :: IDEnv
-              _attsIannotatedTree :: AttributeDefList 
-              _attsIattrs :: ([(String, Maybe Type)])
-              _attsIfixedUpIdentifiersTree :: AttributeDefList 
-              _attsIoriginalTree :: AttributeDefList 
-              _consIannotatedTree :: ConstraintList 
-              _consIfixedUpIdentifiersTree :: ConstraintList 
-              _consIoriginalTree :: ConstraintList 
-              -- "./TypeChecking/Statements.ag"(line 82, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                      (\a -> a {stType = _statementType
-                               ,catUpd = _catUpdates    }) $
-                  setTypeAddErrors _tpe     _backTree
-              -- "./TypeChecking/Statements.ag"(line 88, column 9)
-              _lhsOcatUpdates =
-                  _catUpdates
-              -- "./TypeChecking/Statements.ag"(line 89, column 9)
-              _lhsOlibUpdates =
-                  _libUpdates
-              -- "./TypeChecking/Statements.ag"(line 94, column 9)
-              _libUpdates =
-                  []
-              -- "./TypeChecking/Ddl/CreateTable.ag"(line 31, column 9)
-              _tpe =
-                  Right $ Pseudo Void
-              -- "./TypeChecking/Ddl/CreateTable.ag"(line 32, column 9)
-              _catUpdates =
-                  [CatCreateTable name_ _attrs     defaultSystemColumns]
-              -- "./TypeChecking/Ddl/CreateTable.ag"(line 35, column 9)
-              _attrs =
-                  mapMaybe okAt _attsIattrs
-                  where
-                    okAt (s, Just t) = Just (s,t)
-                    okAt (_,Nothing) = Nothing
-              -- "./TypeChecking/Ddl/CreateTable.ag"(line 40, column 9)
-              _statementType =
-                  Nothing
-              -- "./TypeChecking/Ddl/CreateTable.ag"(line 41, column 9)
-              _backTree =
-                  CreateTable ann_
-                              name_
-                              _attsIannotatedTree
-                              _consIannotatedTree
-              -- "./TypeChecking/Ddl/CreateTable.ag"(line 45, column 9)
-              _consOlib =
-                  case lbUpdate _lhsIcat
-                         (LBIds "attributedefs" Nothing _attrs    )
-                         _lhsIlib of
-                     Left x -> error $ "statement-createtable-cons.lib " ++ show x
-                     Right e -> e
-              -- self rule
-              _annotatedTree =
-                  CreateTable ann_ name_ _attsIannotatedTree _consIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  CreateTable ann_ name_ _attsIfixedUpIdentifiersTree _consIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  CreateTable ann_ name_ _attsIoriginalTree _consIoriginalTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _attsOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _attsOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _attsOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _consOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _consOidenv =
-                  _lhsIidenv
-              ( _attsIannotatedTree,_attsIattrs,_attsIfixedUpIdentifiersTree,_attsIoriginalTree) =
-                  atts_ _attsOcat _attsOidenv _attsOlib 
-              ( _consIannotatedTree,_consIfixedUpIdentifiersTree,_consIoriginalTree) =
-                  cons_ _consOcat _consOidenv _consOlib 
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_CreateTableAs :: Annotation ->
-                               String ->
-                               T_QueryExpr  ->
-                               T_Statement 
-sem_Statement_CreateTableAs ann_ name_ expr_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: Statement 
-              _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _exprOcsql :: LocalBindings
-              _tpe :: (Either [TypeError] Type)
-              _catUpdates :: ([CatalogUpdate])
-              _attrs :: (Either [TypeError] [(String,Type)])
-              _statementType :: (Maybe StatementType)
-              _exprOexpectedTypes :: ([Maybe Type])
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              _exprOcat :: Catalog
-              _exprOidenv :: IDEnv
-              _exprOlib :: LocalBindings
-              _exprIannotatedTree :: QueryExpr 
-              _exprIcidenv :: IDEnv
-              _exprIfixedUpIdentifiersTree :: QueryExpr 
-              _exprIlibUpdates :: ([LocalBindingsUpdate])
-              _exprIoriginalTree :: QueryExpr 
-              _exprIuType :: (Maybe [(String,Type)])
-              -- "./TypeChecking/Statements.ag"(line 82, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                      (\a -> a {stType = _statementType
-                               ,catUpd = _catUpdates    }) $
-                  setTypeAddErrors _tpe     _backTree
-              -- "./TypeChecking/Statements.ag"(line 88, column 9)
-              _lhsOcatUpdates =
-                  _catUpdates
-              -- "./TypeChecking/Statements.ag"(line 89, column 9)
-              _lhsOlibUpdates =
-                  _libUpdates
-              -- "./TypeChecking/Statements.ag"(line 94, column 9)
-              _libUpdates =
-                  []
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 122, column 21)
-              _exprOcsql =
-                  emptyBindings
-              -- "./TypeChecking/Ddl/CreateTable.ag"(line 64, column 9)
-              _tpe =
-                  CompositeType <$> lmt _exprIuType
-              -- "./TypeChecking/Ddl/CreateTable.ag"(line 65, column 9)
-              _catUpdates =
-                  either (const []) id $ do
-                  ats <- _attrs
-                  return [CatCreateTable name_ ats defaultSystemColumns]
-              -- "./TypeChecking/Ddl/CreateTable.ag"(line 71, column 9)
-              _attrs =
-                  lmt _exprIuType
-              -- "./TypeChecking/Ddl/CreateTable.ag"(line 73, column 9)
-              _backTree =
-                  CreateTableAs ann_ name_ _exprIannotatedTree
-              -- "./TypeChecking/Ddl/CreateTable.ag"(line 74, column 9)
-              _statementType =
-                  Nothing
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 175, column 32)
-              _exprOexpectedTypes =
-                  []
-              -- self rule
-              _annotatedTree =
-                  CreateTableAs ann_ name_ _exprIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  CreateTableAs ann_ name_ _exprIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  CreateTableAs ann_ name_ _exprIoriginalTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _exprOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _exprOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _exprOlib =
-                  _lhsIlib
-              ( _exprIannotatedTree,_exprIcidenv,_exprIfixedUpIdentifiersTree,_exprIlibUpdates,_exprIoriginalTree,_exprIuType) =
-                  expr_ _exprOcat _exprOcsql _exprOexpectedTypes _exprOidenv _exprOlib 
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_CreateTrigger :: Annotation ->
-                               String ->
-                               TriggerWhen ->
-                               ([TriggerEvent]) ->
-                               String ->
-                               TriggerFire ->
-                               String ->
-                               T_ScalarExprList  ->
-                               T_Statement 
-sem_Statement_CreateTrigger ann_ name_ wh_ events_ tbl_ firing_ fnName_ fnArgs_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _fnArgsOexpectedTypes :: ([Maybe Type])
-              _lhsOannotatedTree :: Statement 
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              _fnArgsOcat :: Catalog
-              _fnArgsOidenv :: IDEnv
-              _fnArgsOlib :: LocalBindings
-              _fnArgsIannotatedTree :: ScalarExprList 
-              _fnArgsIfixedUpIdentifiersTree :: ScalarExprList 
-              _fnArgsIoriginalTree :: ScalarExprList 
-              _fnArgsIuType :: ([Maybe Type])
-              -- "./TypeChecking/Statements.ag"(line 116, column 9)
-              _lhsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 117, column 9)
-              _lhsOlibUpdates =
-                  []
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 153, column 21)
-              _fnArgsOexpectedTypes =
-                  []
-              -- self rule
-              _annotatedTree =
-                  CreateTrigger ann_ name_ wh_ events_ tbl_ firing_ fnName_ _fnArgsIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  CreateTrigger ann_ name_ wh_ events_ tbl_ firing_ fnName_ _fnArgsIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  CreateTrigger ann_ name_ wh_ events_ tbl_ firing_ fnName_ _fnArgsIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _fnArgsOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _fnArgsOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _fnArgsOlib =
-                  _lhsIlib
-              ( _fnArgsIannotatedTree,_fnArgsIfixedUpIdentifiersTree,_fnArgsIoriginalTree,_fnArgsIuType) =
-                  fnArgs_ _fnArgsOcat _fnArgsOexpectedTypes _fnArgsOidenv _fnArgsOlib 
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_CreateType :: Annotation ->
-                            String ->
-                            T_TypeAttributeDefList  ->
-                            T_Statement 
-sem_Statement_CreateType ann_ name_ atts_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: Statement 
-              _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _tpe :: (Either [TypeError] Type)
-              _statementType :: (Maybe StatementType)
-              _catUpdates :: ([CatalogUpdate])
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              _attsOcat :: Catalog
-              _attsOidenv :: IDEnv
-              _attsOlib :: LocalBindings
-              _attsIannotatedTree :: TypeAttributeDefList 
-              _attsIattrs :: ([(String, Maybe Type)])
-              _attsIfixedUpIdentifiersTree :: TypeAttributeDefList 
-              _attsIoriginalTree :: TypeAttributeDefList 
-              -- "./TypeChecking/Statements.ag"(line 82, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                      (\a -> a {stType = _statementType
-                               ,catUpd = _catUpdates    }) $
-                  setTypeAddErrors _tpe     _backTree
-              -- "./TypeChecking/Statements.ag"(line 88, column 9)
-              _lhsOcatUpdates =
-                  _catUpdates
-              -- "./TypeChecking/Statements.ag"(line 89, column 9)
-              _lhsOlibUpdates =
-                  _libUpdates
-              -- "./TypeChecking/Statements.ag"(line 94, column 9)
-              _libUpdates =
-                  []
-              -- "./TypeChecking/Ddl/MiscCreates.ag"(line 48, column 9)
-              _tpe =
-                  Right $ Pseudo Void
-              -- "./TypeChecking/Ddl/MiscCreates.ag"(line 49, column 9)
-              _attrs =
-                  mapMaybe okAt _attsIattrs
-                  where
-                    okAt (s, Just t) = Just (s,t)
-                    okAt (_,Nothing) = Nothing
-              -- "./TypeChecking/Ddl/MiscCreates.ag"(line 53, column 9)
-              _backTree =
-                  CreateType ann_ name_ _attsIannotatedTree
-              -- "./TypeChecking/Ddl/MiscCreates.ag"(line 54, column 9)
-              _statementType =
-                  Nothing
-              -- "./TypeChecking/Ddl/MiscCreates.ag"(line 55, column 9)
-              _catUpdates =
-                  [CatCreateComposite name_ _attrs    ]
-              -- self rule
-              _annotatedTree =
-                  CreateType ann_ name_ _attsIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  CreateType ann_ name_ _attsIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  CreateType ann_ name_ _attsIoriginalTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _attsOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _attsOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _attsOlib =
-                  _lhsIlib
-              ( _attsIannotatedTree,_attsIattrs,_attsIfixedUpIdentifiersTree,_attsIoriginalTree) =
-                  atts_ _attsOcat _attsOidenv _attsOlib 
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_CreateView :: Annotation ->
-                            String ->
-                            (Maybe [String]) ->
-                            T_QueryExpr  ->
-                            T_Statement 
-sem_Statement_CreateView ann_ name_ colNames_ expr_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: Statement 
-              _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _exprOcsql :: LocalBindings
-              _tpe :: (Either [TypeError] Type)
-              _catUpdates :: ([CatalogUpdate])
-              _statementType :: (Maybe StatementType)
-              _exprOexpectedTypes :: ([Maybe Type])
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              _exprOcat :: Catalog
-              _exprOidenv :: IDEnv
-              _exprOlib :: LocalBindings
-              _exprIannotatedTree :: QueryExpr 
-              _exprIcidenv :: IDEnv
-              _exprIfixedUpIdentifiersTree :: QueryExpr 
-              _exprIlibUpdates :: ([LocalBindingsUpdate])
-              _exprIoriginalTree :: QueryExpr 
-              _exprIuType :: (Maybe [(String,Type)])
-              -- "./TypeChecking/Statements.ag"(line 82, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                      (\a -> a {stType = _statementType
-                               ,catUpd = _catUpdates    }) $
-                  setTypeAddErrors _tpe     _backTree
-              -- "./TypeChecking/Statements.ag"(line 88, column 9)
-              _lhsOcatUpdates =
-                  _catUpdates
-              -- "./TypeChecking/Statements.ag"(line 89, column 9)
-              _lhsOlibUpdates =
-                  _libUpdates
-              -- "./TypeChecking/Statements.ag"(line 94, column 9)
-              _libUpdates =
-                  []
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 123, column 18)
-              _exprOcsql =
-                  emptyBindings
-              -- "./TypeChecking/Ddl/MiscCreates.ag"(line 15, column 9)
-              _tpe =
-                  Right $ Pseudo Void
-              -- "./TypeChecking/Ddl/MiscCreates.ag"(line 16, column 9)
-              _backTree =
-                  CreateView ann_ name_ colNames_ _exprIannotatedTree
-              -- "./TypeChecking/Ddl/MiscCreates.ag"(line 17, column 9)
-              _catUpdates =
-                  maybe [] (\a -> [CatCreateView name_ a]) _exprIuType
-              -- "./TypeChecking/Ddl/MiscCreates.ag"(line 19, column 9)
-              _statementType =
-                  Nothing
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 175, column 32)
-              _exprOexpectedTypes =
-                  []
-              -- self rule
-              _annotatedTree =
-                  CreateView ann_ name_ colNames_ _exprIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  CreateView ann_ name_ colNames_ _exprIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  CreateView ann_ name_ colNames_ _exprIoriginalTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _exprOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _exprOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _exprOlib =
-                  _lhsIlib
-              ( _exprIannotatedTree,_exprIcidenv,_exprIfixedUpIdentifiersTree,_exprIlibUpdates,_exprIoriginalTree,_exprIuType) =
-                  expr_ _exprOcat _exprOcsql _exprOexpectedTypes _exprOidenv _exprOlib 
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_Delete :: Annotation ->
-                        T_SQIdentifier  ->
-                        T_TableRefList  ->
-                        T_MaybeBoolExpr  ->
-                        T_MaybeSelectList  ->
-                        T_Statement 
-sem_Statement_Delete ann_ table_ using_ whr_ returning_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: Statement 
-              _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _tpe :: (Either [TypeError] Type)
-              _statementType :: (Maybe StatementType)
-              _catUpdates :: ([CatalogUpdate])
-              _whrOlib :: LocalBindings
-              _returningOlib :: LocalBindings
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              _tableOcat :: Catalog
-              _tableOidenv :: IDEnv
-              _tableOlib :: LocalBindings
-              _usingOcat :: Catalog
-              _usingOidenv :: IDEnv
-              _usingOlib :: LocalBindings
-              _whrOcat :: Catalog
-              _whrOidenv :: IDEnv
-              _returningOcat :: Catalog
-              _returningOidenv :: IDEnv
-              _tableIannotatedTree :: SQIdentifier 
-              _tableIfixedUpIdentifiersTree :: SQIdentifier 
-              _tableIoriginalTree :: SQIdentifier 
-              _tableItbAnnotatedTree :: SQIdentifier 
-              _tableItbUType :: (Maybe ([(String,Type)],[(String,Type)]))
-              _usingIannotatedTree :: TableRefList 
-              _usingIfixedUpIdentifiersTree :: TableRefList 
-              _usingIlibUpdates :: ([LocalBindingsUpdate])
-              _usingInewLib2 :: LocalBindings
-              _usingIoriginalTree :: TableRefList 
-              _usingItrefIDs :: ([(String,[String])])
-              _whrIannotatedTree :: MaybeBoolExpr 
-              _whrIfixedUpIdentifiersTree :: MaybeBoolExpr 
-              _whrIoriginalTree :: MaybeBoolExpr 
-              _returningIannotatedTree :: MaybeSelectList 
-              _returningIfixedUpIdentifiersTree :: MaybeSelectList 
-              _returningIlistType :: ([(String,Maybe Type)])
-              _returningIoriginalTree :: MaybeSelectList 
-              -- "./TypeChecking/Statements.ag"(line 82, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                      (\a -> a {stType = _statementType
-                               ,catUpd = _catUpdates    }) $
-                  setTypeAddErrors _tpe     _backTree
-              -- "./TypeChecking/Statements.ag"(line 88, column 9)
-              _lhsOcatUpdates =
-                  _catUpdates
-              -- "./TypeChecking/Statements.ag"(line 89, column 9)
-              _lhsOlibUpdates =
-                  _libUpdates
-              -- "./TypeChecking/Statements.ag"(line 94, column 9)
-              _libUpdates =
-                  []
-              -- "./TypeChecking/Dml/Delete.ag"(line 13, column 9)
-              _tpe =
-                  Right $ Pseudo Void
-              -- "./TypeChecking/Dml/Delete.ag"(line 14, column 9)
-              _statementType =
-                  do
-                  pt <- sequence $ getPlaceholderTypes _whrIannotatedTree
-                  lt <- liftList _returningIlistType
-                  return (pt,lt)
-              -- "./TypeChecking/Dml/Delete.ag"(line 19, column 9)
-              _backTree =
-                  Delete ann_ _tableItbAnnotatedTree _usingIannotatedTree _whrIannotatedTree _returningIannotatedTree
-              -- "./TypeChecking/Dml/Delete.ag"(line 20, column 9)
-              _catUpdates =
-                  []
-              -- "./TypeChecking/Dml/Delete.ag"(line 22, column 9)
-              _lib =
-                  either (const _lhsIlib) id $ do
-                  a <- lmt (allAtts <$> _tableItbUType)
-                  lbUpdate _lhsIcat (LBIds "delete table attrs" (Just $ getTName _tableIannotatedTree) a) _lhsIlib
-              -- "./TypeChecking/Dml/Delete.ag"(line 26, column 9)
-              _whrOlib =
-                  _lib
-              -- "./TypeChecking/Dml/Delete.ag"(line 27, column 9)
-              _returningOlib =
-                  _lib
-              -- self rule
-              _annotatedTree =
-                  Delete ann_ _tableIannotatedTree _usingIannotatedTree _whrIannotatedTree _returningIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Delete ann_ _tableIfixedUpIdentifiersTree _usingIfixedUpIdentifiersTree _whrIfixedUpIdentifiersTree _returningIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  Delete ann_ _tableIoriginalTree _usingIoriginalTree _whrIoriginalTree _returningIoriginalTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _tableOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _tableOidenv =
-                  _lhsIidenv
-              -- copy rule (from local)
-              _tableOlib =
-                  _lib
-              -- copy rule (down)
-              _usingOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _usingOidenv =
-                  _lhsIidenv
-              -- copy rule (from local)
-              _usingOlib =
-                  _lib
-              -- copy rule (down)
-              _whrOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _whrOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _returningOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _returningOidenv =
-                  _lhsIidenv
-              ( _tableIannotatedTree,_tableIfixedUpIdentifiersTree,_tableIoriginalTree,_tableItbAnnotatedTree,_tableItbUType) =
-                  table_ _tableOcat _tableOidenv _tableOlib 
-              ( _usingIannotatedTree,_usingIfixedUpIdentifiersTree,_usingIlibUpdates,_usingInewLib2,_usingIoriginalTree,_usingItrefIDs) =
-                  using_ _usingOcat _usingOidenv _usingOlib 
-              ( _whrIannotatedTree,_whrIfixedUpIdentifiersTree,_whrIoriginalTree) =
-                  whr_ _whrOcat _whrOidenv _whrOlib 
-              ( _returningIannotatedTree,_returningIfixedUpIdentifiersTree,_returningIlistType,_returningIoriginalTree) =
-                  returning_ _returningOcat _returningOidenv _returningOlib 
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_DropFunction :: Annotation ->
-                              IfExists ->
-                              T_StringTypeNameListPairList  ->
-                              Cascade ->
-                              T_Statement 
-sem_Statement_DropFunction ann_ ifE_ sigs_ cascade_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: Statement 
-              _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _tpe :: (Either [TypeError] Type)
-              _catUpdates :: ([CatalogUpdate])
-              _statementType :: (Maybe StatementType)
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              _sigsOcat :: Catalog
-              _sigsOidenv :: IDEnv
-              _sigsOlib :: LocalBindings
-              _sigsIannotatedTree :: StringTypeNameListPairList 
-              _sigsIfixedUpIdentifiersTree :: StringTypeNameListPairList 
-              _sigsIfnSigs :: ([(String,[Maybe Type])])
-              _sigsIoriginalTree :: StringTypeNameListPairList 
-              -- "./TypeChecking/Statements.ag"(line 82, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                      (\a -> a {stType = _statementType
-                               ,catUpd = _catUpdates    }) $
-                  setTypeAddErrors _tpe     _backTree
-              -- "./TypeChecking/Statements.ag"(line 88, column 9)
-              _lhsOcatUpdates =
-                  _catUpdates
-              -- "./TypeChecking/Statements.ag"(line 89, column 9)
-              _lhsOlibUpdates =
-                  _libUpdates
-              -- "./TypeChecking/Statements.ag"(line 94, column 9)
-              _libUpdates =
-                  []
-              -- "./TypeChecking/Ddl/Drops.ag"(line 10, column 9)
-              _tpe =
-                  Right $ Pseudo Void
-              -- "./TypeChecking/Ddl/Drops.ag"(line 11, column 9)
-              _backTree =
-                  DropFunction ann_ ifE_ _sigsIannotatedTree cascade_
-              -- "./TypeChecking/Ddl/Drops.ag"(line 12, column 9)
-              _catUpdates =
-                  either (const []) id $
-                  Right $ map mcu $ mapMaybe goodSig _sigsIfnSigs
-                  where
-                    mcu :: (String,[Type]) -> CatalogUpdate
-                    mcu (nm,args) = CatDropFunction ifE nm args
-                    ifE = ifE_ == IfExists
-                    goodSig :: (String,[Maybe Type]) -> Maybe (String,[Type])
-                    goodSig (s, ts) = do
-                                  ts1 <- sequence ts
-                                  return (s,ts1)
-              -- "./TypeChecking/Ddl/Drops.ag"(line 23, column 9)
-              _statementType =
-                  Nothing
-              -- self rule
-              _annotatedTree =
-                  DropFunction ann_ ifE_ _sigsIannotatedTree cascade_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  DropFunction ann_ ifE_ _sigsIfixedUpIdentifiersTree cascade_
-              -- self rule
-              _originalTree =
-                  DropFunction ann_ ifE_ _sigsIoriginalTree cascade_
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _sigsOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _sigsOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _sigsOlib =
-                  _lhsIlib
-              ( _sigsIannotatedTree,_sigsIfixedUpIdentifiersTree,_sigsIfnSigs,_sigsIoriginalTree) =
-                  sigs_ _sigsOcat _sigsOidenv _sigsOlib 
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_DropSomething :: Annotation ->
-                               DropType ->
-                               IfExists ->
-                               ([String]) ->
-                               Cascade ->
-                               T_Statement 
-sem_Statement_DropSomething ann_ dropType_ ifE_ names_ cascade_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _lhsOannotatedTree :: Statement 
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              -- "./TypeChecking/Statements.ag"(line 116, column 9)
-              _lhsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 117, column 9)
-              _lhsOlibUpdates =
-                  []
-              -- self rule
-              _annotatedTree =
-                  DropSomething ann_ dropType_ ifE_ names_ cascade_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  DropSomething ann_ dropType_ ifE_ names_ cascade_
-              -- self rule
-              _originalTree =
-                  DropSomething ann_ dropType_ ifE_ names_ cascade_
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_Execute :: Annotation ->
-                         T_ScalarExpr  ->
-                         T_Statement 
-sem_Statement_Execute ann_ expr_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _exprOexpectedType :: (Maybe Type)
-              _lhsOannotatedTree :: Statement 
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              _exprOcat :: Catalog
-              _exprOidenv :: IDEnv
-              _exprOlib :: LocalBindings
-              _exprIannotatedTree :: ScalarExpr 
-              _exprIfixedUpIdentifiersTree :: ScalarExpr 
-              _exprIoriginalTree :: ScalarExpr 
-              _exprIuType :: (Maybe Type)
-              -- "./TypeChecking/Statements.ag"(line 116, column 9)
-              _lhsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 117, column 9)
-              _lhsOlibUpdates =
-                  []
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 112, column 9)
-              _exprOexpectedType =
-                  Nothing
-              -- self rule
-              _annotatedTree =
-                  Execute ann_ _exprIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Execute ann_ _exprIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  Execute ann_ _exprIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _exprOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _exprOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _exprOlib =
-                  _lhsIlib
-              ( _exprIannotatedTree,_exprIfixedUpIdentifiersTree,_exprIoriginalTree,_exprIuType) =
-                  expr_ _exprOcat _exprOexpectedType _exprOidenv _exprOlib 
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_ExitStatement :: Annotation ->
-                               (Maybe String) ->
-                               T_Statement 
-sem_Statement_ExitStatement ann_ lb_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _lhsOannotatedTree :: Statement 
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              -- "./TypeChecking/Statements.ag"(line 116, column 9)
-              _lhsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 117, column 9)
-              _lhsOlibUpdates =
-                  []
-              -- self rule
-              _annotatedTree =
-                  ExitStatement ann_ lb_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  ExitStatement ann_ lb_
-              -- self rule
-              _originalTree =
-                  ExitStatement ann_ lb_
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_ForIntegerStatement :: Annotation ->
-                                     (Maybe String) ->
-                                     T_ScalarExpr  ->
-                                     T_ScalarExpr  ->
-                                     T_ScalarExpr  ->
-                                     T_StatementList  ->
-                                     T_Statement 
-sem_Statement_ForIntegerStatement ann_ lb_ var_ from_ to_ sts_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: Statement 
-              _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _stsOcatUpdates :: ([CatalogUpdate])
-              _stsOlibUpdates :: ([LocalBindingsUpdate])
-              _tpe :: (Either [TypeError] Type)
-              _stsOlib :: LocalBindings
-              _catUpdates :: ([CatalogUpdate])
-              _statementType :: (Maybe StatementType)
-              _fromOexpectedType :: (Maybe Type)
-              _toOexpectedType :: (Maybe Type)
-              _varOexpectedType :: (Maybe Type)
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              _varOcat :: Catalog
-              _varOidenv :: IDEnv
-              _varOlib :: LocalBindings
-              _fromOcat :: Catalog
-              _fromOidenv :: IDEnv
-              _fromOlib :: LocalBindings
-              _toOcat :: Catalog
-              _toOidenv :: IDEnv
-              _toOlib :: LocalBindings
-              _stsOcat :: Catalog
-              _stsOidenv :: IDEnv
-              _varIannotatedTree :: ScalarExpr 
-              _varIfixedUpIdentifiersTree :: ScalarExpr 
-              _varIoriginalTree :: ScalarExpr 
-              _varIuType :: (Maybe Type)
-              _fromIannotatedTree :: ScalarExpr 
-              _fromIfixedUpIdentifiersTree :: ScalarExpr 
-              _fromIoriginalTree :: ScalarExpr 
-              _fromIuType :: (Maybe Type)
-              _toIannotatedTree :: ScalarExpr 
-              _toIfixedUpIdentifiersTree :: ScalarExpr 
-              _toIoriginalTree :: ScalarExpr 
-              _toIuType :: (Maybe Type)
-              _stsIannotatedTree :: StatementList 
-              _stsIfixedUpIdentifiersTree :: StatementList 
-              _stsIoriginalTree :: StatementList 
-              _stsIproducedCat :: Catalog
-              _stsIproducedLib :: LocalBindings
-              -- "./TypeChecking/Statements.ag"(line 82, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                      (\a -> a {stType = _statementType
-                               ,catUpd = _catUpdates    }) $
-                  setTypeAddErrors _tpe     _backTree
-              -- "./TypeChecking/Statements.ag"(line 88, column 9)
-              _lhsOcatUpdates =
-                  _catUpdates
-              -- "./TypeChecking/Statements.ag"(line 89, column 9)
-              _lhsOlibUpdates =
-                  _libUpdates
-              -- "./TypeChecking/Statements.ag"(line 94, column 9)
-              _libUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 138, column 9)
-              _stsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 139, column 9)
-              _stsOlibUpdates =
-                  []
-              -- "./TypeChecking/Plpgsql/Plpgsql.ag"(line 32, column 9)
-              _tpe =
-                  do
-                  fromType <- lmt _fromIuType
-                  toType <- lmt _toIuType
-                  errorWhen (fromType /= toType) [FromToTypesNotSame fromType toType]
-                  case _varIuType of
-                    Just t -> checkAssignmentValid _lhsIcat fromType t
-                    Nothing -> return ()
-                  return $ Pseudo Void
-              -- "./TypeChecking/Plpgsql/Plpgsql.ag"(line 41, column 9)
-              _implicitVar =
-                  case _varIannotatedTree of
-                      Identifier a i | errs a == [UnrecognisedIdentifier i] -> True
-                      _ -> False
-              -- "./TypeChecking/Plpgsql/Plpgsql.ag"(line 44, column 9)
-              _stsOlib =
-                  if _implicitVar
-                  then either (const _lhsIlib) id $ do
-                       ft <- lmt _fromIuType
-                       lbUpdate _lhsIcat
-                          (LBIds "local for loop variable" Nothing [((getName _varIannotatedTree),ft)]) _lhsIlib
-                  else _lhsIlib
-              -- "./TypeChecking/Plpgsql/Plpgsql.ag"(line 52, column 9)
-              _backTree =
-                  let i = if _implicitVar
-                          then let (Identifier a i') = _varIannotatedTree
-                               in Identifier a { errs = []} i'
-                          else _varIannotatedTree
-                  in ForIntegerStatement ann_ lb_ i _fromIannotatedTree _toIannotatedTree _stsIannotatedTree
-              -- "./TypeChecking/Plpgsql/Plpgsql.ag"(line 58, column 9)
-              _catUpdates =
-                  []
-              -- "./TypeChecking/Plpgsql/Plpgsql.ag"(line 59, column 9)
-              _statementType =
-                  Nothing
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 113, column 27)
-              _fromOexpectedType =
-                  Nothing
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 114, column 27)
-              _toOexpectedType =
-                  Nothing
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 116, column 45)
-              _varOexpectedType =
-                  Nothing
-              -- self rule
-              _annotatedTree =
-                  ForIntegerStatement ann_ lb_ _varIannotatedTree _fromIannotatedTree _toIannotatedTree _stsIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  ForIntegerStatement ann_ lb_ _varIfixedUpIdentifiersTree _fromIfixedUpIdentifiersTree _toIfixedUpIdentifiersTree _stsIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  ForIntegerStatement ann_ lb_ _varIoriginalTree _fromIoriginalTree _toIoriginalTree _stsIoriginalTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _varOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _varOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _varOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _fromOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _fromOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _fromOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _toOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _toOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _toOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _stsOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _stsOidenv =
-                  _lhsIidenv
-              ( _varIannotatedTree,_varIfixedUpIdentifiersTree,_varIoriginalTree,_varIuType) =
-                  var_ _varOcat _varOexpectedType _varOidenv _varOlib 
-              ( _fromIannotatedTree,_fromIfixedUpIdentifiersTree,_fromIoriginalTree,_fromIuType) =
-                  from_ _fromOcat _fromOexpectedType _fromOidenv _fromOlib 
-              ( _toIannotatedTree,_toIfixedUpIdentifiersTree,_toIoriginalTree,_toIuType) =
-                  to_ _toOcat _toOexpectedType _toOidenv _toOlib 
-              ( _stsIannotatedTree,_stsIfixedUpIdentifiersTree,_stsIoriginalTree,_stsIproducedCat,_stsIproducedLib) =
-                  sts_ _stsOcat _stsOcatUpdates _stsOidenv _stsOlib _stsOlibUpdates 
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_ForQueryStatement :: Annotation ->
-                                   (Maybe String) ->
-                                   T_ScalarExpr  ->
-                                   T_QueryExpr  ->
-                                   T_StatementList  ->
-                                   T_Statement 
-sem_Statement_ForQueryStatement ann_ lb_ var_ sel_ sts_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: Statement 
-              _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _stsOcatUpdates :: ([CatalogUpdate])
-              _stsOlibUpdates :: ([LocalBindingsUpdate])
-              _selOcsql :: LocalBindings
-              _tpe :: (Either [TypeError] Type)
-              _stsOlib :: LocalBindings
-              _catUpdates :: ([CatalogUpdate])
-              _statementType :: (Maybe StatementType)
-              _varOexpectedType :: (Maybe Type)
-              _selOexpectedTypes :: ([Maybe Type])
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              _varOcat :: Catalog
-              _varOidenv :: IDEnv
-              _varOlib :: LocalBindings
-              _selOcat :: Catalog
-              _selOidenv :: IDEnv
-              _selOlib :: LocalBindings
-              _stsOcat :: Catalog
-              _stsOidenv :: IDEnv
-              _varIannotatedTree :: ScalarExpr 
-              _varIfixedUpIdentifiersTree :: ScalarExpr 
-              _varIoriginalTree :: ScalarExpr 
-              _varIuType :: (Maybe Type)
-              _selIannotatedTree :: QueryExpr 
-              _selIcidenv :: IDEnv
-              _selIfixedUpIdentifiersTree :: QueryExpr 
-              _selIlibUpdates :: ([LocalBindingsUpdate])
-              _selIoriginalTree :: QueryExpr 
-              _selIuType :: (Maybe [(String,Type)])
-              _stsIannotatedTree :: StatementList 
-              _stsIfixedUpIdentifiersTree :: StatementList 
-              _stsIoriginalTree :: StatementList 
-              _stsIproducedCat :: Catalog
-              _stsIproducedLib :: LocalBindings
-              -- "./TypeChecking/Statements.ag"(line 82, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                      (\a -> a {stType = _statementType
-                               ,catUpd = _catUpdates    }) $
-                  setTypeAddErrors _tpe     _backTree
-              -- "./TypeChecking/Statements.ag"(line 88, column 9)
-              _lhsOcatUpdates =
-                  _catUpdates
-              -- "./TypeChecking/Statements.ag"(line 89, column 9)
-              _lhsOlibUpdates =
-                  _libUpdates
-              -- "./TypeChecking/Statements.ag"(line 94, column 9)
-              _libUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 138, column 9)
-              _stsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 139, column 9)
-              _stsOlibUpdates =
-                  []
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 124, column 25)
-              _selOcsql =
-                  emptyBindings
-              -- "./TypeChecking/Plpgsql/Plpgsql.ag"(line 64, column 9)
-              _tpe =
-                  do
-                  st <- lmt (CompositeType <$> _selIuType)
-                  toType <- lmt _varIuType
-                  checkAssignmentValid _lhsIcat st toType
-                  return $ Pseudo Void
-              -- "./TypeChecking/Plpgsql/Plpgsql.ag"(line 74, column 9)
-              _stsOlib =
-                  either (const _lhsIlib) id $ do
-                  _ <- _tpe
-                  st <- lmt (CompositeType <$> _selIuType)
-                  lbUpdate _lhsIcat (LBIds "for loop record type" Nothing [(getName _varIannotatedTree,st)]) _lhsIlib
-              -- "./TypeChecking/Plpgsql/Plpgsql.ag"(line 80, column 9)
-              _backTree =
-                  ForQueryStatement ann_ lb_ _varIannotatedTree _selIannotatedTree _stsIannotatedTree
-              -- "./TypeChecking/Plpgsql/Plpgsql.ag"(line 81, column 9)
-              _catUpdates =
-                  []
-              -- "./TypeChecking/Plpgsql/Plpgsql.ag"(line 82, column 9)
-              _statementType =
-                  Nothing
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 116, column 45)
-              _varOexpectedType =
-                  Nothing
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 177, column 9)
-              _selOexpectedTypes =
-                  []
-              -- self rule
-              _annotatedTree =
-                  ForQueryStatement ann_ lb_ _varIannotatedTree _selIannotatedTree _stsIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  ForQueryStatement ann_ lb_ _varIfixedUpIdentifiersTree _selIfixedUpIdentifiersTree _stsIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  ForQueryStatement ann_ lb_ _varIoriginalTree _selIoriginalTree _stsIoriginalTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _varOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _varOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _varOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _selOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _selOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _selOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _stsOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _stsOidenv =
-                  _lhsIidenv
-              ( _varIannotatedTree,_varIfixedUpIdentifiersTree,_varIoriginalTree,_varIuType) =
-                  var_ _varOcat _varOexpectedType _varOidenv _varOlib 
-              ( _selIannotatedTree,_selIcidenv,_selIfixedUpIdentifiersTree,_selIlibUpdates,_selIoriginalTree,_selIuType) =
-                  sel_ _selOcat _selOcsql _selOexpectedTypes _selOidenv _selOlib 
-              ( _stsIannotatedTree,_stsIfixedUpIdentifiersTree,_stsIoriginalTree,_stsIproducedCat,_stsIproducedLib) =
-                  sts_ _stsOcat _stsOcatUpdates _stsOidenv _stsOlib _stsOlibUpdates 
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_If :: Annotation ->
-                    T_ScalarExprStatementListPairList  ->
-                    T_StatementList  ->
-                    T_Statement 
-sem_Statement_If ann_ cases_ els_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _elsOcatUpdates :: ([CatalogUpdate])
-              _elsOlibUpdates :: ([LocalBindingsUpdate])
-              _lhsOannotatedTree :: Statement 
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              _casesOcat :: Catalog
-              _casesOidenv :: IDEnv
-              _casesOlib :: LocalBindings
-              _elsOcat :: Catalog
-              _elsOidenv :: IDEnv
-              _elsOlib :: LocalBindings
-              _casesIannotatedTree :: ScalarExprStatementListPairList 
-              _casesIfixedUpIdentifiersTree :: ScalarExprStatementListPairList 
-              _casesIoriginalTree :: ScalarExprStatementListPairList 
-              _elsIannotatedTree :: StatementList 
-              _elsIfixedUpIdentifiersTree :: StatementList 
-              _elsIoriginalTree :: StatementList 
-              _elsIproducedCat :: Catalog
-              _elsIproducedLib :: LocalBindings
-              -- "./TypeChecking/Statements.ag"(line 116, column 9)
-              _lhsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 117, column 9)
-              _lhsOlibUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 134, column 9)
-              _elsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 135, column 9)
-              _elsOlibUpdates =
-                  []
-              -- self rule
-              _annotatedTree =
-                  If ann_ _casesIannotatedTree _elsIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  If ann_ _casesIfixedUpIdentifiersTree _elsIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  If ann_ _casesIoriginalTree _elsIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _casesOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _casesOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _casesOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _elsOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _elsOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _elsOlib =
-                  _lhsIlib
-              ( _casesIannotatedTree,_casesIfixedUpIdentifiersTree,_casesIoriginalTree) =
-                  cases_ _casesOcat _casesOidenv _casesOlib 
-              ( _elsIannotatedTree,_elsIfixedUpIdentifiersTree,_elsIoriginalTree,_elsIproducedCat,_elsIproducedLib) =
-                  els_ _elsOcat _elsOcatUpdates _elsOidenv _elsOlib _elsOlibUpdates 
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_Insert :: Annotation ->
-                        T_SQIdentifier  ->
-                        ([String]) ->
-                        T_QueryExpr  ->
-                        T_MaybeSelectList  ->
-                        T_Statement 
-sem_Statement_Insert ann_ table_ targetCols_ insData_ returning_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: Statement 
-              _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _insDataOcsql :: LocalBindings
-              _tpe :: (Either [TypeError] Type)
-              _statementType :: (Maybe StatementType)
-              _columnTypes :: (Either [TypeError] [(String,Type)])
-              _catUpdates :: ([CatalogUpdate])
-              _insDataOexpectedTypes :: ([Maybe Type])
-              _returningOlib :: LocalBindings
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              _tableOcat :: Catalog
-              _tableOidenv :: IDEnv
-              _tableOlib :: LocalBindings
-              _insDataOcat :: Catalog
-              _insDataOidenv :: IDEnv
-              _insDataOlib :: LocalBindings
-              _returningOcat :: Catalog
-              _returningOidenv :: IDEnv
-              _tableIannotatedTree :: SQIdentifier 
-              _tableIfixedUpIdentifiersTree :: SQIdentifier 
-              _tableIoriginalTree :: SQIdentifier 
-              _tableItbAnnotatedTree :: SQIdentifier 
-              _tableItbUType :: (Maybe ([(String,Type)],[(String,Type)]))
-              _insDataIannotatedTree :: QueryExpr 
-              _insDataIcidenv :: IDEnv
-              _insDataIfixedUpIdentifiersTree :: QueryExpr 
-              _insDataIlibUpdates :: ([LocalBindingsUpdate])
-              _insDataIoriginalTree :: QueryExpr 
-              _insDataIuType :: (Maybe [(String,Type)])
-              _returningIannotatedTree :: MaybeSelectList 
-              _returningIfixedUpIdentifiersTree :: MaybeSelectList 
-              _returningIlistType :: ([(String,Maybe Type)])
-              _returningIoriginalTree :: MaybeSelectList 
-              -- "./TypeChecking/Statements.ag"(line 82, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                      (\a -> a {stType = _statementType
-                               ,catUpd = _catUpdates    }) $
-                  setTypeAddErrors _tpe     _backTree
-              -- "./TypeChecking/Statements.ag"(line 88, column 9)
-              _lhsOcatUpdates =
-                  _catUpdates
-              -- "./TypeChecking/Statements.ag"(line 89, column 9)
-              _lhsOlibUpdates =
-                  _libUpdates
-              -- "./TypeChecking/Statements.ag"(line 94, column 9)
-              _libUpdates =
-                  []
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 125, column 14)
-              _insDataOcsql =
-                  emptyBindings
-              -- "./TypeChecking/Dml/Insert.ag"(line 14, column 9)
-              _tpe =
-                  either Left (const $ Right $ Pseudo Void) _columnTypes
-              -- "./TypeChecking/Dml/Insert.ag"(line 15, column 9)
-              _statementType =
-                  Just (catMaybes $ getPlaceholderTypes _insDataIannotatedTree
-                       ,fromMaybe [] $ liftList _returningIlistType)
-              -- "./TypeChecking/Dml/Insert.ag"(line 20, column 9)
-              _columnTypes =
-                  do
-                  atts <- lmt (allAtts <$> _tableItbUType)
-                  pAtts <- lmt (fst <$> _tableItbUType)
-                  tAtts <- case targetCols_ of
-                                [] -> return pAtts
-                                _ -> mapM (lkpA atts) targetCols_
-                  expAtts <- lmt _insDataIuType
-                  checkAssignmentsValid _lhsIcat (map snd expAtts) (map snd tAtts)
-                  return tAtts
-                  where
-                    lkpA :: [(String,Type)] -> String -> E (String,Type)
-                    lkpA m n = maybe (Left [UnrecognisedIdentifier n])
-                                     (\t -> Right (n,t))
-                                     $ lookup n m
-              -- "./TypeChecking/Dml/Insert.ag"(line 36, column 9)
-              _backTree =
-                  Insert ann_ _tableItbAnnotatedTree
-                         targetCols_
-                         _insDataIannotatedTree
-                         _returningIannotatedTree
-              -- "./TypeChecking/Dml/Insert.ag"(line 40, column 9)
-              _catUpdates =
-                  []
-              -- "./TypeChecking/Dml/Insert.ag"(line 41, column 9)
-              _insDataOexpectedTypes =
-                  maybe [] id $ do
-                  ts <- etmt $ _columnTypes
-                  return $ map (Just . snd) ts
-              -- "./TypeChecking/Dml/Insert.ag"(line 45, column 9)
-              _returningOlib =
-                  either (const _lhsIlib) id $ do
-                    atts <- lmt (allAtts <$> _tableItbUType)
-                    lbUpdate _lhsIcat (LBIds "insert target table" (Just $ getTName _tableIannotatedTree) atts) _lhsIlib
-              -- self rule
-              _annotatedTree =
-                  Insert ann_ _tableIannotatedTree targetCols_ _insDataIannotatedTree _returningIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Insert ann_ _tableIfixedUpIdentifiersTree targetCols_ _insDataIfixedUpIdentifiersTree _returningIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  Insert ann_ _tableIoriginalTree targetCols_ _insDataIoriginalTree _returningIoriginalTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _tableOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _tableOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _tableOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _insDataOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _insDataOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _insDataOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _returningOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _returningOidenv =
-                  _lhsIidenv
-              ( _tableIannotatedTree,_tableIfixedUpIdentifiersTree,_tableIoriginalTree,_tableItbAnnotatedTree,_tableItbUType) =
-                  table_ _tableOcat _tableOidenv _tableOlib 
-              ( _insDataIannotatedTree,_insDataIcidenv,_insDataIfixedUpIdentifiersTree,_insDataIlibUpdates,_insDataIoriginalTree,_insDataIuType) =
-                  insData_ _insDataOcat _insDataOcsql _insDataOexpectedTypes _insDataOidenv _insDataOlib 
-              ( _returningIannotatedTree,_returningIfixedUpIdentifiersTree,_returningIlistType,_returningIoriginalTree) =
-                  returning_ _returningOcat _returningOidenv _returningOlib 
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_Into :: Annotation ->
-                      Bool ->
-                      T_ScalarExprList  ->
-                      T_Statement  ->
-                      T_Statement 
-sem_Statement_Into ann_ strict_ into_ stmt_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _intoOexpectedTypes :: ([Maybe Type])
-              _lhsOannotatedTree :: Statement 
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              _intoOcat :: Catalog
-              _intoOidenv :: IDEnv
-              _intoOlib :: LocalBindings
-              _stmtOcat :: Catalog
-              _stmtOidenv :: IDEnv
-              _stmtOinProducedCat :: Catalog
-              _stmtOlib :: LocalBindings
-              _intoIannotatedTree :: ScalarExprList 
-              _intoIfixedUpIdentifiersTree :: ScalarExprList 
-              _intoIoriginalTree :: ScalarExprList 
-              _intoIuType :: ([Maybe Type])
-              _stmtIannotatedTree :: Statement 
-              _stmtIcatUpdates :: ([CatalogUpdate])
-              _stmtIfixedUpIdentifiersTree :: Statement 
-              _stmtIlibUpdates :: ([LocalBindingsUpdate])
-              _stmtIoriginalTree :: Statement 
-              -- "./TypeChecking/Statements.ag"(line 116, column 9)
-              _lhsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 117, column 9)
-              _lhsOlibUpdates =
-                  []
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 117, column 12)
-              _intoOexpectedTypes =
-                  []
-              -- self rule
-              _annotatedTree =
-                  Into ann_ strict_ _intoIannotatedTree _stmtIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Into ann_ strict_ _intoIfixedUpIdentifiersTree _stmtIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  Into ann_ strict_ _intoIoriginalTree _stmtIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _intoOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _intoOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _intoOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _stmtOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _stmtOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _stmtOinProducedCat =
-                  _lhsIinProducedCat
-              -- copy rule (down)
-              _stmtOlib =
-                  _lhsIlib
-              ( _intoIannotatedTree,_intoIfixedUpIdentifiersTree,_intoIoriginalTree,_intoIuType) =
-                  into_ _intoOcat _intoOexpectedTypes _intoOidenv _intoOlib 
-              ( _stmtIannotatedTree,_stmtIcatUpdates,_stmtIfixedUpIdentifiersTree,_stmtIlibUpdates,_stmtIoriginalTree) =
-                  stmt_ _stmtOcat _stmtOidenv _stmtOinProducedCat _stmtOlib 
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_LoopStatement :: Annotation ->
-                               (Maybe String) ->
-                               T_StatementList  ->
-                               T_Statement 
-sem_Statement_LoopStatement ann_ lb_ sts_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _stsOcatUpdates :: ([CatalogUpdate])
-              _stsOlibUpdates :: ([LocalBindingsUpdate])
-              _lhsOannotatedTree :: Statement 
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              _stsOcat :: Catalog
-              _stsOidenv :: IDEnv
-              _stsOlib :: LocalBindings
-              _stsIannotatedTree :: StatementList 
-              _stsIfixedUpIdentifiersTree :: StatementList 
-              _stsIoriginalTree :: StatementList 
-              _stsIproducedCat :: Catalog
-              _stsIproducedLib :: LocalBindings
-              -- "./TypeChecking/Statements.ag"(line 116, column 9)
-              _lhsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 117, column 9)
-              _lhsOlibUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 138, column 9)
-              _stsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 139, column 9)
-              _stsOlibUpdates =
-                  []
-              -- self rule
-              _annotatedTree =
-                  LoopStatement ann_ lb_ _stsIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  LoopStatement ann_ lb_ _stsIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  LoopStatement ann_ lb_ _stsIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _stsOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _stsOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _stsOlib =
-                  _lhsIlib
-              ( _stsIannotatedTree,_stsIfixedUpIdentifiersTree,_stsIoriginalTree,_stsIproducedCat,_stsIproducedLib) =
-                  sts_ _stsOcat _stsOcatUpdates _stsOidenv _stsOlib _stsOlibUpdates 
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_Notify :: Annotation ->
-                        String ->
-                        T_Statement 
-sem_Statement_Notify ann_ name_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _lhsOannotatedTree :: Statement 
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              -- "./TypeChecking/Statements.ag"(line 94, column 9)
-              _libUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 116, column 9)
-              _lhsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 117, column 9)
-              _lhsOlibUpdates =
-                  []
-              -- self rule
-              _annotatedTree =
-                  Notify ann_ name_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Notify ann_ name_
-              -- self rule
-              _originalTree =
-                  Notify ann_ name_
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_NullStatement :: Annotation ->
-                               T_Statement 
-sem_Statement_NullStatement ann_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _lhsOannotatedTree :: Statement 
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              -- "./TypeChecking/Statements.ag"(line 116, column 9)
-              _lhsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 117, column 9)
-              _lhsOlibUpdates =
-                  []
-              -- self rule
-              _annotatedTree =
-                  NullStatement ann_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  NullStatement ann_
-              -- self rule
-              _originalTree =
-                  NullStatement ann_
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_Perform :: Annotation ->
-                         T_ScalarExpr  ->
-                         T_Statement 
-sem_Statement_Perform ann_ expr_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _exprOexpectedType :: (Maybe Type)
-              _lhsOannotatedTree :: Statement 
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              _exprOcat :: Catalog
-              _exprOidenv :: IDEnv
-              _exprOlib :: LocalBindings
-              _exprIannotatedTree :: ScalarExpr 
-              _exprIfixedUpIdentifiersTree :: ScalarExpr 
-              _exprIoriginalTree :: ScalarExpr 
-              _exprIuType :: (Maybe Type)
-              -- "./TypeChecking/Statements.ag"(line 116, column 9)
-              _lhsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 117, column 9)
-              _lhsOlibUpdates =
-                  []
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 112, column 9)
-              _exprOexpectedType =
-                  Nothing
-              -- self rule
-              _annotatedTree =
-                  Perform ann_ _exprIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Perform ann_ _exprIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  Perform ann_ _exprIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _exprOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _exprOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _exprOlib =
-                  _lhsIlib
-              ( _exprIannotatedTree,_exprIfixedUpIdentifiersTree,_exprIoriginalTree,_exprIuType) =
-                  expr_ _exprOcat _exprOexpectedType _exprOidenv _exprOlib 
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_QueryStatement :: Annotation ->
-                                T_QueryExpr  ->
-                                T_Statement 
-sem_Statement_QueryStatement ann_ ex_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: Statement 
-              _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _tpe :: (Either [TypeError] Type)
-              _statementType :: (Maybe StatementType)
-              _catUpdates :: ([CatalogUpdate])
-              _exOcsql :: LocalBindings
-              _exOexpectedTypes :: ([Maybe Type])
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              _exOcat :: Catalog
-              _exOidenv :: IDEnv
-              _exOlib :: LocalBindings
-              _exIannotatedTree :: QueryExpr 
-              _exIcidenv :: IDEnv
-              _exIfixedUpIdentifiersTree :: QueryExpr 
-              _exIlibUpdates :: ([LocalBindingsUpdate])
-              _exIoriginalTree :: QueryExpr 
-              _exIuType :: (Maybe [(String,Type)])
-              -- "./TypeChecking/Statements.ag"(line 82, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                      (\a -> a {stType = _statementType
-                               ,catUpd = _catUpdates    }) $
-                  setTypeAddErrors _tpe     _backTree
-              -- "./TypeChecking/Statements.ag"(line 88, column 9)
-              _lhsOcatUpdates =
-                  _catUpdates
-              -- "./TypeChecking/Statements.ag"(line 89, column 9)
-              _lhsOlibUpdates =
-                  _libUpdates
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 14, column 9)
-              _tpe =
-                  Right $ Pseudo Void
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 15, column 9)
-              _statementType =
-                  do
-                  pt <- sequence $ getPlaceholderTypes _exIannotatedTree
-                  st <- _exIuType
-                  return (pt
-                         ,case st of
-                            [(_,(Pseudo Void))] -> []
-                            t -> t)
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 23, column 9)
-              _backTree =
-                  QueryStatement ann_ _exIannotatedTree
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 24, column 9)
-              _catUpdates =
-                  []
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 126, column 22)
-              _exOcsql =
-                  emptyBindings
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 137, column 9)
-              _libUpdates =
-                  _exIlibUpdates
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 178, column 22)
-              _exOexpectedTypes =
-                  []
-              -- self rule
-              _annotatedTree =
-                  QueryStatement ann_ _exIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  QueryStatement ann_ _exIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  QueryStatement ann_ _exIoriginalTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _exOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _exOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _exOlib =
-                  _lhsIlib
-              ( _exIannotatedTree,_exIcidenv,_exIfixedUpIdentifiersTree,_exIlibUpdates,_exIoriginalTree,_exIuType) =
-                  ex_ _exOcat _exOcsql _exOexpectedTypes _exOidenv _exOlib 
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_Raise :: Annotation ->
-                       RaiseType ->
-                       String ->
-                       T_ScalarExprList  ->
-                       T_Statement 
-sem_Statement_Raise ann_ level_ message_ args_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _argsOexpectedTypes :: ([Maybe Type])
-              _lhsOannotatedTree :: Statement 
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              _argsOcat :: Catalog
-              _argsOidenv :: IDEnv
-              _argsOlib :: LocalBindings
-              _argsIannotatedTree :: ScalarExprList 
-              _argsIfixedUpIdentifiersTree :: ScalarExprList 
-              _argsIoriginalTree :: ScalarExprList 
-              _argsIuType :: ([Maybe Type])
-              -- "./TypeChecking/Statements.ag"(line 116, column 9)
-              _lhsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 117, column 9)
-              _lhsOlibUpdates =
-                  []
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 154, column 13)
-              _argsOexpectedTypes =
-                  []
-              -- self rule
-              _annotatedTree =
-                  Raise ann_ level_ message_ _argsIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Raise ann_ level_ message_ _argsIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  Raise ann_ level_ message_ _argsIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _argsOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _argsOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _argsOlib =
-                  _lhsIlib
-              ( _argsIannotatedTree,_argsIfixedUpIdentifiersTree,_argsIoriginalTree,_argsIuType) =
-                  args_ _argsOcat _argsOexpectedTypes _argsOidenv _argsOlib 
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_Return :: Annotation ->
-                        T_MaybeScalarExpr  ->
-                        T_Statement 
-sem_Statement_Return ann_ value_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: Statement 
-              _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _tpe :: (Either [TypeError] Type)
-              _catUpdates :: ([CatalogUpdate])
-              _statementType :: (Maybe StatementType)
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              _valueOcat :: Catalog
-              _valueOidenv :: IDEnv
-              _valueOlib :: LocalBindings
-              _valueIannotatedTree :: MaybeScalarExpr 
-              _valueIfixedUpIdentifiersTree :: MaybeScalarExpr 
-              _valueIoriginalTree :: MaybeScalarExpr 
-              _valueIuType :: (Maybe Type)
-              -- "./TypeChecking/Statements.ag"(line 82, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                      (\a -> a {stType = _statementType
-                               ,catUpd = _catUpdates    }) $
-                  setTypeAddErrors _tpe     _backTree
-              -- "./TypeChecking/Statements.ag"(line 88, column 9)
-              _lhsOcatUpdates =
-                  _catUpdates
-              -- "./TypeChecking/Statements.ag"(line 89, column 9)
-              _lhsOlibUpdates =
-                  _libUpdates
-              -- "./TypeChecking/Statements.ag"(line 94, column 9)
-              _libUpdates =
-                  []
-              -- "./TypeChecking/Plpgsql/Plpgsql.ag"(line 12, column 9)
-              _tpe =
-                  maybe (Right $ Pseudo Void) Right _valueIuType
-              -- "./TypeChecking/Plpgsql/Plpgsql.ag"(line 13, column 9)
-              _backTree =
-                  Return ann_ _valueIannotatedTree
-              -- "./TypeChecking/Plpgsql/Plpgsql.ag"(line 14, column 9)
-              _catUpdates =
-                  []
-              -- "./TypeChecking/Plpgsql/Plpgsql.ag"(line 15, column 9)
-              _statementType =
-                  Nothing
-              -- self rule
-              _annotatedTree =
-                  Return ann_ _valueIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Return ann_ _valueIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  Return ann_ _valueIoriginalTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _valueOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _valueOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _valueOlib =
-                  _lhsIlib
-              ( _valueIannotatedTree,_valueIfixedUpIdentifiersTree,_valueIoriginalTree,_valueIuType) =
-                  value_ _valueOcat _valueOidenv _valueOlib 
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_ReturnNext :: Annotation ->
-                            T_ScalarExpr  ->
-                            T_Statement 
-sem_Statement_ReturnNext ann_ expr_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _exprOexpectedType :: (Maybe Type)
-              _lhsOannotatedTree :: Statement 
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              _exprOcat :: Catalog
-              _exprOidenv :: IDEnv
-              _exprOlib :: LocalBindings
-              _exprIannotatedTree :: ScalarExpr 
-              _exprIfixedUpIdentifiersTree :: ScalarExpr 
-              _exprIoriginalTree :: ScalarExpr 
-              _exprIuType :: (Maybe Type)
-              -- "./TypeChecking/Statements.ag"(line 116, column 9)
-              _lhsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 117, column 9)
-              _lhsOlibUpdates =
-                  []
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 112, column 9)
-              _exprOexpectedType =
-                  Nothing
-              -- self rule
-              _annotatedTree =
-                  ReturnNext ann_ _exprIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  ReturnNext ann_ _exprIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  ReturnNext ann_ _exprIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _exprOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _exprOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _exprOlib =
-                  _lhsIlib
-              ( _exprIannotatedTree,_exprIfixedUpIdentifiersTree,_exprIoriginalTree,_exprIuType) =
-                  expr_ _exprOcat _exprOexpectedType _exprOidenv _exprOlib 
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_ReturnQuery :: Annotation ->
-                             T_QueryExpr  ->
-                             T_Statement 
-sem_Statement_ReturnQuery ann_ sel_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _selOcsql :: LocalBindings
-              _selOexpectedTypes :: ([Maybe Type])
-              _lhsOannotatedTree :: Statement 
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              _selOcat :: Catalog
-              _selOidenv :: IDEnv
-              _selOlib :: LocalBindings
-              _selIannotatedTree :: QueryExpr 
-              _selIcidenv :: IDEnv
-              _selIfixedUpIdentifiersTree :: QueryExpr 
-              _selIlibUpdates :: ([LocalBindingsUpdate])
-              _selIoriginalTree :: QueryExpr 
-              _selIuType :: (Maybe [(String,Type)])
-              -- "./TypeChecking/Statements.ag"(line 116, column 9)
-              _lhsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 117, column 9)
-              _lhsOlibUpdates =
-                  []
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 127, column 19)
-              _selOcsql =
-                  emptyBindings
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 177, column 9)
-              _selOexpectedTypes =
-                  []
-              -- self rule
-              _annotatedTree =
-                  ReturnQuery ann_ _selIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  ReturnQuery ann_ _selIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  ReturnQuery ann_ _selIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _selOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _selOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _selOlib =
-                  _lhsIlib
-              ( _selIannotatedTree,_selIcidenv,_selIfixedUpIdentifiersTree,_selIlibUpdates,_selIoriginalTree,_selIuType) =
-                  sel_ _selOcat _selOcsql _selOexpectedTypes _selOidenv _selOlib 
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_Set :: Annotation ->
-                     String ->
-                     ([SetValue]) ->
-                     T_Statement 
-sem_Statement_Set ann_ name_ values_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _lhsOannotatedTree :: Statement 
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              -- "./TypeChecking/Statements.ag"(line 94, column 9)
-              _libUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 116, column 9)
-              _lhsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 117, column 9)
-              _lhsOlibUpdates =
-                  []
-              -- self rule
-              _annotatedTree =
-                  Set ann_ name_ values_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Set ann_ name_ values_
-              -- self rule
-              _originalTree =
-                  Set ann_ name_ values_
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_Truncate :: Annotation ->
-                          ([String]) ->
-                          RestartIdentity ->
-                          Cascade ->
-                          T_Statement 
-sem_Statement_Truncate ann_ tables_ restartIdentity_ cascade_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _lhsOannotatedTree :: Statement 
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              -- "./TypeChecking/Statements.ag"(line 116, column 9)
-              _lhsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 117, column 9)
-              _lhsOlibUpdates =
-                  []
-              -- self rule
-              _annotatedTree =
-                  Truncate ann_ tables_ restartIdentity_ cascade_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Truncate ann_ tables_ restartIdentity_ cascade_
-              -- self rule
-              _originalTree =
-                  Truncate ann_ tables_ restartIdentity_ cascade_
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_Update :: Annotation ->
-                        T_SQIdentifier  ->
-                        T_ScalarExprList  ->
-                        T_TableRefList  ->
-                        T_MaybeBoolExpr  ->
-                        T_MaybeSelectList  ->
-                        T_Statement 
-sem_Statement_Update ann_ table_ assigns_ fromList_ whr_ returning_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: Statement 
-              _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _tpe :: (Either [TypeError] Type)
-              _statementType :: (Maybe StatementType)
-              _catUpdates :: ([CatalogUpdate])
-              _whrOlib :: LocalBindings
-              _assignsOlib :: LocalBindings
-              _returningOlib :: LocalBindings
-              _assignsOexpectedTypes :: ([Maybe Type])
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              _tableOcat :: Catalog
-              _tableOidenv :: IDEnv
-              _tableOlib :: LocalBindings
-              _assignsOcat :: Catalog
-              _assignsOidenv :: IDEnv
-              _fromListOcat :: Catalog
-              _fromListOidenv :: IDEnv
-              _fromListOlib :: LocalBindings
-              _whrOcat :: Catalog
-              _whrOidenv :: IDEnv
-              _returningOcat :: Catalog
-              _returningOidenv :: IDEnv
-              _tableIannotatedTree :: SQIdentifier 
-              _tableIfixedUpIdentifiersTree :: SQIdentifier 
-              _tableIoriginalTree :: SQIdentifier 
-              _tableItbAnnotatedTree :: SQIdentifier 
-              _tableItbUType :: (Maybe ([(String,Type)],[(String,Type)]))
-              _assignsIannotatedTree :: ScalarExprList 
-              _assignsIfixedUpIdentifiersTree :: ScalarExprList 
-              _assignsIoriginalTree :: ScalarExprList 
-              _assignsIuType :: ([Maybe Type])
-              _fromListIannotatedTree :: TableRefList 
-              _fromListIfixedUpIdentifiersTree :: TableRefList 
-              _fromListIlibUpdates :: ([LocalBindingsUpdate])
-              _fromListInewLib2 :: LocalBindings
-              _fromListIoriginalTree :: TableRefList 
-              _fromListItrefIDs :: ([(String,[String])])
-              _whrIannotatedTree :: MaybeBoolExpr 
-              _whrIfixedUpIdentifiersTree :: MaybeBoolExpr 
-              _whrIoriginalTree :: MaybeBoolExpr 
-              _returningIannotatedTree :: MaybeSelectList 
-              _returningIfixedUpIdentifiersTree :: MaybeSelectList 
-              _returningIlistType :: ([(String,Maybe Type)])
-              _returningIoriginalTree :: MaybeSelectList 
-              -- "./TypeChecking/Statements.ag"(line 82, column 9)
-              _lhsOannotatedTree =
-                  updateAnnotation
-                      (\a -> a {stType = _statementType
-                               ,catUpd = _catUpdates    }) $
-                  setTypeAddErrors _tpe     _backTree
-              -- "./TypeChecking/Statements.ag"(line 88, column 9)
-              _lhsOcatUpdates =
-                  _catUpdates
-              -- "./TypeChecking/Statements.ag"(line 89, column 9)
-              _lhsOlibUpdates =
-                  _libUpdates
-              -- "./TypeChecking/Statements.ag"(line 94, column 9)
-              _libUpdates =
-                  []
-              -- "./TypeChecking/Dml/Update.ag"(line 13, column 9)
-              _tpe =
-                  Right $ Pseudo Void
-              -- "./TypeChecking/Dml/Update.ag"(line 18, column 9)
-              _statementType =
-                  do
-                  pt <- sequence $ getPlaceholderTypes _assignsIannotatedTree
-                                   ++ getPlaceholderTypes _whrIannotatedTree
-                  return (pt,fromMaybe [] $ liftList _returningIlistType)
-              -- "./TypeChecking/Dml/Update.ag"(line 24, column 9)
-              _backTree =
-                  Update ann_
-                         _tableItbAnnotatedTree
-                         _assignsIannotatedTree
-                         _fromListIannotatedTree
-                         _whrIannotatedTree
-                         _returningIannotatedTree
-              -- "./TypeChecking/Dml/Update.ag"(line 30, column 9)
-              _catUpdates =
-                  []
-              -- "./TypeChecking/Dml/Update.ag"(line 35, column 9)
-              _lib =
-                  either (const _lhsIlib) id $ do
-                  a <- lmt (allAtts <$> _tableItbUType)
-                  lbUpdate _lhsIcat (LBIds "updated table attrs" (Just $ getTName _tableIannotatedTree) a) _lhsIlib
-              -- "./TypeChecking/Dml/Update.ag"(line 39, column 9)
-              _whrOlib =
-                  _lib
-              -- "./TypeChecking/Dml/Update.ag"(line 40, column 9)
-              _assignsOlib =
-                  _lib
-              -- "./TypeChecking/Dml/Update.ag"(line 41, column 9)
-              _returningOlib =
-                  _lib
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 155, column 14)
-              _assignsOexpectedTypes =
-                  []
-              -- self rule
-              _annotatedTree =
-                  Update ann_ _tableIannotatedTree _assignsIannotatedTree _fromListIannotatedTree _whrIannotatedTree _returningIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Update ann_ _tableIfixedUpIdentifiersTree _assignsIfixedUpIdentifiersTree _fromListIfixedUpIdentifiersTree _whrIfixedUpIdentifiersTree _returningIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  Update ann_ _tableIoriginalTree _assignsIoriginalTree _fromListIoriginalTree _whrIoriginalTree _returningIoriginalTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _tableOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _tableOidenv =
-                  _lhsIidenv
-              -- copy rule (from local)
-              _tableOlib =
-                  _lib
-              -- copy rule (down)
-              _assignsOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _assignsOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _fromListOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _fromListOidenv =
-                  _lhsIidenv
-              -- copy rule (from local)
-              _fromListOlib =
-                  _lib
-              -- copy rule (down)
-              _whrOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _whrOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _returningOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _returningOidenv =
-                  _lhsIidenv
-              ( _tableIannotatedTree,_tableIfixedUpIdentifiersTree,_tableIoriginalTree,_tableItbAnnotatedTree,_tableItbUType) =
-                  table_ _tableOcat _tableOidenv _tableOlib 
-              ( _assignsIannotatedTree,_assignsIfixedUpIdentifiersTree,_assignsIoriginalTree,_assignsIuType) =
-                  assigns_ _assignsOcat _assignsOexpectedTypes _assignsOidenv _assignsOlib 
-              ( _fromListIannotatedTree,_fromListIfixedUpIdentifiersTree,_fromListIlibUpdates,_fromListInewLib2,_fromListIoriginalTree,_fromListItrefIDs) =
-                  fromList_ _fromListOcat _fromListOidenv _fromListOlib 
-              ( _whrIannotatedTree,_whrIfixedUpIdentifiersTree,_whrIoriginalTree) =
-                  whr_ _whrOcat _whrOidenv _whrOlib 
-              ( _returningIannotatedTree,_returningIfixedUpIdentifiersTree,_returningIlistType,_returningIoriginalTree) =
-                  returning_ _returningOcat _returningOidenv _returningOlib 
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
-sem_Statement_WhileStatement :: Annotation ->
-                                (Maybe String) ->
-                                T_ScalarExpr  ->
-                                T_StatementList  ->
-                                T_Statement 
-sem_Statement_WhileStatement ann_ lb_ expr_ sts_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIinProducedCat
-       _lhsIlib ->
-         (let _lhsOcatUpdates :: ([CatalogUpdate])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _stsOcatUpdates :: ([CatalogUpdate])
-              _stsOlibUpdates :: ([LocalBindingsUpdate])
-              _exprOexpectedType :: (Maybe Type)
-              _lhsOannotatedTree :: Statement 
-              _lhsOfixedUpIdentifiersTree :: Statement 
-              _lhsOoriginalTree :: Statement 
-              _exprOcat :: Catalog
-              _exprOidenv :: IDEnv
-              _exprOlib :: LocalBindings
-              _stsOcat :: Catalog
-              _stsOidenv :: IDEnv
-              _stsOlib :: LocalBindings
-              _exprIannotatedTree :: ScalarExpr 
-              _exprIfixedUpIdentifiersTree :: ScalarExpr 
-              _exprIoriginalTree :: ScalarExpr 
-              _exprIuType :: (Maybe Type)
-              _stsIannotatedTree :: StatementList 
-              _stsIfixedUpIdentifiersTree :: StatementList 
-              _stsIoriginalTree :: StatementList 
-              _stsIproducedCat :: Catalog
-              _stsIproducedLib :: LocalBindings
-              -- "./TypeChecking/Statements.ag"(line 116, column 9)
-              _lhsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 117, column 9)
-              _lhsOlibUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 138, column 9)
-              _stsOcatUpdates =
-                  []
-              -- "./TypeChecking/Statements.ag"(line 139, column 9)
-              _stsOlibUpdates =
-                  []
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 112, column 9)
-              _exprOexpectedType =
-                  Nothing
-              -- self rule
-              _annotatedTree =
-                  WhileStatement ann_ lb_ _exprIannotatedTree _stsIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  WhileStatement ann_ lb_ _exprIfixedUpIdentifiersTree _stsIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  WhileStatement ann_ lb_ _exprIoriginalTree _stsIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _exprOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _exprOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _exprOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _stsOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _stsOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _stsOlib =
-                  _lhsIlib
-              ( _exprIannotatedTree,_exprIfixedUpIdentifiersTree,_exprIoriginalTree,_exprIuType) =
-                  expr_ _exprOcat _exprOexpectedType _exprOidenv _exprOlib 
-              ( _stsIannotatedTree,_stsIfixedUpIdentifiersTree,_stsIoriginalTree,_stsIproducedCat,_stsIproducedLib) =
-                  sts_ _stsOcat _stsOcatUpdates _stsOidenv _stsOlib _stsOlibUpdates 
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
--- StatementList -----------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         catUpdates           : [CatalogUpdate]
-         idenv                : IDEnv
-         lib                  : LocalBindings
-         libUpdates           : [LocalBindingsUpdate]
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-         producedCat          : Catalog
-         producedLib          : LocalBindings
-   alternatives:
-      alternative Cons:
-         child hd             : Statement 
-         child tl             : StatementList 
-         visit 0:
-            local newCat      : _
-            local newLib      : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Nil:
-         visit 0:
-            local newCat      : _
-            local newLib      : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-type StatementList  = [Statement ]
--- cata
-sem_StatementList :: StatementList  ->
-                     T_StatementList 
-sem_StatementList list  =
-    (Prelude.foldr sem_StatementList_Cons sem_StatementList_Nil (Prelude.map sem_Statement list) )
--- semantic domain
-type T_StatementList  = Catalog ->
-                        ([CatalogUpdate]) ->
-                        IDEnv ->
-                        LocalBindings ->
-                        ([LocalBindingsUpdate]) ->
-                        ( StatementList ,StatementList ,StatementList ,Catalog,LocalBindings)
-data Inh_StatementList  = Inh_StatementList {cat_Inh_StatementList :: Catalog,catUpdates_Inh_StatementList :: ([CatalogUpdate]),idenv_Inh_StatementList :: IDEnv,lib_Inh_StatementList :: LocalBindings,libUpdates_Inh_StatementList :: ([LocalBindingsUpdate])}
-data Syn_StatementList  = Syn_StatementList {annotatedTree_Syn_StatementList :: StatementList ,fixedUpIdentifiersTree_Syn_StatementList :: StatementList ,originalTree_Syn_StatementList :: StatementList ,producedCat_Syn_StatementList :: Catalog,producedLib_Syn_StatementList :: LocalBindings}
-wrap_StatementList :: T_StatementList  ->
-                      Inh_StatementList  ->
-                      Syn_StatementList 
-wrap_StatementList sem (Inh_StatementList _lhsIcat _lhsIcatUpdates _lhsIidenv _lhsIlib _lhsIlibUpdates )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOproducedCat,_lhsOproducedLib) = sem _lhsIcat _lhsIcatUpdates _lhsIidenv _lhsIlib _lhsIlibUpdates 
-     in  (Syn_StatementList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree _lhsOproducedCat _lhsOproducedLib ))
-sem_StatementList_Cons :: T_Statement  ->
-                          T_StatementList  ->
-                          T_StatementList 
-sem_StatementList_Cons hd_ tl_  =
-    (\ _lhsIcat
-       _lhsIcatUpdates
-       _lhsIidenv
-       _lhsIlib
-       _lhsIlibUpdates ->
-         (let _hdOcat :: Catalog
-              _tlOcat :: Catalog
-              _hdOlib :: LocalBindings
-              _tlOlib :: LocalBindings
-              _lhsOproducedCat :: Catalog
-              _lhsOproducedLib :: LocalBindings
-              _tlOcatUpdates :: ([CatalogUpdate])
-              _tlOlibUpdates :: ([LocalBindingsUpdate])
-              _hdOinProducedCat :: Catalog
-              _lhsOannotatedTree :: StatementList 
-              _lhsOfixedUpIdentifiersTree :: StatementList 
-              _lhsOoriginalTree :: StatementList 
-              _hdOidenv :: IDEnv
-              _tlOidenv :: IDEnv
-              _hdIannotatedTree :: Statement 
-              _hdIcatUpdates :: ([CatalogUpdate])
-              _hdIfixedUpIdentifiersTree :: Statement 
-              _hdIlibUpdates :: ([LocalBindingsUpdate])
-              _hdIoriginalTree :: Statement 
-              _tlIannotatedTree :: StatementList 
-              _tlIfixedUpIdentifiersTree :: StatementList 
-              _tlIoriginalTree :: StatementList 
-              _tlIproducedCat :: Catalog
-              _tlIproducedLib :: LocalBindings
-              -- "./TypeChecking/Statements.ag"(line 56, column 9)
-              _newCat =
-                  fromRight _lhsIcat $ updateCatalog _lhsIcat _lhsIcatUpdates
-              -- "./TypeChecking/Statements.ag"(line 57, column 9)
-              _newLib =
-                  fromRight _lhsIlib $ foldM (flip $ lbUpdate _lhsIcat) _lhsIlib _lhsIlibUpdates
-              -- "./TypeChecking/Statements.ag"(line 59, column 9)
-              _hdOcat =
-                  _newCat
-              -- "./TypeChecking/Statements.ag"(line 60, column 9)
-              _tlOcat =
-                  _newCat
-              -- "./TypeChecking/Statements.ag"(line 61, column 9)
-              _hdOlib =
-                  _newLib
-              -- "./TypeChecking/Statements.ag"(line 62, column 9)
-              _tlOlib =
-                  _newLib
-              -- "./TypeChecking/Statements.ag"(line 66, column 9)
-              _lhsOproducedCat =
-                  _tlIproducedCat
-              -- "./TypeChecking/Statements.ag"(line 67, column 9)
-              _lhsOproducedLib =
-                  _tlIproducedLib
-              -- "./TypeChecking/Statements.ag"(line 70, column 9)
-              _tlOcatUpdates =
-                  _hdIcatUpdates
-              -- "./TypeChecking/Statements.ag"(line 71, column 9)
-              _tlOlibUpdates =
-                  _hdIlibUpdates
-              -- "./TypeChecking/Statements.ag"(line 97, column 12)
-              _hdOinProducedCat =
-                  _tlIproducedCat
-              -- self rule
-              _annotatedTree =
-                  (:) _hdIannotatedTree _tlIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  (:) _hdIoriginalTree _tlIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _hdOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _tlOidenv =
-                  _lhsIidenv
-              ( _hdIannotatedTree,_hdIcatUpdates,_hdIfixedUpIdentifiersTree,_hdIlibUpdates,_hdIoriginalTree) =
-                  hd_ _hdOcat _hdOidenv _hdOinProducedCat _hdOlib 
-              ( _tlIannotatedTree,_tlIfixedUpIdentifiersTree,_tlIoriginalTree,_tlIproducedCat,_tlIproducedLib) =
-                  tl_ _tlOcat _tlOcatUpdates _tlOidenv _tlOlib _tlOlibUpdates 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOproducedCat,_lhsOproducedLib)))
-sem_StatementList_Nil :: T_StatementList 
-sem_StatementList_Nil  =
-    (\ _lhsIcat
-       _lhsIcatUpdates
-       _lhsIidenv
-       _lhsIlib
-       _lhsIlibUpdates ->
-         (let _lhsOproducedCat :: Catalog
-              _lhsOproducedLib :: LocalBindings
-              _lhsOannotatedTree :: StatementList 
-              _lhsOfixedUpIdentifiersTree :: StatementList 
-              _lhsOoriginalTree :: StatementList 
-              -- "./TypeChecking/Statements.ag"(line 56, column 9)
-              _newCat =
-                  fromRight _lhsIcat $ updateCatalog _lhsIcat _lhsIcatUpdates
-              -- "./TypeChecking/Statements.ag"(line 57, column 9)
-              _newLib =
-                  fromRight _lhsIlib $ foldM (flip $ lbUpdate _lhsIcat) _lhsIlib _lhsIlibUpdates
-              -- "./TypeChecking/Statements.ag"(line 73, column 9)
-              _lhsOproducedCat =
-                  _newCat
-              -- "./TypeChecking/Statements.ag"(line 74, column 9)
-              _lhsOproducedLib =
-                  _newLib
-              -- self rule
-              _annotatedTree =
-                  []
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  []
-              -- self rule
-              _originalTree =
-                  []
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOproducedCat,_lhsOproducedLib)))
--- StringTypeNameListPair --------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         fnSig                : (String,[Maybe Type])
-         originalTree         : SELF 
-   alternatives:
-      alternative Tuple:
-         child x1             : {String}
-         child x2             : TypeNameList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-type StringTypeNameListPair  = ( (String),TypeNameList )
--- cata
-sem_StringTypeNameListPair :: StringTypeNameListPair  ->
-                              T_StringTypeNameListPair 
-sem_StringTypeNameListPair ( x1,x2)  =
-    (sem_StringTypeNameListPair_Tuple x1 (sem_TypeNameList x2 ) )
--- semantic domain
-type T_StringTypeNameListPair  = Catalog ->
-                                 IDEnv ->
-                                 LocalBindings ->
-                                 ( StringTypeNameListPair ,StringTypeNameListPair ,((String,[Maybe Type])),StringTypeNameListPair )
-data Inh_StringTypeNameListPair  = Inh_StringTypeNameListPair {cat_Inh_StringTypeNameListPair :: Catalog,idenv_Inh_StringTypeNameListPair :: IDEnv,lib_Inh_StringTypeNameListPair :: LocalBindings}
-data Syn_StringTypeNameListPair  = Syn_StringTypeNameListPair {annotatedTree_Syn_StringTypeNameListPair :: StringTypeNameListPair ,fixedUpIdentifiersTree_Syn_StringTypeNameListPair :: StringTypeNameListPair ,fnSig_Syn_StringTypeNameListPair :: ((String,[Maybe Type])),originalTree_Syn_StringTypeNameListPair :: StringTypeNameListPair }
-wrap_StringTypeNameListPair :: T_StringTypeNameListPair  ->
-                               Inh_StringTypeNameListPair  ->
-                               Syn_StringTypeNameListPair 
-wrap_StringTypeNameListPair sem (Inh_StringTypeNameListPair _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOfnSig,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_StringTypeNameListPair _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOfnSig _lhsOoriginalTree ))
-sem_StringTypeNameListPair_Tuple :: String ->
-                                    T_TypeNameList  ->
-                                    T_StringTypeNameListPair 
-sem_StringTypeNameListPair_Tuple x1_ x2_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOfnSig :: ((String,[Maybe Type]))
-              _lhsOannotatedTree :: StringTypeNameListPair 
-              _lhsOfixedUpIdentifiersTree :: StringTypeNameListPair 
-              _lhsOoriginalTree :: StringTypeNameListPair 
-              _x2Ocat :: Catalog
-              _x2Oidenv :: IDEnv
-              _x2Olib :: LocalBindings
-              _x2IannotatedTree :: TypeNameList 
-              _x2IfixedUpIdentifiersTree :: TypeNameList 
-              _x2InamedTypes :: ([Maybe Type])
-              _x2IoriginalTree :: TypeNameList 
-              -- "./TypeChecking/Ddl/Drops.ag"(line 32, column 13)
-              _lhsOfnSig =
-                  (x1_, _x2InamedTypes)
-              -- self rule
-              _annotatedTree =
-                  (x1_,_x2IannotatedTree)
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  (x1_,_x2IfixedUpIdentifiersTree)
-              -- self rule
-              _originalTree =
-                  (x1_,_x2IoriginalTree)
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _x2Ocat =
-                  _lhsIcat
-              -- copy rule (down)
-              _x2Oidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _x2Olib =
-                  _lhsIlib
-              ( _x2IannotatedTree,_x2IfixedUpIdentifiersTree,_x2InamedTypes,_x2IoriginalTree) =
-                  x2_ _x2Ocat _x2Oidenv _x2Olib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOfnSig,_lhsOoriginalTree)))
--- StringTypeNameListPairList ----------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         fnSigs               : [(String,[Maybe Type])]
-         originalTree         : SELF 
-   alternatives:
-      alternative Cons:
-         child hd             : StringTypeNameListPair 
-         child tl             : StringTypeNameListPairList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Nil:
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-type StringTypeNameListPairList  = [StringTypeNameListPair ]
--- cata
-sem_StringTypeNameListPairList :: StringTypeNameListPairList  ->
-                                  T_StringTypeNameListPairList 
-sem_StringTypeNameListPairList list  =
-    (Prelude.foldr sem_StringTypeNameListPairList_Cons sem_StringTypeNameListPairList_Nil (Prelude.map sem_StringTypeNameListPair list) )
--- semantic domain
-type T_StringTypeNameListPairList  = Catalog ->
-                                     IDEnv ->
-                                     LocalBindings ->
-                                     ( StringTypeNameListPairList ,StringTypeNameListPairList ,([(String,[Maybe Type])]),StringTypeNameListPairList )
-data Inh_StringTypeNameListPairList  = Inh_StringTypeNameListPairList {cat_Inh_StringTypeNameListPairList :: Catalog,idenv_Inh_StringTypeNameListPairList :: IDEnv,lib_Inh_StringTypeNameListPairList :: LocalBindings}
-data Syn_StringTypeNameListPairList  = Syn_StringTypeNameListPairList {annotatedTree_Syn_StringTypeNameListPairList :: StringTypeNameListPairList ,fixedUpIdentifiersTree_Syn_StringTypeNameListPairList :: StringTypeNameListPairList ,fnSigs_Syn_StringTypeNameListPairList :: ([(String,[Maybe Type])]),originalTree_Syn_StringTypeNameListPairList :: StringTypeNameListPairList }
-wrap_StringTypeNameListPairList :: T_StringTypeNameListPairList  ->
-                                   Inh_StringTypeNameListPairList  ->
-                                   Syn_StringTypeNameListPairList 
-wrap_StringTypeNameListPairList sem (Inh_StringTypeNameListPairList _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOfnSigs,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_StringTypeNameListPairList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOfnSigs _lhsOoriginalTree ))
-sem_StringTypeNameListPairList_Cons :: T_StringTypeNameListPair  ->
-                                       T_StringTypeNameListPairList  ->
-                                       T_StringTypeNameListPairList 
-sem_StringTypeNameListPairList_Cons hd_ tl_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOfnSigs :: ([(String,[Maybe Type])])
-              _lhsOannotatedTree :: StringTypeNameListPairList 
-              _lhsOfixedUpIdentifiersTree :: StringTypeNameListPairList 
-              _lhsOoriginalTree :: StringTypeNameListPairList 
-              _hdOcat :: Catalog
-              _hdOidenv :: IDEnv
-              _hdOlib :: LocalBindings
-              _tlOcat :: Catalog
-              _tlOidenv :: IDEnv
-              _tlOlib :: LocalBindings
-              _hdIannotatedTree :: StringTypeNameListPair 
-              _hdIfixedUpIdentifiersTree :: StringTypeNameListPair 
-              _hdIfnSig :: ((String,[Maybe Type]))
-              _hdIoriginalTree :: StringTypeNameListPair 
-              _tlIannotatedTree :: StringTypeNameListPairList 
-              _tlIfixedUpIdentifiersTree :: StringTypeNameListPairList 
-              _tlIfnSigs :: ([(String,[Maybe Type])])
-              _tlIoriginalTree :: StringTypeNameListPairList 
-              -- "./TypeChecking/Ddl/Drops.ag"(line 27, column 12)
-              _lhsOfnSigs =
-                  _hdIfnSig : _tlIfnSigs
-              -- self rule
-              _annotatedTree =
-                  (:) _hdIannotatedTree _tlIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  (:) _hdIoriginalTree _tlIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _hdOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _hdOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _hdOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _tlOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _tlOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _tlOlib =
-                  _lhsIlib
-              ( _hdIannotatedTree,_hdIfixedUpIdentifiersTree,_hdIfnSig,_hdIoriginalTree) =
-                  hd_ _hdOcat _hdOidenv _hdOlib 
-              ( _tlIannotatedTree,_tlIfixedUpIdentifiersTree,_tlIfnSigs,_tlIoriginalTree) =
-                  tl_ _tlOcat _tlOidenv _tlOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOfnSigs,_lhsOoriginalTree)))
-sem_StringTypeNameListPairList_Nil :: T_StringTypeNameListPairList 
-sem_StringTypeNameListPairList_Nil  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOfnSigs :: ([(String,[Maybe Type])])
-              _lhsOannotatedTree :: StringTypeNameListPairList 
-              _lhsOfixedUpIdentifiersTree :: StringTypeNameListPairList 
-              _lhsOoriginalTree :: StringTypeNameListPairList 
-              -- "./TypeChecking/Ddl/Drops.ag"(line 28, column 11)
-              _lhsOfnSigs =
-                  []
-              -- self rule
-              _annotatedTree =
-                  []
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  []
-              -- self rule
-              _originalTree =
-                  []
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOfnSigs,_lhsOoriginalTree)))
--- TableAlias --------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         expectedNumCols      : Maybe Int
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-   alternatives:
-      alternative FullAlias:
-         child ann            : {Annotation}
-         child tb             : {String}
-         child cols           : {[String]}
-         visit 0:
-            local errs        : _
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative NoAlias:
-         child ann            : {Annotation}
-         visit 0:
-            local backTree    : _
-            local errs        : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative TableAlias:
-         child ann            : {Annotation}
-         child tb             : {String}
-         visit 0:
-            local backTree    : _
-            local errs        : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-data TableAlias  = FullAlias (Annotation) (String) (([String])) 
-                 | NoAlias (Annotation) 
-                 | TableAlias (Annotation) (String) 
-                 deriving ( Data,Eq,Show,Typeable)
--- cata
-sem_TableAlias :: TableAlias  ->
-                  T_TableAlias 
-sem_TableAlias (FullAlias _ann _tb _cols )  =
-    (sem_TableAlias_FullAlias _ann _tb _cols )
-sem_TableAlias (NoAlias _ann )  =
-    (sem_TableAlias_NoAlias _ann )
-sem_TableAlias (TableAlias _ann _tb )  =
-    (sem_TableAlias_TableAlias _ann _tb )
--- semantic domain
-type T_TableAlias  = Catalog ->
-                     (Maybe Int) ->
-                     IDEnv ->
-                     LocalBindings ->
-                     ( TableAlias ,TableAlias ,TableAlias )
-data Inh_TableAlias  = Inh_TableAlias {cat_Inh_TableAlias :: Catalog,expectedNumCols_Inh_TableAlias :: (Maybe Int),idenv_Inh_TableAlias :: IDEnv,lib_Inh_TableAlias :: LocalBindings}
-data Syn_TableAlias  = Syn_TableAlias {annotatedTree_Syn_TableAlias :: TableAlias ,fixedUpIdentifiersTree_Syn_TableAlias :: TableAlias ,originalTree_Syn_TableAlias :: TableAlias }
-wrap_TableAlias :: T_TableAlias  ->
-                   Inh_TableAlias  ->
-                   Syn_TableAlias 
-wrap_TableAlias sem (Inh_TableAlias _lhsIcat _lhsIexpectedNumCols _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIexpectedNumCols _lhsIidenv _lhsIlib 
-     in  (Syn_TableAlias _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
-sem_TableAlias_FullAlias :: Annotation ->
-                            String ->
-                            ([String]) ->
-                            T_TableAlias 
-sem_TableAlias_FullAlias ann_ tb_ cols_  =
-    (\ _lhsIcat
-       _lhsIexpectedNumCols
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: TableAlias 
-              _lhsOfixedUpIdentifiersTree :: TableAlias 
-              _lhsOoriginalTree :: TableAlias 
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 286, column 9)
-              _lhsOannotatedTree =
-                  addTypeErrors _errs     _backTree
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 288, column 9)
-              _errs =
-                  case _lhsIexpectedNumCols of
-                        Nothing -> []
-                        Just n -> if n == length cols_
-                                  then []
-                                  else [WrongNumberOfAliasCols n $ length cols_]
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 293, column 9)
-              _backTree =
-                  FullAlias ann_ tb_ cols_
-              -- self rule
-              _annotatedTree =
-                  FullAlias ann_ tb_ cols_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  FullAlias ann_ tb_ cols_
-              -- self rule
-              _originalTree =
-                  FullAlias ann_ tb_ cols_
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
-sem_TableAlias_NoAlias :: Annotation ->
-                          T_TableAlias 
-sem_TableAlias_NoAlias ann_  =
-    (\ _lhsIcat
-       _lhsIexpectedNumCols
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: TableAlias 
-              _lhsOfixedUpIdentifiersTree :: TableAlias 
-              _lhsOoriginalTree :: TableAlias 
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 286, column 9)
-              _lhsOannotatedTree =
-                  addTypeErrors _errs     _backTree
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 296, column 15)
-              _backTree =
-                  NoAlias ann_
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 297, column 15)
-              _errs =
-                  []
-              -- self rule
-              _annotatedTree =
-                  NoAlias ann_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  NoAlias ann_
-              -- self rule
-              _originalTree =
-                  NoAlias ann_
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
-sem_TableAlias_TableAlias :: Annotation ->
-                             String ->
-                             T_TableAlias 
-sem_TableAlias_TableAlias ann_ tb_  =
-    (\ _lhsIcat
-       _lhsIexpectedNumCols
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOannotatedTree :: TableAlias 
-              _lhsOfixedUpIdentifiersTree :: TableAlias 
-              _lhsOoriginalTree :: TableAlias 
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 286, column 9)
-              _lhsOannotatedTree =
-                  addTypeErrors _errs     _backTree
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 294, column 18)
-              _backTree =
-                  TableAlias ann_ tb_
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 295, column 18)
-              _errs =
-                  []
-              -- self rule
-              _annotatedTree =
-                  TableAlias ann_ tb_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  TableAlias ann_ tb_
-              -- self rule
-              _originalTree =
-                  TableAlias ann_ tb_
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
--- TableRef ----------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         libUpdates           : [LocalBindingsUpdate]
-         newLib2              : LocalBindings
-         originalTree         : SELF 
-         trefIDs              : [(String,[String])]
-   alternatives:
-      alternative FunTref:
-         child ann            : {Annotation}
-         child fn             : ScalarExpr 
-         child alias          : TableAlias 
-         visit 0:
-            local _tup2       : {([(String,[String])],TableRef)}
-            local errs        : _
-            local eqfunIdens  : {Either [TypeError] (String,[(String,Type)])}
-            local qfunIdens   : _
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative JoinTref:
-         child ann            : {Annotation}
-         child tbl            : TableRef 
-         child nat            : {Natural}
-         child joinType       : {JoinType}
-         child tbl1           : TableRef 
-         child onExpr         : OnExpr 
-         child alias          : TableAlias 
-         visit 0:
-            local _tup3       : _
-            local trefIDs     : _
-            local errs        : _
-            local joinErrors  : _
-            local libUpdates  : _
-            local newLib      : {Either [TypeError] LocalBindings}
-            local newLib2     : _
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative SubTref:
-         child ann            : {Annotation}
-         child sel            : QueryExpr 
-         child alias          : TableAlias 
-         visit 0:
-            local _tup4       : {([(String,[String])],TableRef)}
-            local errs        : _
-            local selectAttrs : {Either [TypeError] [(String,Type)]}
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Tref:
-         child ann            : {Annotation}
-         child tbl            : SQIdentifier 
-         child alias          : TableAlias 
-         visit 0:
-            local _tup5       : {([(String,[String])],TableRef)}
-            local errs        : _
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-data TableRef  = FunTref (Annotation) (ScalarExpr ) (TableAlias ) 
-               | JoinTref (Annotation) (TableRef ) (Natural) (JoinType) (TableRef ) (OnExpr ) (TableAlias ) 
-               | SubTref (Annotation) (QueryExpr ) (TableAlias ) 
-               | Tref (Annotation) (SQIdentifier ) (TableAlias ) 
-               deriving ( Data,Eq,Show,Typeable)
--- cata
-sem_TableRef :: TableRef  ->
-                T_TableRef 
-sem_TableRef (FunTref _ann _fn _alias )  =
-    (sem_TableRef_FunTref _ann (sem_ScalarExpr _fn ) (sem_TableAlias _alias ) )
-sem_TableRef (JoinTref _ann _tbl _nat _joinType _tbl1 _onExpr _alias )  =
-    (sem_TableRef_JoinTref _ann (sem_TableRef _tbl ) _nat _joinType (sem_TableRef _tbl1 ) (sem_OnExpr _onExpr ) (sem_TableAlias _alias ) )
-sem_TableRef (SubTref _ann _sel _alias )  =
-    (sem_TableRef_SubTref _ann (sem_QueryExpr _sel ) (sem_TableAlias _alias ) )
-sem_TableRef (Tref _ann _tbl _alias )  =
-    (sem_TableRef_Tref _ann (sem_SQIdentifier _tbl ) (sem_TableAlias _alias ) )
--- semantic domain
-type T_TableRef  = Catalog ->
-                   IDEnv ->
-                   LocalBindings ->
-                   ( TableRef ,TableRef ,([LocalBindingsUpdate]),LocalBindings,TableRef ,([(String,[String])]))
-data Inh_TableRef  = Inh_TableRef {cat_Inh_TableRef :: Catalog,idenv_Inh_TableRef :: IDEnv,lib_Inh_TableRef :: LocalBindings}
-data Syn_TableRef  = Syn_TableRef {annotatedTree_Syn_TableRef :: TableRef ,fixedUpIdentifiersTree_Syn_TableRef :: TableRef ,libUpdates_Syn_TableRef :: ([LocalBindingsUpdate]),newLib2_Syn_TableRef :: LocalBindings,originalTree_Syn_TableRef :: TableRef ,trefIDs_Syn_TableRef :: ([(String,[String])])}
-wrap_TableRef :: T_TableRef  ->
-                 Inh_TableRef  ->
-                 Syn_TableRef 
-wrap_TableRef sem (Inh_TableRef _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOnewLib2,_lhsOoriginalTree,_lhsOtrefIDs) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_TableRef _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOlibUpdates _lhsOnewLib2 _lhsOoriginalTree _lhsOtrefIDs ))
-sem_TableRef_FunTref :: Annotation ->
-                        T_ScalarExpr  ->
-                        T_TableAlias  ->
-                        T_TableRef 
-sem_TableRef_FunTref ann_ fn_ alias_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let __tup2 :: (([(String,[String])],TableRef))
-              _lhsOtrefIDs :: ([(String,[String])])
-              _lhsOfixedUpIdentifiersTree :: TableRef 
-              _lhsOannotatedTree :: TableRef 
-              _eqfunIdens :: (Either [TypeError] (String,[(String,Type)]))
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _lhsOnewLib2 :: LocalBindings
-              _aliasOexpectedNumCols :: (Maybe Int)
-              _fnOexpectedType :: (Maybe Type)
-              _lhsOoriginalTree :: TableRef 
-              _fnOcat :: Catalog
-              _fnOidenv :: IDEnv
-              _fnOlib :: LocalBindings
-              _aliasOcat :: Catalog
-              _aliasOidenv :: IDEnv
-              _aliasOlib :: LocalBindings
-              _fnIannotatedTree :: ScalarExpr 
-              _fnIfixedUpIdentifiersTree :: ScalarExpr 
-              _fnIoriginalTree :: ScalarExpr 
-              _fnIuType :: (Maybe Type)
-              _aliasIannotatedTree :: TableAlias 
-              _aliasIfixedUpIdentifiersTree :: TableAlias 
-              _aliasIoriginalTree :: TableAlias 
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 382, column 15)
-              __tup2 =
-                  let (FunCall _ f _) = _fnIfixedUpIdentifiersTree
-                      (trs,al) = doAlias _aliasIannotatedTree [(f,[f])]
-                  in (trs,FunTref ann_ _fnIfixedUpIdentifiersTree al)
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 382, column 15)
-              (_lhsOtrefIDs,_) =
-                  __tup2
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 382, column 15)
-              (_,_lhsOfixedUpIdentifiersTree) =
-                  __tup2
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 55, column 9)
-              _lhsOannotatedTree =
-                  addTypeErrors _errs     _backTree
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 102, column 9)
-              _errs =
-                  case _eqfunIdens of
-                    Left e -> e
-                    Right _ -> []
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 108, column 9)
-              _eqfunIdens =
-                  funIdens _lhsIcat (getAlias "" _aliasIoriginalTree) _fnIannotatedTree _fnIuType
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 109, column 9)
-              _lhsOlibUpdates =
-                  [LBTref "fn"
-                                  (fst _qfunIdens    )
-                                  (snd _qfunIdens    )
-                                  []]
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 113, column 9)
-              _qfunIdens =
-                  fromRight ("",[]) _eqfunIdens
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 247, column 9)
-              _lhsOnewLib2 =
-                  emptyBindings
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 260, column 9)
-              _backTree =
-                  FunTref ann_ _fnIannotatedTree _aliasIannotatedTree
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 281, column 9)
-              _aliasOexpectedNumCols =
-                  Nothing
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 120, column 15)
-              _fnOexpectedType =
-                  Nothing
-              -- self rule
-              _annotatedTree =
-                  FunTref ann_ _fnIannotatedTree _aliasIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  FunTref ann_ _fnIfixedUpIdentifiersTree _aliasIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  FunTref ann_ _fnIoriginalTree _aliasIoriginalTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _fnOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _fnOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _fnOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _aliasOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _aliasOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _aliasOlib =
-                  _lhsIlib
-              ( _fnIannotatedTree,_fnIfixedUpIdentifiersTree,_fnIoriginalTree,_fnIuType) =
-                  fn_ _fnOcat _fnOexpectedType _fnOidenv _fnOlib 
-              ( _aliasIannotatedTree,_aliasIfixedUpIdentifiersTree,_aliasIoriginalTree) =
-                  alias_ _aliasOcat _aliasOexpectedNumCols _aliasOidenv _aliasOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOnewLib2,_lhsOoriginalTree,_lhsOtrefIDs)))
-sem_TableRef_JoinTref :: Annotation ->
-                         T_TableRef  ->
-                         Natural ->
-                         JoinType ->
-                         T_TableRef  ->
-                         T_OnExpr  ->
-                         T_TableAlias  ->
-                         T_TableRef 
-sem_TableRef_JoinTref ann_ tbl_ nat_ joinType_ tbl1_ onExpr_ alias_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOfixedUpIdentifiersTree :: TableRef 
-              _lhsOtrefIDs :: ([(String,[String])])
-              _onExprOidenv :: IDEnv
-              _lhsOannotatedTree :: TableRef 
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _newLib :: (Either [TypeError] LocalBindings)
-              _lhsOnewLib2 :: LocalBindings
-              _onExprOlib :: LocalBindings
-              _aliasOexpectedNumCols :: (Maybe Int)
-              _lhsOoriginalTree :: TableRef 
-              _tblOcat :: Catalog
-              _tblOidenv :: IDEnv
-              _tblOlib :: LocalBindings
-              _tbl1Ocat :: Catalog
-              _tbl1Oidenv :: IDEnv
-              _tbl1Olib :: LocalBindings
-              _onExprOcat :: Catalog
-              _aliasOcat :: Catalog
-              _aliasOidenv :: IDEnv
-              _aliasOlib :: LocalBindings
-              _tblIannotatedTree :: TableRef 
-              _tblIfixedUpIdentifiersTree :: TableRef 
-              _tblIlibUpdates :: ([LocalBindingsUpdate])
-              _tblInewLib2 :: LocalBindings
-              _tblIoriginalTree :: TableRef 
-              _tblItrefIDs :: ([(String,[String])])
-              _tbl1IannotatedTree :: TableRef 
-              _tbl1IfixedUpIdentifiersTree :: TableRef 
-              _tbl1IlibUpdates :: ([LocalBindingsUpdate])
-              _tbl1InewLib2 :: LocalBindings
-              _tbl1IoriginalTree :: TableRef 
-              _tbl1ItrefIDs :: ([(String,[String])])
-              _onExprIannotatedTree :: OnExpr 
-              _onExprIfixedUpIdentifiersTree :: OnExpr 
-              _onExprIoriginalTree :: OnExpr 
-              _aliasIannotatedTree :: TableAlias 
-              _aliasIfixedUpIdentifiersTree :: TableAlias 
-              _aliasIoriginalTree :: TableAlias 
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 388, column 9)
-              __tup3 =
-                  let (trs,al) = doAlias _aliasIannotatedTree $ _tblItrefIDs ++ _tbl1ItrefIDs
-                  in (trs, JoinTref ann_ _tblIfixedUpIdentifiersTree
-                                    nat_ joinType_ _tbl1IfixedUpIdentifiersTree
-                                    _onExprIfixedUpIdentifiersTree al)
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 388, column 9)
-              (_trefIDs,_) =
-                  __tup3
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 388, column 9)
-              (_,_lhsOfixedUpIdentifiersTree) =
-                  __tup3
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 394, column 9)
-              _lhsOtrefIDs =
-                  _trefIDs
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 395, column 9)
-              _onExprOidenv =
-                  IDEnv _trefIDs
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 55, column 9)
-              _lhsOannotatedTree =
-                  addTypeErrors _errs     _backTree
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 118, column 9)
-              _errs =
-                  fromLeft [] _newLib
-                  ++ _joinErrors
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 120, column 9)
-              _lhsOlibUpdates =
-                  if _joinErrors     == []
-                  then _libUpdates
-                  else []
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 125, column 9)
-              _joinErrors =
-                  fromLeft [] (foldM (flip $ lbUpdate _lhsIcat) _lhsIlib _libUpdates    )
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 126, column 9)
-              _libUpdates =
-                  case (_tblIlibUpdates, _tbl1IlibUpdates) of
-                    ([u1], [u2]) -> [LBJoinTref "join" u1 u2 jids
-                                                    (case _aliasIoriginalTree of
-                                                             NoAlias _ -> Nothing
-                                                             TableAlias _ t -> Just t
-                                                             FullAlias _ t _ -> Just t)]
-                    _ -> []
-                  where
-                    jids = case (nat_, _onExprIoriginalTree) of
-                                (Natural, _) -> Left ()
-                                (_,Just (JoinUsing _ s)) -> Right s
-                                _ -> Right []
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 140, column 9)
-              _newLib =
-                  case (_tblIlibUpdates, _tbl1IlibUpdates) of
-                    ([u1],[u2]) -> lbUpdate _lhsIcat
-                                     (LBJoinTref "join" u1 u2 (Right []) Nothing) _lhsIlib
-                    _ -> Right _lhsIlib
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 220, column 9)
-              _newLib2 =
-                  let t0t :: [(String,Maybe Type)]
-                      t0t = getUnqualifiedBindings _tblInewLib2
-                      t1t = getUnqualifiedBindings _tbl1InewLib2
-                  in case _aliasIoriginalTree of
-                    (FullAlias _ n cs) ->
-                        createLocalBindings $ Just [(n,zip cs $ map snd (t0t ++ t1t))]
-                    (TableAlias _ n) ->
-                        createLocalBindings $ Just [(n, t0t ++ t1t)]
-                    NoAlias _ ->
-                        joinBindings _tblInewLib2 _tbl1InewLib2
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 233, column 9)
-              _lhsOnewLib2 =
-                  _newLib2
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 234, column 9)
-              _onExprOlib =
-                  _newLib2
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 262, column 9)
-              _backTree =
-                  JoinTref ann_
-                             _tblIannotatedTree
-                             nat_
-                             joinType_
-                             _tbl1IannotatedTree
-                             _onExprIannotatedTree
-                             _aliasIannotatedTree
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 281, column 9)
-              _aliasOexpectedNumCols =
-                  Nothing
-              -- self rule
-              _annotatedTree =
-                  JoinTref ann_ _tblIannotatedTree nat_ joinType_ _tbl1IannotatedTree _onExprIannotatedTree _aliasIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  JoinTref ann_ _tblIfixedUpIdentifiersTree nat_ joinType_ _tbl1IfixedUpIdentifiersTree _onExprIfixedUpIdentifiersTree _aliasIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  JoinTref ann_ _tblIoriginalTree nat_ joinType_ _tbl1IoriginalTree _onExprIoriginalTree _aliasIoriginalTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _tblOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _tblOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _tblOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _tbl1Ocat =
-                  _lhsIcat
-              -- copy rule (down)
-              _tbl1Oidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _tbl1Olib =
-                  _lhsIlib
-              -- copy rule (down)
-              _onExprOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _aliasOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _aliasOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _aliasOlib =
-                  _lhsIlib
-              ( _tblIannotatedTree,_tblIfixedUpIdentifiersTree,_tblIlibUpdates,_tblInewLib2,_tblIoriginalTree,_tblItrefIDs) =
-                  tbl_ _tblOcat _tblOidenv _tblOlib 
-              ( _tbl1IannotatedTree,_tbl1IfixedUpIdentifiersTree,_tbl1IlibUpdates,_tbl1InewLib2,_tbl1IoriginalTree,_tbl1ItrefIDs) =
-                  tbl1_ _tbl1Ocat _tbl1Oidenv _tbl1Olib 
-              ( _onExprIannotatedTree,_onExprIfixedUpIdentifiersTree,_onExprIoriginalTree) =
-                  onExpr_ _onExprOcat _onExprOidenv _onExprOlib 
-              ( _aliasIannotatedTree,_aliasIfixedUpIdentifiersTree,_aliasIoriginalTree) =
-                  alias_ _aliasOcat _aliasOexpectedNumCols _aliasOidenv _aliasOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOnewLib2,_lhsOoriginalTree,_lhsOtrefIDs)))
-sem_TableRef_SubTref :: Annotation ->
-                        T_QueryExpr  ->
-                        T_TableAlias  ->
-                        T_TableRef 
-sem_TableRef_SubTref ann_ sel_ alias_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let __tup4 :: (([(String,[String])],TableRef))
-              _lhsOtrefIDs :: ([(String,[String])])
-              _lhsOfixedUpIdentifiersTree :: TableRef 
-              _selOcsql :: LocalBindings
-              _lhsOannotatedTree :: TableRef 
-              _selectAttrs :: (Either [TypeError] [(String,Type)])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _lhsOnewLib2 :: LocalBindings
-              _aliasOexpectedNumCols :: (Maybe Int)
-              _selOexpectedTypes :: ([Maybe Type])
-              _lhsOoriginalTree :: TableRef 
-              _selOcat :: Catalog
-              _selOidenv :: IDEnv
-              _selOlib :: LocalBindings
-              _aliasOcat :: Catalog
-              _aliasOidenv :: IDEnv
-              _aliasOlib :: LocalBindings
-              _selIannotatedTree :: QueryExpr 
-              _selIcidenv :: IDEnv
-              _selIfixedUpIdentifiersTree :: QueryExpr 
-              _selIlibUpdates :: ([LocalBindingsUpdate])
-              _selIoriginalTree :: QueryExpr 
-              _selIuType :: (Maybe [(String,Type)])
-              _aliasIannotatedTree :: TableAlias 
-              _aliasIfixedUpIdentifiersTree :: TableAlias 
-              _aliasIoriginalTree :: TableAlias 
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 377, column 15)
-              __tup4 =
-                  let IDEnv x = _selIcidenv
-                      (trs,al) = doAlias _aliasIannotatedTree x
-                  in (trs, SubTref ann_ _selIfixedUpIdentifiersTree al)
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 377, column 15)
-              (_lhsOtrefIDs,_) =
-                  __tup4
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 377, column 15)
-              (_,_lhsOfixedUpIdentifiersTree) =
-                  __tup4
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 129, column 15)
-              _selOcsql =
-                  emptyBindings
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 55, column 9)
-              _lhsOannotatedTree =
-                  addTypeErrors _errs     _backTree
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 72, column 9)
-              _errs =
-                  case _selectAttrs     of
-                          Left e -> e
-                          Right _ -> []
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 76, column 9)
-              _selectAttrs =
-                  lmt _selIuType
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 77, column 9)
-              _lhsOlibUpdates =
-                  [LBTref "sub query" (getAlias "" _aliasIoriginalTree)
-                                  (fromRight [] _selectAttrs    ) []]
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 237, column 9)
-              _lhsOnewLib2 =
-                  createLocalBindings $ do
-                  pu <- _selIuType
-                  let (n,cs) = case _aliasIoriginalTree of
-                                 (FullAlias _ n cs) -> (n,cs)
-                                 _ -> (n, [])
-                  return [(n,zip cs $ map (Just . snd) pu)]
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 256, column 9)
-              _backTree =
-                  SubTref ann_ _selIannotatedTree _aliasIannotatedTree
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 281, column 9)
-              _aliasOexpectedNumCols =
-                  Nothing
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 180, column 15)
-              _selOexpectedTypes =
-                  []
-              -- self rule
-              _annotatedTree =
-                  SubTref ann_ _selIannotatedTree _aliasIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  SubTref ann_ _selIfixedUpIdentifiersTree _aliasIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  SubTref ann_ _selIoriginalTree _aliasIoriginalTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _selOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _selOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _selOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _aliasOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _aliasOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _aliasOlib =
-                  _lhsIlib
-              ( _selIannotatedTree,_selIcidenv,_selIfixedUpIdentifiersTree,_selIlibUpdates,_selIoriginalTree,_selIuType) =
-                  sel_ _selOcat _selOcsql _selOexpectedTypes _selOidenv _selOlib 
-              ( _aliasIannotatedTree,_aliasIfixedUpIdentifiersTree,_aliasIoriginalTree) =
-                  alias_ _aliasOcat _aliasOexpectedNumCols _aliasOidenv _aliasOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOnewLib2,_lhsOoriginalTree,_lhsOtrefIDs)))
-sem_TableRef_Tref :: Annotation ->
-                     T_SQIdentifier  ->
-                     T_TableAlias  ->
-                     T_TableRef 
-sem_TableRef_Tref ann_ tbl_ alias_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let __tup5 :: (([(String,[String])],TableRef))
-              _lhsOtrefIDs :: ([(String,[String])])
-              _lhsOfixedUpIdentifiersTree :: TableRef 
-              _lhsOannotatedTree :: TableRef 
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _lhsOnewLib2 :: LocalBindings
-              _aliasOexpectedNumCols :: (Maybe Int)
-              _lhsOoriginalTree :: TableRef 
-              _tblOcat :: Catalog
-              _tblOidenv :: IDEnv
-              _tblOlib :: LocalBindings
-              _aliasOcat :: Catalog
-              _aliasOidenv :: IDEnv
-              _aliasOlib :: LocalBindings
-              _tblIannotatedTree :: SQIdentifier 
-              _tblIfixedUpIdentifiersTree :: SQIdentifier 
-              _tblIoriginalTree :: SQIdentifier 
-              _tblItbAnnotatedTree :: SQIdentifier 
-              _tblItbUType :: (Maybe ([(String,Type)],[(String,Type)]))
-              _aliasIannotatedTree :: TableAlias 
-              _aliasIfixedUpIdentifiersTree :: TableAlias 
-              _aliasIoriginalTree :: TableAlias 
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 369, column 12)
-              __tup5 =
-                  let tn = getTName _tblIfixedUpIdentifiersTree
-                      ids = case catCompositePublicAttrs _lhsIcat relationComposites tn of
-                               Right attrs -> [(tn, map fst attrs)]
-                               Left _ -> [(tn,[])]
-                      (trs,al) = doAlias _aliasIannotatedTree ids
-                  in (trs,Tref ann_ _tblIfixedUpIdentifiersTree al)
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 369, column 12)
-              (_lhsOtrefIDs,_) =
-                  __tup5
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 369, column 12)
-              (_,_lhsOfixedUpIdentifiersTree) =
-                  __tup5
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 55, column 9)
-              _lhsOannotatedTree =
-                  addTypeErrors _errs     _backTree
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 85, column 9)
-              _errs =
-                  []
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 86, column 9)
-              _lhsOlibUpdates =
-                  maybe [] id $ do
-                  let n = getTName _tblIannotatedTree
-                  (pu,pr) <- _tblItbUType
-                  return [LBTref ("tref: " ++ n)
-                            (getAlias n _aliasIoriginalTree)
-                            pu
-                            pr]
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 208, column 9)
-              _lhsOnewLib2 =
-                  createLocalBindings $ do
-                  let n = getTName _tblIannotatedTree
-                  (pu,pr) <- _tblItbUType
-                  let (n,cs) = case _aliasIoriginalTree of
-                                 (FullAlias _ n cs) -> (n,cs)
-                                 _ -> (n, [])
-                  return [(n,zip cs $ map (Just . snd) pu)
-                         ,(n,map (second Just) pr)]
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 258, column 9)
-              _backTree =
-                  Tref ann_ _tblItbAnnotatedTree _aliasIannotatedTree
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 275, column 9)
-              _aliasOexpectedNumCols =
-                  do
-                  let n = getTName _tblIannotatedTree
-                  (pu,_) <- _tblItbUType
-                  return $ length pu
-              -- self rule
-              _annotatedTree =
-                  Tref ann_ _tblIannotatedTree _aliasIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Tref ann_ _tblIfixedUpIdentifiersTree _aliasIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  Tref ann_ _tblIoriginalTree _aliasIoriginalTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _tblOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _tblOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _tblOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _aliasOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _aliasOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _aliasOlib =
-                  _lhsIlib
-              ( _tblIannotatedTree,_tblIfixedUpIdentifiersTree,_tblIoriginalTree,_tblItbAnnotatedTree,_tblItbUType) =
-                  tbl_ _tblOcat _tblOidenv _tblOlib 
-              ( _aliasIannotatedTree,_aliasIfixedUpIdentifiersTree,_aliasIoriginalTree) =
-                  alias_ _aliasOcat _aliasOexpectedNumCols _aliasOidenv _aliasOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOnewLib2,_lhsOoriginalTree,_lhsOtrefIDs)))
--- TableRefList ------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         libUpdates           : [LocalBindingsUpdate]
-         newLib2              : LocalBindings
-         originalTree         : SELF 
-         trefIDs              : [(String,[String])]
-   alternatives:
-      alternative Cons:
-         child hd             : TableRef 
-         child tl             : TableRefList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Nil:
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-type TableRefList  = [TableRef ]
--- cata
-sem_TableRefList :: TableRefList  ->
-                    T_TableRefList 
-sem_TableRefList list  =
-    (Prelude.foldr sem_TableRefList_Cons sem_TableRefList_Nil (Prelude.map sem_TableRef list) )
--- semantic domain
-type T_TableRefList  = Catalog ->
-                       IDEnv ->
-                       LocalBindings ->
-                       ( TableRefList ,TableRefList ,([LocalBindingsUpdate]),LocalBindings,TableRefList ,([(String,[String])]))
-data Inh_TableRefList  = Inh_TableRefList {cat_Inh_TableRefList :: Catalog,idenv_Inh_TableRefList :: IDEnv,lib_Inh_TableRefList :: LocalBindings}
-data Syn_TableRefList  = Syn_TableRefList {annotatedTree_Syn_TableRefList :: TableRefList ,fixedUpIdentifiersTree_Syn_TableRefList :: TableRefList ,libUpdates_Syn_TableRefList :: ([LocalBindingsUpdate]),newLib2_Syn_TableRefList :: LocalBindings,originalTree_Syn_TableRefList :: TableRefList ,trefIDs_Syn_TableRefList :: ([(String,[String])])}
-wrap_TableRefList :: T_TableRefList  ->
-                     Inh_TableRefList  ->
-                     Syn_TableRefList 
-wrap_TableRefList sem (Inh_TableRefList _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOnewLib2,_lhsOoriginalTree,_lhsOtrefIDs) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_TableRefList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOlibUpdates _lhsOnewLib2 _lhsOoriginalTree _lhsOtrefIDs ))
-sem_TableRefList_Cons :: T_TableRef  ->
-                         T_TableRefList  ->
-                         T_TableRefList 
-sem_TableRefList_Cons hd_ tl_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOtrefIDs :: ([(String,[String])])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _lhsOnewLib2 :: LocalBindings
-              _lhsOannotatedTree :: TableRefList 
-              _lhsOfixedUpIdentifiersTree :: TableRefList 
-              _lhsOoriginalTree :: TableRefList 
-              _hdOcat :: Catalog
-              _hdOidenv :: IDEnv
-              _hdOlib :: LocalBindings
-              _tlOcat :: Catalog
-              _tlOidenv :: IDEnv
-              _tlOlib :: LocalBindings
-              _hdIannotatedTree :: TableRef 
-              _hdIfixedUpIdentifiersTree :: TableRef 
-              _hdIlibUpdates :: ([LocalBindingsUpdate])
-              _hdInewLib2 :: LocalBindings
-              _hdIoriginalTree :: TableRef 
-              _hdItrefIDs :: ([(String,[String])])
-              _tlIannotatedTree :: TableRefList 
-              _tlIfixedUpIdentifiersTree :: TableRefList 
-              _tlIlibUpdates :: ([LocalBindingsUpdate])
-              _tlInewLib2 :: LocalBindings
-              _tlIoriginalTree :: TableRefList 
-              _tlItrefIDs :: ([(String,[String])])
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 365, column 12)
-              _lhsOtrefIDs =
-                  _hdItrefIDs ++ _tlItrefIDs
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 61, column 9)
-              _lhsOlibUpdates =
-                  _hdIlibUpdates
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 204, column 9)
-              _lhsOnewLib2 =
-                  joinBindings _hdInewLib2 _tlInewLib2
-              -- self rule
-              _annotatedTree =
-                  (:) _hdIannotatedTree _tlIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  (:) _hdIoriginalTree _tlIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _hdOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _hdOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _hdOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _tlOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _tlOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _tlOlib =
-                  _lhsIlib
-              ( _hdIannotatedTree,_hdIfixedUpIdentifiersTree,_hdIlibUpdates,_hdInewLib2,_hdIoriginalTree,_hdItrefIDs) =
-                  hd_ _hdOcat _hdOidenv _hdOlib 
-              ( _tlIannotatedTree,_tlIfixedUpIdentifiersTree,_tlIlibUpdates,_tlInewLib2,_tlIoriginalTree,_tlItrefIDs) =
-                  tl_ _tlOcat _tlOidenv _tlOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOnewLib2,_lhsOoriginalTree,_lhsOtrefIDs)))
-sem_TableRefList_Nil :: T_TableRefList 
-sem_TableRefList_Nil  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOtrefIDs :: ([(String,[String])])
-              _lhsOlibUpdates :: ([LocalBindingsUpdate])
-              _lhsOnewLib2 :: LocalBindings
-              _lhsOannotatedTree :: TableRefList 
-              _lhsOfixedUpIdentifiersTree :: TableRefList 
-              _lhsOoriginalTree :: TableRefList 
-              -- "./TypeChecking/FixUpIdentifiers.ag"(line 366, column 11)
-              _lhsOtrefIDs =
-                  []
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 59, column 9)
-              _lhsOlibUpdates =
-                  []
-              -- "./TypeChecking/QueryExprs/TableRefs.ag"(line 202, column 9)
-              _lhsOnewLib2 =
-                  createLocalBindings $ Just []
-              -- self rule
-              _annotatedTree =
-                  []
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  []
-              -- self rule
-              _originalTree =
-                  []
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOnewLib2,_lhsOoriginalTree,_lhsOtrefIDs)))
--- TypeAttributeDef --------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         attrName             : String
-         fixedUpIdentifiersTree : SELF 
-         namedType            : Maybe Type
-         originalTree         : SELF 
-   alternatives:
-      alternative TypeAttDef:
-         child ann            : {Annotation}
-         child name           : {String}
-         child typ            : TypeName 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-data TypeAttributeDef  = TypeAttDef (Annotation) (String) (TypeName ) 
-                       deriving ( Data,Eq,Show,Typeable)
--- cata
-sem_TypeAttributeDef :: TypeAttributeDef  ->
-                        T_TypeAttributeDef 
-sem_TypeAttributeDef (TypeAttDef _ann _name _typ )  =
-    (sem_TypeAttributeDef_TypeAttDef _ann _name (sem_TypeName _typ ) )
--- semantic domain
-type T_TypeAttributeDef  = Catalog ->
-                           IDEnv ->
-                           LocalBindings ->
-                           ( TypeAttributeDef ,String,TypeAttributeDef ,(Maybe Type),TypeAttributeDef )
-data Inh_TypeAttributeDef  = Inh_TypeAttributeDef {cat_Inh_TypeAttributeDef :: Catalog,idenv_Inh_TypeAttributeDef :: IDEnv,lib_Inh_TypeAttributeDef :: LocalBindings}
-data Syn_TypeAttributeDef  = Syn_TypeAttributeDef {annotatedTree_Syn_TypeAttributeDef :: TypeAttributeDef ,attrName_Syn_TypeAttributeDef :: String,fixedUpIdentifiersTree_Syn_TypeAttributeDef :: TypeAttributeDef ,namedType_Syn_TypeAttributeDef :: (Maybe Type),originalTree_Syn_TypeAttributeDef :: TypeAttributeDef }
-wrap_TypeAttributeDef :: T_TypeAttributeDef  ->
-                         Inh_TypeAttributeDef  ->
-                         Syn_TypeAttributeDef 
-wrap_TypeAttributeDef sem (Inh_TypeAttributeDef _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOattrName,_lhsOfixedUpIdentifiersTree,_lhsOnamedType,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_TypeAttributeDef _lhsOannotatedTree _lhsOattrName _lhsOfixedUpIdentifiersTree _lhsOnamedType _lhsOoriginalTree ))
-sem_TypeAttributeDef_TypeAttDef :: Annotation ->
-                                   String ->
-                                   T_TypeName  ->
-                                   T_TypeAttributeDef 
-sem_TypeAttributeDef_TypeAttDef ann_ name_ typ_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOattrName :: String
-              _lhsOnamedType :: (Maybe Type)
-              _lhsOannotatedTree :: TypeAttributeDef 
-              _lhsOfixedUpIdentifiersTree :: TypeAttributeDef 
-              _lhsOoriginalTree :: TypeAttributeDef 
-              _typOcat :: Catalog
-              _typOidenv :: IDEnv
-              _typOlib :: LocalBindings
-              _typIannotatedTree :: TypeName 
-              _typIfixedUpIdentifiersTree :: TypeName 
-              _typInamedType :: (Maybe Type)
-              _typIoriginalTree :: TypeName 
-              -- "./TypeChecking/Ddl/MiscCreates.ag"(line 37, column 9)
-              _lhsOattrName =
-                  name_
-              -- "./TypeChecking/Ddl/MiscCreates.ag"(line 38, column 9)
-              _lhsOnamedType =
-                  _typInamedType
-              -- self rule
-              _annotatedTree =
-                  TypeAttDef ann_ name_ _typIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  TypeAttDef ann_ name_ _typIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  TypeAttDef ann_ name_ _typIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _typOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _typOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _typOlib =
-                  _lhsIlib
-              ( _typIannotatedTree,_typIfixedUpIdentifiersTree,_typInamedType,_typIoriginalTree) =
-                  typ_ _typOcat _typOidenv _typOlib 
-          in  ( _lhsOannotatedTree,_lhsOattrName,_lhsOfixedUpIdentifiersTree,_lhsOnamedType,_lhsOoriginalTree)))
--- TypeAttributeDefList ----------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         attrs                : [(String, Maybe Type)]
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-   alternatives:
-      alternative Cons:
-         child hd             : TypeAttributeDef 
-         child tl             : TypeAttributeDefList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Nil:
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-type TypeAttributeDefList  = [TypeAttributeDef ]
--- cata
-sem_TypeAttributeDefList :: TypeAttributeDefList  ->
-                            T_TypeAttributeDefList 
-sem_TypeAttributeDefList list  =
-    (Prelude.foldr sem_TypeAttributeDefList_Cons sem_TypeAttributeDefList_Nil (Prelude.map sem_TypeAttributeDef list) )
--- semantic domain
-type T_TypeAttributeDefList  = Catalog ->
-                               IDEnv ->
-                               LocalBindings ->
-                               ( TypeAttributeDefList ,([(String, Maybe Type)]),TypeAttributeDefList ,TypeAttributeDefList )
-data Inh_TypeAttributeDefList  = Inh_TypeAttributeDefList {cat_Inh_TypeAttributeDefList :: Catalog,idenv_Inh_TypeAttributeDefList :: IDEnv,lib_Inh_TypeAttributeDefList :: LocalBindings}
-data Syn_TypeAttributeDefList  = Syn_TypeAttributeDefList {annotatedTree_Syn_TypeAttributeDefList :: TypeAttributeDefList ,attrs_Syn_TypeAttributeDefList :: ([(String, Maybe Type)]),fixedUpIdentifiersTree_Syn_TypeAttributeDefList :: TypeAttributeDefList ,originalTree_Syn_TypeAttributeDefList :: TypeAttributeDefList }
-wrap_TypeAttributeDefList :: T_TypeAttributeDefList  ->
-                             Inh_TypeAttributeDefList  ->
-                             Syn_TypeAttributeDefList 
-wrap_TypeAttributeDefList sem (Inh_TypeAttributeDefList _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOattrs,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_TypeAttributeDefList _lhsOannotatedTree _lhsOattrs _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
-sem_TypeAttributeDefList_Cons :: T_TypeAttributeDef  ->
-                                 T_TypeAttributeDefList  ->
-                                 T_TypeAttributeDefList 
-sem_TypeAttributeDefList_Cons hd_ tl_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOattrs :: ([(String, Maybe Type)])
-              _lhsOannotatedTree :: TypeAttributeDefList 
-              _lhsOfixedUpIdentifiersTree :: TypeAttributeDefList 
-              _lhsOoriginalTree :: TypeAttributeDefList 
-              _hdOcat :: Catalog
-              _hdOidenv :: IDEnv
-              _hdOlib :: LocalBindings
-              _tlOcat :: Catalog
-              _tlOidenv :: IDEnv
-              _tlOlib :: LocalBindings
-              _hdIannotatedTree :: TypeAttributeDef 
-              _hdIattrName :: String
-              _hdIfixedUpIdentifiersTree :: TypeAttributeDef 
-              _hdInamedType :: (Maybe Type)
-              _hdIoriginalTree :: TypeAttributeDef 
-              _tlIannotatedTree :: TypeAttributeDefList 
-              _tlIattrs :: ([(String, Maybe Type)])
-              _tlIfixedUpIdentifiersTree :: TypeAttributeDefList 
-              _tlIoriginalTree :: TypeAttributeDefList 
-              -- "./TypeChecking/Ddl/MiscCreates.ag"(line 43, column 12)
-              _lhsOattrs =
-                  (_hdIattrName, _hdInamedType) : _tlIattrs
-              -- self rule
-              _annotatedTree =
-                  (:) _hdIannotatedTree _tlIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  (:) _hdIoriginalTree _tlIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _hdOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _hdOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _hdOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _tlOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _tlOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _tlOlib =
-                  _lhsIlib
-              ( _hdIannotatedTree,_hdIattrName,_hdIfixedUpIdentifiersTree,_hdInamedType,_hdIoriginalTree) =
-                  hd_ _hdOcat _hdOidenv _hdOlib 
-              ( _tlIannotatedTree,_tlIattrs,_tlIfixedUpIdentifiersTree,_tlIoriginalTree) =
-                  tl_ _tlOcat _tlOidenv _tlOlib 
-          in  ( _lhsOannotatedTree,_lhsOattrs,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
-sem_TypeAttributeDefList_Nil :: T_TypeAttributeDefList 
-sem_TypeAttributeDefList_Nil  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOattrs :: ([(String, Maybe Type)])
-              _lhsOannotatedTree :: TypeAttributeDefList 
-              _lhsOfixedUpIdentifiersTree :: TypeAttributeDefList 
-              _lhsOoriginalTree :: TypeAttributeDefList 
-              -- "./TypeChecking/Ddl/MiscCreates.ag"(line 44, column 11)
-              _lhsOattrs =
-                  []
-              -- self rule
-              _annotatedTree =
-                  []
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  []
-              -- self rule
-              _originalTree =
-                  []
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOattrs,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
--- TypeName ----------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         namedType            : Maybe Type
-         originalTree         : SELF 
-   alternatives:
-      alternative ArrayTypeName:
-         child ann            : {Annotation}
-         child typ            : TypeName 
-         visit 0:
-            local tpe         : _
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Prec2TypeName:
-         child ann            : {Annotation}
-         child tn             : {String}
-         child prec           : {Integer}
-         child prec1          : {Integer}
-         visit 0:
-            local tpe         : _
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative PrecTypeName:
-         child ann            : {Annotation}
-         child tn             : {String}
-         child prec           : {Integer}
-         visit 0:
-            local tpe         : _
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative SetOfTypeName:
-         child ann            : {Annotation}
-         child typ            : TypeName 
-         visit 0:
-            local tpe         : _
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative SimpleTypeName:
-         child ann            : {Annotation}
-         child tn             : {String}
-         visit 0:
-            local tpe         : _
-            local backTree    : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-data TypeName  = ArrayTypeName (Annotation) (TypeName ) 
-               | Prec2TypeName (Annotation) (String) (Integer) (Integer) 
-               | PrecTypeName (Annotation) (String) (Integer) 
-               | SetOfTypeName (Annotation) (TypeName ) 
-               | SimpleTypeName (Annotation) (String) 
-               deriving ( Data,Eq,Show,Typeable)
--- cata
-sem_TypeName :: TypeName  ->
-                T_TypeName 
-sem_TypeName (ArrayTypeName _ann _typ )  =
-    (sem_TypeName_ArrayTypeName _ann (sem_TypeName _typ ) )
-sem_TypeName (Prec2TypeName _ann _tn _prec _prec1 )  =
-    (sem_TypeName_Prec2TypeName _ann _tn _prec _prec1 )
-sem_TypeName (PrecTypeName _ann _tn _prec )  =
-    (sem_TypeName_PrecTypeName _ann _tn _prec )
-sem_TypeName (SetOfTypeName _ann _typ )  =
-    (sem_TypeName_SetOfTypeName _ann (sem_TypeName _typ ) )
-sem_TypeName (SimpleTypeName _ann _tn )  =
-    (sem_TypeName_SimpleTypeName _ann _tn )
--- semantic domain
-type T_TypeName  = Catalog ->
-                   IDEnv ->
-                   LocalBindings ->
-                   ( TypeName ,TypeName ,(Maybe Type),TypeName )
-data Inh_TypeName  = Inh_TypeName {cat_Inh_TypeName :: Catalog,idenv_Inh_TypeName :: IDEnv,lib_Inh_TypeName :: LocalBindings}
-data Syn_TypeName  = Syn_TypeName {annotatedTree_Syn_TypeName :: TypeName ,fixedUpIdentifiersTree_Syn_TypeName :: TypeName ,namedType_Syn_TypeName :: (Maybe Type),originalTree_Syn_TypeName :: TypeName }
-wrap_TypeName :: T_TypeName  ->
-                 Inh_TypeName  ->
-                 Syn_TypeName 
-wrap_TypeName sem (Inh_TypeName _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOnamedType,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_TypeName _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOnamedType _lhsOoriginalTree ))
-sem_TypeName_ArrayTypeName :: Annotation ->
-                              T_TypeName  ->
-                              T_TypeName 
-sem_TypeName_ArrayTypeName ann_ typ_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOnamedType :: (Maybe Type)
-              _lhsOannotatedTree :: TypeName 
-              _lhsOfixedUpIdentifiersTree :: TypeName 
-              _lhsOoriginalTree :: TypeName 
-              _typOcat :: Catalog
-              _typOidenv :: IDEnv
-              _typOlib :: LocalBindings
-              _typIannotatedTree :: TypeName 
-              _typIfixedUpIdentifiersTree :: TypeName 
-              _typInamedType :: (Maybe Type)
-              _typIoriginalTree :: TypeName 
-              -- "./TypeChecking/Misc.ag"(line 19, column 10)
-              _lhsOnamedType =
-                  etmt _tpe
-              -- "./TypeChecking/Misc.ag"(line 20, column 10)
-              _lhsOannotatedTree =
-                  addTypeErrors (tes _tpe    ) _backTree
-              -- "./TypeChecking/Misc.ag"(line 27, column 9)
-              _tpe =
-                  lmt _typInamedType >>=  Right . ArrayType
-              -- "./TypeChecking/Misc.ag"(line 28, column 9)
-              _backTree =
-                  ArrayTypeName ann_ _typIannotatedTree
-              -- self rule
-              _annotatedTree =
-                  ArrayTypeName ann_ _typIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  ArrayTypeName ann_ _typIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  ArrayTypeName ann_ _typIoriginalTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _typOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _typOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _typOlib =
-                  _lhsIlib
-              ( _typIannotatedTree,_typIfixedUpIdentifiersTree,_typInamedType,_typIoriginalTree) =
-                  typ_ _typOcat _typOidenv _typOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOnamedType,_lhsOoriginalTree)))
-sem_TypeName_Prec2TypeName :: Annotation ->
-                              String ->
-                              Integer ->
-                              Integer ->
-                              T_TypeName 
-sem_TypeName_Prec2TypeName ann_ tn_ prec_ prec1_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOnamedType :: (Maybe Type)
-              _lhsOannotatedTree :: TypeName 
-              _lhsOfixedUpIdentifiersTree :: TypeName 
-              _lhsOoriginalTree :: TypeName 
-              -- "./TypeChecking/Misc.ag"(line 19, column 10)
-              _lhsOnamedType =
-                  etmt _tpe
-              -- "./TypeChecking/Misc.ag"(line 20, column 10)
-              _lhsOannotatedTree =
-                  addTypeErrors (tes _tpe    ) _backTree
-              -- "./TypeChecking/Misc.ag"(line 36, column 9)
-              _tpe =
-                  catLookupType _lhsIcat $ canonicalizeTypeName tn_
-              -- "./TypeChecking/Misc.ag"(line 37, column 9)
-              _backTree =
-                  Prec2TypeName ann_ tn_ prec_ prec1_
-              -- self rule
-              _annotatedTree =
-                  Prec2TypeName ann_ tn_ prec_ prec1_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  Prec2TypeName ann_ tn_ prec_ prec1_
-              -- self rule
-              _originalTree =
-                  Prec2TypeName ann_ tn_ prec_ prec1_
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOnamedType,_lhsOoriginalTree)))
-sem_TypeName_PrecTypeName :: Annotation ->
-                             String ->
-                             Integer ->
-                             T_TypeName 
-sem_TypeName_PrecTypeName ann_ tn_ prec_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOnamedType :: (Maybe Type)
-              _lhsOannotatedTree :: TypeName 
-              _lhsOfixedUpIdentifiersTree :: TypeName 
-              _lhsOoriginalTree :: TypeName 
-              -- "./TypeChecking/Misc.ag"(line 19, column 10)
-              _lhsOnamedType =
-                  etmt _tpe
-              -- "./TypeChecking/Misc.ag"(line 20, column 10)
-              _lhsOannotatedTree =
-                  addTypeErrors (tes _tpe    ) _backTree
-              -- "./TypeChecking/Misc.ag"(line 33, column 9)
-              _tpe =
-                  catLookupType _lhsIcat $ canonicalizeTypeName tn_
-              -- "./TypeChecking/Misc.ag"(line 34, column 9)
-              _backTree =
-                  PrecTypeName ann_ tn_ prec_
-              -- self rule
-              _annotatedTree =
-                  PrecTypeName ann_ tn_ prec_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  PrecTypeName ann_ tn_ prec_
-              -- self rule
-              _originalTree =
-                  PrecTypeName ann_ tn_ prec_
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOnamedType,_lhsOoriginalTree)))
-sem_TypeName_SetOfTypeName :: Annotation ->
-                              T_TypeName  ->
-                              T_TypeName 
-sem_TypeName_SetOfTypeName ann_ typ_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOnamedType :: (Maybe Type)
-              _lhsOannotatedTree :: TypeName 
-              _lhsOfixedUpIdentifiersTree :: TypeName 
-              _lhsOoriginalTree :: TypeName 
-              _typOcat :: Catalog
-              _typOidenv :: IDEnv
-              _typOlib :: LocalBindings
-              _typIannotatedTree :: TypeName 
-              _typIfixedUpIdentifiersTree :: TypeName 
-              _typInamedType :: (Maybe Type)
-              _typIoriginalTree :: TypeName 
-              -- "./TypeChecking/Misc.ag"(line 19, column 10)
-              _lhsOnamedType =
-                  etmt _tpe
-              -- "./TypeChecking/Misc.ag"(line 20, column 10)
-              _lhsOannotatedTree =
-                  addTypeErrors (tes _tpe    ) _backTree
-              -- "./TypeChecking/Misc.ag"(line 30, column 9)
-              _tpe =
-                  lmt _typInamedType >>=  Right . SetOfType
-              -- "./TypeChecking/Misc.ag"(line 31, column 9)
-              _backTree =
-                  SetOfTypeName ann_ _typIannotatedTree
-              -- self rule
-              _annotatedTree =
-                  SetOfTypeName ann_ _typIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  SetOfTypeName ann_ _typIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  SetOfTypeName ann_ _typIoriginalTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _typOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _typOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _typOlib =
-                  _lhsIlib
-              ( _typIannotatedTree,_typIfixedUpIdentifiersTree,_typInamedType,_typIoriginalTree) =
-                  typ_ _typOcat _typOidenv _typOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOnamedType,_lhsOoriginalTree)))
-sem_TypeName_SimpleTypeName :: Annotation ->
-                               String ->
-                               T_TypeName 
-sem_TypeName_SimpleTypeName ann_ tn_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOnamedType :: (Maybe Type)
-              _lhsOannotatedTree :: TypeName 
-              _lhsOfixedUpIdentifiersTree :: TypeName 
-              _lhsOoriginalTree :: TypeName 
-              -- "./TypeChecking/Misc.ag"(line 19, column 10)
-              _lhsOnamedType =
-                  etmt _tpe
-              -- "./TypeChecking/Misc.ag"(line 20, column 10)
-              _lhsOannotatedTree =
-                  addTypeErrors (tes _tpe    ) _backTree
-              -- "./TypeChecking/Misc.ag"(line 24, column 9)
-              _tpe =
-                  catLookupType _lhsIcat $ canonicalizeTypeName tn_
-              -- "./TypeChecking/Misc.ag"(line 25, column 9)
-              _backTree =
-                  SimpleTypeName ann_ tn_
-              -- self rule
-              _annotatedTree =
-                  SimpleTypeName ann_ tn_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  SimpleTypeName ann_ tn_
-              -- self rule
-              _originalTree =
-                  SimpleTypeName ann_ tn_
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOnamedType,_lhsOoriginalTree)))
--- TypeNameList ------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         namedTypes           : [Maybe Type]
-         originalTree         : SELF 
-   alternatives:
-      alternative Cons:
-         child hd             : TypeName 
-         child tl             : TypeNameList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Nil:
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-type TypeNameList  = [TypeName ]
--- cata
-sem_TypeNameList :: TypeNameList  ->
-                    T_TypeNameList 
-sem_TypeNameList list  =
-    (Prelude.foldr sem_TypeNameList_Cons sem_TypeNameList_Nil (Prelude.map sem_TypeName list) )
--- semantic domain
-type T_TypeNameList  = Catalog ->
-                       IDEnv ->
-                       LocalBindings ->
-                       ( TypeNameList ,TypeNameList ,([Maybe Type]),TypeNameList )
-data Inh_TypeNameList  = Inh_TypeNameList {cat_Inh_TypeNameList :: Catalog,idenv_Inh_TypeNameList :: IDEnv,lib_Inh_TypeNameList :: LocalBindings}
-data Syn_TypeNameList  = Syn_TypeNameList {annotatedTree_Syn_TypeNameList :: TypeNameList ,fixedUpIdentifiersTree_Syn_TypeNameList :: TypeNameList ,namedTypes_Syn_TypeNameList :: ([Maybe Type]),originalTree_Syn_TypeNameList :: TypeNameList }
-wrap_TypeNameList :: T_TypeNameList  ->
-                     Inh_TypeNameList  ->
-                     Syn_TypeNameList 
-wrap_TypeNameList sem (Inh_TypeNameList _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOnamedTypes,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_TypeNameList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOnamedTypes _lhsOoriginalTree ))
-sem_TypeNameList_Cons :: T_TypeName  ->
-                         T_TypeNameList  ->
-                         T_TypeNameList 
-sem_TypeNameList_Cons hd_ tl_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOnamedTypes :: ([Maybe Type])
-              _lhsOannotatedTree :: TypeNameList 
-              _lhsOfixedUpIdentifiersTree :: TypeNameList 
-              _lhsOoriginalTree :: TypeNameList 
-              _hdOcat :: Catalog
-              _hdOidenv :: IDEnv
-              _hdOlib :: LocalBindings
-              _tlOcat :: Catalog
-              _tlOidenv :: IDEnv
-              _tlOlib :: LocalBindings
-              _hdIannotatedTree :: TypeName 
-              _hdIfixedUpIdentifiersTree :: TypeName 
-              _hdInamedType :: (Maybe Type)
-              _hdIoriginalTree :: TypeName 
-              _tlIannotatedTree :: TypeNameList 
-              _tlIfixedUpIdentifiersTree :: TypeNameList 
-              _tlInamedTypes :: ([Maybe Type])
-              _tlIoriginalTree :: TypeNameList 
-              -- "./TypeChecking/Ddl/Drops.ag"(line 37, column 12)
-              _lhsOnamedTypes =
-                  _hdInamedType : _tlInamedTypes
-              -- self rule
-              _annotatedTree =
-                  (:) _hdIannotatedTree _tlIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  (:) _hdIoriginalTree _tlIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _hdOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _hdOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _hdOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _tlOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _tlOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _tlOlib =
-                  _lhsIlib
-              ( _hdIannotatedTree,_hdIfixedUpIdentifiersTree,_hdInamedType,_hdIoriginalTree) =
-                  hd_ _hdOcat _hdOidenv _hdOlib 
-              ( _tlIannotatedTree,_tlIfixedUpIdentifiersTree,_tlInamedTypes,_tlIoriginalTree) =
-                  tl_ _tlOcat _tlOidenv _tlOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOnamedTypes,_lhsOoriginalTree)))
-sem_TypeNameList_Nil :: T_TypeNameList 
-sem_TypeNameList_Nil  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOnamedTypes :: ([Maybe Type])
-              _lhsOannotatedTree :: TypeNameList 
-              _lhsOfixedUpIdentifiersTree :: TypeNameList 
-              _lhsOoriginalTree :: TypeNameList 
-              -- "./TypeChecking/Ddl/Drops.ag"(line 38, column 11)
-              _lhsOnamedTypes =
-                  []
-              -- self rule
-              _annotatedTree =
-                  []
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  []
-              -- self rule
-              _originalTree =
-                  []
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOnamedTypes,_lhsOoriginalTree)))
--- VarDef ------------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         def                  : (String,Maybe Type)
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-   alternatives:
-      alternative ParamAlias:
-         child ann            : {Annotation}
-         child name           : {String}
-         child i              : {Integer}
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative VarAlias:
-         child ann            : {Annotation}
-         child name           : {String}
-         child aliased        : {String}
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative VarDef:
-         child ann            : {Annotation}
-         child name           : {String}
-         child typ            : TypeName 
-         child value          : {Maybe ScalarExpr}
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-data VarDef  = ParamAlias (Annotation) (String) (Integer) 
-             | VarAlias (Annotation) (String) (String) 
-             | VarDef (Annotation) (String) (TypeName ) ((Maybe ScalarExpr)) 
-             deriving ( Data,Eq,Show,Typeable)
--- cata
-sem_VarDef :: VarDef  ->
-              T_VarDef 
-sem_VarDef (ParamAlias _ann _name _i )  =
-    (sem_VarDef_ParamAlias _ann _name _i )
-sem_VarDef (VarAlias _ann _name _aliased )  =
-    (sem_VarDef_VarAlias _ann _name _aliased )
-sem_VarDef (VarDef _ann _name _typ _value )  =
-    (sem_VarDef_VarDef _ann _name (sem_TypeName _typ ) _value )
--- semantic domain
-type T_VarDef  = Catalog ->
-                 IDEnv ->
-                 LocalBindings ->
-                 ( VarDef ,((String,Maybe Type)),VarDef ,VarDef )
-data Inh_VarDef  = Inh_VarDef {cat_Inh_VarDef :: Catalog,idenv_Inh_VarDef :: IDEnv,lib_Inh_VarDef :: LocalBindings}
-data Syn_VarDef  = Syn_VarDef {annotatedTree_Syn_VarDef :: VarDef ,def_Syn_VarDef :: ((String,Maybe Type)),fixedUpIdentifiersTree_Syn_VarDef :: VarDef ,originalTree_Syn_VarDef :: VarDef }
-wrap_VarDef :: T_VarDef  ->
-               Inh_VarDef  ->
-               Syn_VarDef 
-wrap_VarDef sem (Inh_VarDef _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOdef,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_VarDef _lhsOannotatedTree _lhsOdef _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
-sem_VarDef_ParamAlias :: Annotation ->
-                         String ->
-                         Integer ->
-                         T_VarDef 
-sem_VarDef_ParamAlias ann_ name_ i_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOdef :: ((String,Maybe Type))
-              _lhsOannotatedTree :: VarDef 
-              _lhsOfixedUpIdentifiersTree :: VarDef 
-              _lhsOoriginalTree :: VarDef 
-              -- "./TypeChecking/Plpgsql/Block.ag"(line 14, column 18)
-              _lhsOdef =
-                  (name_, Nothing)
-              -- self rule
-              _annotatedTree =
-                  ParamAlias ann_ name_ i_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  ParamAlias ann_ name_ i_
-              -- self rule
-              _originalTree =
-                  ParamAlias ann_ name_ i_
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOdef,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
-sem_VarDef_VarAlias :: Annotation ->
-                       String ->
-                       String ->
-                       T_VarDef 
-sem_VarDef_VarAlias ann_ name_ aliased_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOdef :: ((String,Maybe Type))
-              _lhsOannotatedTree :: VarDef 
-              _lhsOfixedUpIdentifiersTree :: VarDef 
-              _lhsOoriginalTree :: VarDef 
-              -- "./TypeChecking/Plpgsql/Block.ag"(line 13, column 16)
-              _lhsOdef =
-                  (name_, Nothing)
-              -- self rule
-              _annotatedTree =
-                  VarAlias ann_ name_ aliased_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  VarAlias ann_ name_ aliased_
-              -- self rule
-              _originalTree =
-                  VarAlias ann_ name_ aliased_
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOdef,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
-sem_VarDef_VarDef :: Annotation ->
-                     String ->
-                     T_TypeName  ->
-                     (Maybe ScalarExpr) ->
-                     T_VarDef 
-sem_VarDef_VarDef ann_ name_ typ_ value_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOdef :: ((String,Maybe Type))
-              _lhsOannotatedTree :: VarDef 
-              _lhsOfixedUpIdentifiersTree :: VarDef 
-              _lhsOoriginalTree :: VarDef 
-              _typOcat :: Catalog
-              _typOidenv :: IDEnv
-              _typOlib :: LocalBindings
-              _typIannotatedTree :: TypeName 
-              _typIfixedUpIdentifiersTree :: TypeName 
-              _typInamedType :: (Maybe Type)
-              _typIoriginalTree :: TypeName 
-              -- "./TypeChecking/Plpgsql/Block.ag"(line 10, column 14)
-              _lhsOdef =
-                  (name_, if _typInamedType == Just (Pseudo Record)
-                          then Just (PgRecord Nothing)
-                          else _typInamedType)
-              -- self rule
-              _annotatedTree =
-                  VarDef ann_ name_ _typIannotatedTree value_
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  VarDef ann_ name_ _typIfixedUpIdentifiersTree value_
-              -- self rule
-              _originalTree =
-                  VarDef ann_ name_ _typIoriginalTree value_
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _typOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _typOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _typOlib =
-                  _lhsIlib
-              ( _typIannotatedTree,_typIfixedUpIdentifiersTree,_typInamedType,_typIoriginalTree) =
-                  typ_ _typOcat _typOidenv _typOlib 
-          in  ( _lhsOannotatedTree,_lhsOdef,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
--- VarDefList --------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         defs                 : [(String,Maybe Type)]
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-   alternatives:
-      alternative Cons:
-         child hd             : VarDef 
-         child tl             : VarDefList 
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Nil:
-         visit 0:
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-type VarDefList  = [VarDef ]
--- cata
-sem_VarDefList :: VarDefList  ->
-                  T_VarDefList 
-sem_VarDefList list  =
-    (Prelude.foldr sem_VarDefList_Cons sem_VarDefList_Nil (Prelude.map sem_VarDef list) )
--- semantic domain
-type T_VarDefList  = Catalog ->
-                     IDEnv ->
-                     LocalBindings ->
-                     ( VarDefList ,([(String,Maybe Type)]),VarDefList ,VarDefList )
-data Inh_VarDefList  = Inh_VarDefList {cat_Inh_VarDefList :: Catalog,idenv_Inh_VarDefList :: IDEnv,lib_Inh_VarDefList :: LocalBindings}
-data Syn_VarDefList  = Syn_VarDefList {annotatedTree_Syn_VarDefList :: VarDefList ,defs_Syn_VarDefList :: ([(String,Maybe Type)]),fixedUpIdentifiersTree_Syn_VarDefList :: VarDefList ,originalTree_Syn_VarDefList :: VarDefList }
-wrap_VarDefList :: T_VarDefList  ->
-                   Inh_VarDefList  ->
-                   Syn_VarDefList 
-wrap_VarDefList sem (Inh_VarDefList _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOdefs,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_VarDefList _lhsOannotatedTree _lhsOdefs _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
-sem_VarDefList_Cons :: T_VarDef  ->
-                       T_VarDefList  ->
-                       T_VarDefList 
-sem_VarDefList_Cons hd_ tl_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOdefs :: ([(String,Maybe Type)])
-              _lhsOannotatedTree :: VarDefList 
-              _lhsOfixedUpIdentifiersTree :: VarDefList 
-              _lhsOoriginalTree :: VarDefList 
-              _hdOcat :: Catalog
-              _hdOidenv :: IDEnv
-              _hdOlib :: LocalBindings
-              _tlOcat :: Catalog
-              _tlOidenv :: IDEnv
-              _tlOlib :: LocalBindings
-              _hdIannotatedTree :: VarDef 
-              _hdIdef :: ((String,Maybe Type))
-              _hdIfixedUpIdentifiersTree :: VarDef 
-              _hdIoriginalTree :: VarDef 
-              _tlIannotatedTree :: VarDefList 
-              _tlIdefs :: ([(String,Maybe Type)])
-              _tlIfixedUpIdentifiersTree :: VarDefList 
-              _tlIoriginalTree :: VarDefList 
-              -- "./TypeChecking/Plpgsql/Block.ag"(line 17, column 12)
-              _lhsOdefs =
-                  _hdIdef : _tlIdefs
-              -- self rule
-              _annotatedTree =
-                  (:) _hdIannotatedTree _tlIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  (:) _hdIoriginalTree _tlIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _hdOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _hdOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _hdOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _tlOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _tlOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _tlOlib =
-                  _lhsIlib
-              ( _hdIannotatedTree,_hdIdef,_hdIfixedUpIdentifiersTree,_hdIoriginalTree) =
-                  hd_ _hdOcat _hdOidenv _hdOlib 
-              ( _tlIannotatedTree,_tlIdefs,_tlIfixedUpIdentifiersTree,_tlIoriginalTree) =
-                  tl_ _tlOcat _tlOidenv _tlOlib 
-          in  ( _lhsOannotatedTree,_lhsOdefs,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
-sem_VarDefList_Nil :: T_VarDefList 
-sem_VarDefList_Nil  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOdefs :: ([(String,Maybe Type)])
-              _lhsOannotatedTree :: VarDefList 
-              _lhsOfixedUpIdentifiersTree :: VarDefList 
-              _lhsOoriginalTree :: VarDefList 
-              -- "./TypeChecking/Plpgsql/Block.ag"(line 18, column 11)
-              _lhsOdefs =
-                  []
-              -- self rule
-              _annotatedTree =
-                  []
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  []
-              -- self rule
-              _originalTree =
-                  []
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOdefs,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
--- WithQuery ---------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         catUpdates           : [CatalogUpdate]
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-   alternatives:
-      alternative WithQuery:
-         child ann            : {Annotation}
-         child name           : {String}
-         child colAliases     : {Maybe [String]}
-         child ex             : QueryExpr 
-         visit 0:
-            local tpe         : _
-            local backTree    : _
-            local attrs       : _
-            local catUpdates  : _
-            local statementType : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-data WithQuery  = WithQuery (Annotation) (String) ((Maybe [String])) (QueryExpr ) 
-                deriving ( Data,Eq,Show,Typeable)
--- cata
-sem_WithQuery :: WithQuery  ->
-                 T_WithQuery 
-sem_WithQuery (WithQuery _ann _name _colAliases _ex )  =
-    (sem_WithQuery_WithQuery _ann _name _colAliases (sem_QueryExpr _ex ) )
--- semantic domain
-type T_WithQuery  = Catalog ->
-                    IDEnv ->
-                    LocalBindings ->
-                    ( WithQuery ,([CatalogUpdate]),WithQuery ,WithQuery )
-data Inh_WithQuery  = Inh_WithQuery {cat_Inh_WithQuery :: Catalog,idenv_Inh_WithQuery :: IDEnv,lib_Inh_WithQuery :: LocalBindings}
-data Syn_WithQuery  = Syn_WithQuery {annotatedTree_Syn_WithQuery :: WithQuery ,catUpdates_Syn_WithQuery :: ([CatalogUpdate]),fixedUpIdentifiersTree_Syn_WithQuery :: WithQuery ,originalTree_Syn_WithQuery :: WithQuery }
-wrap_WithQuery :: T_WithQuery  ->
-                  Inh_WithQuery  ->
-                  Syn_WithQuery 
-wrap_WithQuery sem (Inh_WithQuery _lhsIcat _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
-     in  (Syn_WithQuery _lhsOannotatedTree _lhsOcatUpdates _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
-sem_WithQuery_WithQuery :: Annotation ->
-                           String ->
-                           (Maybe [String]) ->
-                           T_QueryExpr  ->
-                           T_WithQuery 
-sem_WithQuery_WithQuery ann_ name_ colAliases_ ex_  =
-    (\ _lhsIcat
-       _lhsIidenv
-       _lhsIlib ->
-         (let _exOcsql :: LocalBindings
-              _exOexpectedTypes :: ([Maybe Type])
-              _lhsOannotatedTree :: WithQuery 
-              _lhsOfixedUpIdentifiersTree :: WithQuery 
-              _lhsOoriginalTree :: WithQuery 
-              _lhsOcatUpdates :: ([CatalogUpdate])
-              _exOcat :: Catalog
-              _exOidenv :: IDEnv
-              _exOlib :: LocalBindings
-              _exIannotatedTree :: QueryExpr 
-              _exIcidenv :: IDEnv
-              _exIfixedUpIdentifiersTree :: QueryExpr 
-              _exIlibUpdates :: ([LocalBindingsUpdate])
-              _exIoriginalTree :: QueryExpr 
-              _exIuType :: (Maybe [(String,Type)])
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 131, column 17)
-              _exOcsql =
-                  emptyBindings
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 272, column 9)
-              _tpe =
-                  Right $ Pseudo Void
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 273, column 9)
-              _backTree =
-                  WithQuery ann_ name_ colAliases_ _exIannotatedTree
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 274, column 9)
-              _attrs =
-                  maybe [] id $ _exIuType
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 275, column 9)
-              _catUpdates =
-                  [CatCreateView name_ _attrs    ]
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 276, column 9)
-              _statementType =
-                  Nothing
-              -- "./TypeChecking/ParameterizedStatements.ag"(line 182, column 17)
-              _exOexpectedTypes =
-                  []
-              -- self rule
-              _annotatedTree =
-                  WithQuery ann_ name_ colAliases_ _exIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  WithQuery ann_ name_ colAliases_ _exIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  WithQuery ann_ name_ colAliases_ _exIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (from local)
-              _lhsOcatUpdates =
-                  _catUpdates
-              -- copy rule (down)
-              _exOcat =
-                  _lhsIcat
-              -- copy rule (down)
-              _exOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _exOlib =
-                  _lhsIlib
-              ( _exIannotatedTree,_exIcidenv,_exIfixedUpIdentifiersTree,_exIlibUpdates,_exIoriginalTree,_exIuType) =
-                  ex_ _exOcat _exOcsql _exOexpectedTypes _exOidenv _exOlib 
-          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
--- WithQueryList -----------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         cat                  : Catalog
-         catUpdates           : [CatalogUpdate]
-         idenv                : IDEnv
-         lib                  : LocalBindings
-      synthesized attributes:
-         annotatedTree        : SELF 
-         fixedUpIdentifiersTree : SELF 
-         originalTree         : SELF 
-         producedCat          : Catalog
-   alternatives:
-      alternative Cons:
-         child hd             : WithQuery 
-         child tl             : WithQueryList 
-         visit 0:
-            local newCat      : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
-      alternative Nil:
-         visit 0:
-            local newCat      : _
-            local annotatedTree : _
-            local fixedUpIdentifiersTree : _
-            local originalTree : _
--}
-type WithQueryList  = [WithQuery ]
--- cata
-sem_WithQueryList :: WithQueryList  ->
-                     T_WithQueryList 
-sem_WithQueryList list  =
-    (Prelude.foldr sem_WithQueryList_Cons sem_WithQueryList_Nil (Prelude.map sem_WithQuery list) )
--- semantic domain
-type T_WithQueryList  = Catalog ->
-                        ([CatalogUpdate]) ->
-                        IDEnv ->
-                        LocalBindings ->
-                        ( WithQueryList ,WithQueryList ,WithQueryList ,Catalog)
-data Inh_WithQueryList  = Inh_WithQueryList {cat_Inh_WithQueryList :: Catalog,catUpdates_Inh_WithQueryList :: ([CatalogUpdate]),idenv_Inh_WithQueryList :: IDEnv,lib_Inh_WithQueryList :: LocalBindings}
-data Syn_WithQueryList  = Syn_WithQueryList {annotatedTree_Syn_WithQueryList :: WithQueryList ,fixedUpIdentifiersTree_Syn_WithQueryList :: WithQueryList ,originalTree_Syn_WithQueryList :: WithQueryList ,producedCat_Syn_WithQueryList :: Catalog}
-wrap_WithQueryList :: T_WithQueryList  ->
-                      Inh_WithQueryList  ->
-                      Syn_WithQueryList 
-wrap_WithQueryList sem (Inh_WithQueryList _lhsIcat _lhsIcatUpdates _lhsIidenv _lhsIlib )  =
-    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOproducedCat) = sem _lhsIcat _lhsIcatUpdates _lhsIidenv _lhsIlib 
-     in  (Syn_WithQueryList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree _lhsOproducedCat ))
-sem_WithQueryList_Cons :: T_WithQuery  ->
-                          T_WithQueryList  ->
-                          T_WithQueryList 
-sem_WithQueryList_Cons hd_ tl_  =
-    (\ _lhsIcat
-       _lhsIcatUpdates
-       _lhsIidenv
-       _lhsIlib ->
-         (let _hdOcat :: Catalog
-              _tlOcat :: Catalog
-              _lhsOproducedCat :: Catalog
-              _tlOcatUpdates :: ([CatalogUpdate])
-              _lhsOannotatedTree :: WithQueryList 
-              _lhsOfixedUpIdentifiersTree :: WithQueryList 
-              _lhsOoriginalTree :: WithQueryList 
-              _hdOidenv :: IDEnv
-              _hdOlib :: LocalBindings
-              _tlOidenv :: IDEnv
-              _tlOlib :: LocalBindings
-              _hdIannotatedTree :: WithQuery 
-              _hdIcatUpdates :: ([CatalogUpdate])
-              _hdIfixedUpIdentifiersTree :: WithQuery 
-              _hdIoriginalTree :: WithQuery 
-              _tlIannotatedTree :: WithQueryList 
-              _tlIfixedUpIdentifiersTree :: WithQueryList 
-              _tlIoriginalTree :: WithQueryList 
-              _tlIproducedCat :: Catalog
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 256, column 9)
-              _newCat =
-                  fromRight _lhsIcat $ updateCatalog _lhsIcat _lhsIcatUpdates
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 258, column 9)
-              _hdOcat =
-                  _newCat
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 259, column 9)
-              _tlOcat =
-                  _newCat
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 263, column 9)
-              _lhsOproducedCat =
-                  _tlIproducedCat
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 266, column 9)
-              _tlOcatUpdates =
-                  _hdIcatUpdates
-              -- self rule
-              _annotatedTree =
-                  (:) _hdIannotatedTree _tlIannotatedTree
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
-              -- self rule
-              _originalTree =
-                  (:) _hdIoriginalTree _tlIoriginalTree
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-              -- copy rule (down)
-              _hdOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _hdOlib =
-                  _lhsIlib
-              -- copy rule (down)
-              _tlOidenv =
-                  _lhsIidenv
-              -- copy rule (down)
-              _tlOlib =
-                  _lhsIlib
-              ( _hdIannotatedTree,_hdIcatUpdates,_hdIfixedUpIdentifiersTree,_hdIoriginalTree) =
-                  hd_ _hdOcat _hdOidenv _hdOlib 
-              ( _tlIannotatedTree,_tlIfixedUpIdentifiersTree,_tlIoriginalTree,_tlIproducedCat) =
-                  tl_ _tlOcat _tlOcatUpdates _tlOidenv _tlOlib 
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOproducedCat)))
-sem_WithQueryList_Nil :: T_WithQueryList 
-sem_WithQueryList_Nil  =
-    (\ _lhsIcat
-       _lhsIcatUpdates
-       _lhsIidenv
-       _lhsIlib ->
-         (let _lhsOproducedCat :: Catalog
-              _lhsOannotatedTree :: WithQueryList 
-              _lhsOfixedUpIdentifiersTree :: WithQueryList 
-              _lhsOoriginalTree :: WithQueryList 
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 256, column 9)
-              _newCat =
-                  fromRight _lhsIcat $ updateCatalog _lhsIcat _lhsIcatUpdates
-              -- "./TypeChecking/QueryExprs/QueryStatement.ag"(line 268, column 9)
-              _lhsOproducedCat =
-                  _newCat
-              -- self rule
-              _annotatedTree =
-                  []
-              -- self rule
-              _fixedUpIdentifiersTree =
-                  []
-              -- self rule
-              _originalTree =
-                  []
-              -- self rule
-              _lhsOannotatedTree =
-                  _annotatedTree
-              -- self rule
-              _lhsOfixedUpIdentifiersTree =
-                  _fixedUpIdentifiersTree
-              -- self rule
-              _lhsOoriginalTree =
-                  _originalTree
-          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOproducedCat)))
diff --git a/src/Database/HsSqlPpp/AstInternals/Catalog/CatalogInternal.lhs b/src/Database/HsSqlPpp/AstInternals/Catalog/CatalogInternal.lhs
deleted file mode 100644
--- a/src/Database/HsSqlPpp/AstInternals/Catalog/CatalogInternal.lhs
+++ /dev/null
@@ -1,531 +0,0 @@
-
-This module contains the implementation of the Catalog data types
-and functions, and provides the api for the other type checking
-modules.
-
-> {-# LANGUAGE DeriveDataTypeable #-}
->
-> module Database.HsSqlPpp.AstInternals.Catalog.CatalogInternal
->     (
->      Catalog
->     ,CastContext(..)
->     ,CompositeFlavour(..)
->     ,relationComposites
->     ,CompositeDef
->     ,FunctionPrototype
->     ,DomainDefinition
->     ,FunFlav(..)
->     ,emptyCatalog
->     ,defaultCatalog
->     ,CatalogUpdate(..)
->     ,ppCatUpdate
->     ,updateCatalog
->     ,deconstructCatalog
->     -- type checker stuff
->     ,catCompositeDef
->     ,catCompositeAttrsPair
->     ,catCompositeAttrs
->     ,catCompositePublicAttrs
->     ,catTypeCategory
->     ,catPreferredType
->     ,catCast
->     ,catDomainBaseType
->     ,catLookupFns
->     ,catTypeExists
->     ,catLookupType
->     ,OperatorType(..)
->     ,getOperatorType
->     ,isOperatorName
->     -- comparing catalogs
->     ,CatalogDiff(..)
->     ,compareCatalogs
->     ,ppCatDiff
->     ) where
->
-> import Control.Monad
-> import Data.List
-> import Data.Data
-> -- import Debug.Trace
-> import Data.Char
->
-> import Database.HsSqlPpp.AstInternals.TypeType
-> import Database.HsSqlPpp.Utils.Utils
->
-> -- | The main datatype, this holds the catalog and context
-> -- information to type check against.
-> data Catalog = Catalog
->                    {catTypeNames :: [(String, Type)]
->                    ,catDomainDefs :: [DomainDefinition]
->                    ,catCasts :: [(Type,Type,CastContext)]
->                    ,catTypeCategories :: [(Type,String,Bool)]
->                    ,catPrefixOperators :: [FunctionPrototype]
->                    ,catPostfixOperators :: [FunctionPrototype]
->                    ,catBinaryOperators :: [FunctionPrototype]
->                    ,catFunctions :: [FunctionPrototype]
->                    ,catAggregates :: [FunctionPrototype]
->                    ,catWindowFunctions :: [FunctionPrototype]
->                    ,catAttrDefs :: [CompositeDef]
->                    ,catUpdates :: [CatalogUpdate]}
->                    deriving Show
->
-> -- | Represents an empty catalog. This doesn't contain things
-> -- like the \'and\' operator, 'defaultCatalog' contains these.
-> emptyCatalog :: Catalog
-> emptyCatalog = Catalog [] [] [] [] [] [] [] [] [] [] [] []
->
-> -- | Represents what you probably want to use as a starting point if
-> -- you are building an catalog from scratch. It contains
-> -- information on built in function like things that aren't in the
-> -- PostgreSQL catalog, such as greatest, coalesce, keyword operators
-> -- like \'and\', etc..
-> defaultCatalog :: Catalog
-> defaultCatalog =
->   emptyCatalog {catTypeNames = pseudoTypes
->                ,catBinaryOperators = pe : keywordOperatorTypes
->                ,catFunctions = specialFunctionTypes}
->   where
->     pe = ("=", [Pseudo AnyElement, Pseudo AnyElement], typeBool, False)
->
-> -- | Use to note what the flavour of a cast is, i.e. if/when it can
-> -- be used implicitly.
-> data CastContext = ImplicitCastContext
->                  | AssignmentCastContext
->                  | ExplicitCastContext
->                    deriving (Eq,Show,Ord,Typeable,Data)
->
-> -- | Used to distinguish between standalone composite types, and
-> -- automatically generated ones, generated from a table or view
-> -- respectively.
-> data CompositeFlavour = Composite | TableComposite | ViewComposite
->                         deriving (Eq,Ord,Show)
->
-> relationComposites :: [CompositeFlavour]
-> relationComposites = [TableComposite,ViewComposite]
->
-> -- | Provides the definition of a composite type. The components are
-> -- composite (or table or view) name, the flavour of the composite,
-> -- the types of the composite attributes, and the types of the
-> -- system columns iff the composite represents a table type (the
-> -- third and fourth components are always 'CompositeType's).
-> type CompositeDef = (String, CompositeFlavour, Type, Type)
->
-> -- | The components are: function (or operator) name, argument
-> -- types, return type and is variadic.
-> type FunctionPrototype = (String, [Type], Type, Bool)
->
-> -- | The components are domain type, base type (todo: add check
-> -- constraint).
-> type DomainDefinition = (Type,Type)
->
-> data CatalogUpdate =
->     -- | add a new scalar type with the name given, also creates
->     -- an array type automatically
->     CatCreateScalar Type String Bool
->     -- | add a new domain to the catalog
->   | CatCreateDomain Type Type
->     -- | add a new composite type to the catalog
->   | CatCreateComposite String [(String,Type)]
->     -- | add a new cast to the catalog
->   | CatCreateCast Type Type CastContext
->     -- | add a new table to the catalog with the given public and private columns
->     -- also creates the composite type to go with this table
->   | CatCreateTable String [(String,Type)] [(String,Type)]
->     -- | add the view to the catalog, using the column names and types supplied
->   | CatCreateView String [(String,Type)]
->     -- | add a new function to the catalog
->   | CatCreateFunction FunFlav String [Type] Type Bool
->     -- | drop a function from the catalog
->   | CatDropFunction Bool String [Type]
->     deriving (Eq,Ord,Typeable,Data,Show)
->
-> -- | attempt to show a readable representation of a 'CatalogUpdate' value
-> ppCatUpdate :: CatalogUpdate -> String
-> ppCatUpdate (CatCreateScalar t c p) =
->   "CatCreateScalar " ++ show t ++ "(" ++ c ++ "," ++ show p ++ ")"
-> ppCatUpdate (CatCreateDomain t b) =
->   "CatCreateDomain " ++ show t ++ " as " ++ show b
-> ppCatUpdate (CatCreateComposite nm flds) =
->   "CatCreateComposite " ++ nm ++ showFlds flds
-> ppCatUpdate (CatCreateCast s t ctx) =
->   "CatCreateCast " ++ show s ++ "->" ++ show t ++ " " ++ show ctx
-> ppCatUpdate (CatCreateTable nm flds1 flds2) =
->   "CatCreateTable " ++ nm ++ showFlds flds1 ++ showFlds flds2
-> ppCatUpdate (CatCreateView nm flds) =
->   "CatCreateView " ++ nm ++ showFlds flds
-> ppCatUpdate (CatCreateFunction flav nm args ret vdc) =
->   "CatCreateFunction " ++ show flav ++ " " ++ nm
->   ++ " returns " ++ show ret
->   ++ "(" ++ intercalate "," (map show args) ++ ")"
->   ++ if vdc then " variadic" else ""
-> ppCatUpdate (CatDropFunction _ nm args) =
->   "CatDropFunction " ++ nm ++ "(" ++ show args ++ ")"
->
-> showFlds :: [(String,Type)] -> String
-> showFlds flds = "(\n" ++ sfs flds ++ ")"
->                 where
->                   sfs ((nm,t):fs) = "    " ++ show nm
->                                     ++ " " ++ show t ++ "\n" ++ sfs fs
->                   sfs [] = ""
->
-> data FunFlav = FunPrefix | FunPostfix | FunBinary
->              | FunName | FunAgg | FunWindow
->                deriving (Eq,Show,Ord,Typeable,Data)
->
-> -- | Applies a list of 'CatalogUpdate's to an 'Catalog' value
-> -- to produce a new Catalog value.
-> updateCatalog :: Catalog
->                   -> [CatalogUpdate]
->                   -> Either [TypeError] Catalog
-> updateCatalog cat' eus =
->   foldM updateCat' (cat' {catUpdates = catUpdates cat' ++ eus}) eus
->   where
->     updateCat' cat (CatCreateScalar ty catl pref) = do
->       errorWhen (not allowed)
->         [BadCatalogUpdate $ "can only add scalar types\
->                             \this way, got " ++ show ty]
->       let ScalarType nm = ty
->       return $ addTypeWithArray cat nm ty catl pref
->       where
->         allowed = case ty of
->                           ScalarType _ -> True
->                           _ -> False
->
->     updateCat' cat (CatCreateDomain ty baseTy) = do
->       errorWhen (not allowed)
->         [BadCatalogUpdate $ "can only add domain types\
->                             \this way, got " ++ show ty]
->       errorWhen (not baseAllowed)
->         [BadCatalogUpdate $ "can only add domain types\
->                                 \based on scalars, got "
->                                 ++ show baseTy]
->       let DomainType nm = ty
->       catl <- catTypeCategory cat baseTy
->       return (addTypeWithArray cat nm ty catl False) {
->                              catDomainDefs =
->                                (ty,baseTy):catDomainDefs cat
->                              ,catCasts =
->                                (ty,baseTy,ImplicitCastContext):catCasts cat}
->       where
->         allowed = case ty of
->                           DomainType _ -> True
->                           _ -> False
->         baseAllowed = case baseTy of
->                                   ScalarType _ -> True
->                                   _ -> False
->     updateCat' cat (CatCreateComposite nm flds) =
->       return $ (addTypeWithArray cat nm (NamedCompositeType nm) "C" False) {
->                   catAttrDefs =
->                     (nm,Composite,CompositeType flds, CompositeType [])
->                     : catAttrDefs cat}
->
->     updateCat' cat (CatCreateCast src tgt ctx) =
->       return $ cat {catCasts = (src,tgt,ctx):catCasts cat}
->
->     updateCat' cat (CatCreateTable nm attrs sysAttrs) = do
->       checkTypeDoesntExist cat nm (NamedCompositeType nm)
->       return $ (addTypeWithArray cat nm
->                   (NamedCompositeType nm) "C" False) {
->                   catAttrDefs =
->                     (nm,TableComposite
->                     ,CompositeType attrs
->                     , CompositeType sysAttrs)
->                     : catAttrDefs cat}
->
->     updateCat' cat (CatCreateView nm attrs) = do
->       checkTypeDoesntExist cat nm (NamedCompositeType nm)
->       return $ (addTypeWithArray cat nm
->                   (NamedCompositeType nm) "C" False) {
->                   catAttrDefs =
->                     (nm,ViewComposite,CompositeType attrs, CompositeType [])
->                     : catAttrDefs cat}
->
->     updateCat' cat (CatCreateFunction f nm args ret vdc) =
->         return $ case f of
->           FunPrefix -> cat {catPrefixOperators =
->                               fp : catPrefixOperators cat}
->           FunPostfix -> cat {catPostfixOperators =
->                                fp : catPostfixOperators cat}
->           FunBinary -> cat {catBinaryOperators =
->                               fp : catBinaryOperators cat}
->           FunAgg -> cat {catAggregates =
->                            fp : catAggregates cat}
->           FunWindow -> cat {catWindowFunctions =
->                               fp : catWindowFunctions cat}
->           FunName -> cat {catFunctions =
->                             fp : catFunctions cat}
->         where fp = (nm,args,ret,vdc)
->
->     updateCat' cat (CatDropFunction _ifexists nm args) = do
->         let matches =  filter matchingFn (catFunctions cat)
->         errorWhen (null matches)
->                   [BadCatalogUpdate
->                    $ "couldn't find function to drop "
->                      ++ show nm ++ "(" ++ show args++")"]
->         errorWhen (length matches > 1)
->                   [BadCatalogUpdate
->                    $ "multiple matching functions to drop "
->                      ++ show nm ++ "(" ++ show args++")"]
->         return cat {catFunctions = filter (not . matchingFn)
->                                           (catFunctions cat)
->                    ,catUpdates = filter (not.matchingUpdate)
->                                         (catUpdates cat)}
->         where
->           matchingFn (nm1,a1,_,_) =
->             map toLower nm == map toLower nm1 && args == a1
->           matchingUpdate (CatDropFunction _ nm2 a2)
->                          | map toLower nm2 == map toLower nm
->                            && a2 == args = True
->           matchingUpdate (CatCreateFunction _ nm2 a2 _ _)
->                          | map toLower nm2 == map toLower nm
->                            && a2 == args = True
->           matchingUpdate _ = False
-
-todo:
-look for matching function in list, if not found then error
-remove from list, and remove from update list
-
->     addTypeWithArray cat nm ty catl pref =
->       cat {catTypeNames =
->                ('_':nm,ArrayType ty)
->                : (nm,ty)
->                : catTypeNames cat
->           ,catTypeCategories =
->                (ArrayType ty,"A",False)
->                : (ty,catl,pref)
->                : catTypeCategories cat}
->     checkTypeDoesntExist cat nm ty = do
->         errorWhen (any (==nm) $ map fst $ catTypeNames cat)
->             [TypeAlreadyExists ty]
->         errorWhen (any (==ty) $ map snd $ catTypeNames cat)
->             [TypeAlreadyExists ty]
->         return ()
-> {-
->  | Takes part an 'Catalog' value to produce a list of 'CatalogUpdate's.
->  You can use this to look inside the Catalog data type e.g. if you want to
->  examine a catalog. It should be the case that:
->  @
->   updateCatalog emptyCatalog (deconstructCatalog cat) = cat
->  @ -}
-> deconstructCatalog :: Catalog -> [CatalogUpdate]
-> deconstructCatalog = catUpdates
-
---------------------------------------------------------------------------------
-
-= type checking stuff
-
-> catCompositeDef :: Catalog -> [CompositeFlavour] -> String
->                 -> Either [TypeError] CompositeDef
-> catCompositeDef cat flvs nm = do
->   let c = filter m $ catAttrDefs cat
->   errorWhen (null c)
->             [UnrecognisedRelation nm]
->   case c of
->     (_,fl1,r,s):[] -> return (nm,fl1,r,s)
->     _ -> Left [InternalError $ "problem getting attributes for: "
->                                ++ show nm ++ ", " ++ show c]
->   where
->     m (n,t,_,_) = n == nm && (null flvs || t `elem` flvs)
->
-> catCompositeAttrsPair :: Catalog -> [CompositeFlavour] -> String
->                       -> Either [TypeError] ([(String,Type)],[(String,Type)])
-> catCompositeAttrsPair cat flvs ty = do
->    (_,_,CompositeType a,CompositeType b) <- catCompositeDef cat flvs ty
->    return (a,b)
->
-> catCompositeAttrs :: Catalog -> [CompositeFlavour] -> String
->                   -> Either [TypeError] [(String,Type)]
-> catCompositeAttrs cat flvs ty = do
->   (a,b) <- catCompositeAttrsPair cat flvs ty
->   return $ a ++ b
->
-> catCompositePublicAttrs :: Catalog -> [CompositeFlavour] -> String
->                   -> Either [TypeError] [(String,Type)]
-> catCompositePublicAttrs cat flvs ty = do
->   (a,_) <- catCompositeAttrsPair cat flvs ty
->   return a
->
-> catTypeCategory :: Catalog -> Type -> Either [TypeError] String
-> catTypeCategory cat ty =
->   fmap fst $ catGetCategoryInfo cat ty
->
-> catPreferredType :: Catalog -> Type -> Either [TypeError] Bool
-> catPreferredType cat ty =
->   fmap snd $ catGetCategoryInfo cat ty
->
-> catCast :: Catalog -> CastContext -> Type -> Type -> Either [TypeError] Bool
-> catCast cat ctx from to = {-trace ("check cast " ++ show from ++ show to) $-}
->     case from of
->       t@(DomainType _) -> do
->                 baseType <- catDomainBaseType cat t
->                 cc <- catCast cat ctx baseType to
->                 return $ (baseType == to) ||
->                                (cc ||
->                                   any (== (from, to, ctx)) (catCasts cat))
->       _ -> Right $ any (==(from,to,ctx)) (catCasts cat)
->
-> catDomainBaseType :: Catalog -> Type -> Either [TypeError] Type
-> catDomainBaseType cat ty =
->   --check type is domain, check it exists in main list
->   case lookup ty (catDomainDefs cat) of
->       Nothing -> Left [DomainDefNotFound ty]
->       Just t -> Right t
->
-> catLookupFns :: Catalog -> String -> [FunctionPrototype]
-> catLookupFns cat name =
->     filter (\(nm,_,_,_) -> map toLower nm == map toLower name) catGetAllFns
->     where
->     catGetAllFns =
->         concat [catPrefixOperators cat
->                ,catPostfixOperators cat
->                ,catBinaryOperators cat
->                ,catFunctions cat
->                ,catAggregates cat
->                ,catWindowFunctions cat]
-
-== internal support for type checker fns above
-
-> catGetCategoryInfo :: Catalog -> Type -> Either [TypeError] (String, Bool)
-> catGetCategoryInfo cat ty =
->   case ty of
->     SetOfType _ -> Right ("", False)
->     AnonymousRecordType _ -> Right ("", False)
->     ArrayType (Pseudo _) -> Right ("A",False)
->     Pseudo _ -> Right ("P",False)
->     _ -> let l = filter (\(t,_,_) -> ty == t) $ catTypeCategories cat
->          in if null l
->               then Left [InternalError $ "no type category for " ++ show ty]
->               else let (_,c,p):_ =l
->                    in Right (c,p)
->
-> catTypeExists :: Catalog -> Type -> Either [TypeError] Type
-> catTypeExists cat t =
->     errorWhen (t `notElem` map snd (catTypeNames cat))
->               [UnknownTypeError t] >>
->     Right t
->
-> catLookupType :: Catalog -> String -> Either [TypeError] Type
-> catLookupType cat name =
->     liftME [UnknownTypeName name] $
->       lookup name (catTypeNames cat)
->
-
-================================================================================
-
-= built in stuff
-
-keyword operators, all of these are built in and don't appear in any
-postgresql catalog
-
-This is wrong, these need to be separated into prefix, postfix, binary
-
-> keywordOperatorTypes :: [FunctionPrototype]
-> keywordOperatorTypes = [
->   ("!and", [typeBool, typeBool], typeBool, False)
->  ,("!or", [typeBool, typeBool], typeBool, False)
->  ,("!like", [ScalarType "text", ScalarType "text"], typeBool, False)
->  ,("!like", [ScalarType "char", ScalarType "char"], typeBool, False)
->  ,("!like", [ScalarType "varchar", ScalarType "varchar"], typeBool, False)
->  ,("!notlike", [ScalarType "text", ScalarType "text"], typeBool, False)
->  ,("!notlike", [ScalarType "char", ScalarType "char"], typeBool, False)
->  ,("!notlike", [ScalarType "varchar", ScalarType "varchar"], typeBool, False)
->  ,("!not", [typeBool], typeBool, False)
->  ,("!isnull", [Pseudo AnyElement], typeBool, False)
->  ,("!isnotnull", [Pseudo AnyElement], typeBool, False)
->  ,("!arrayctor", [ArrayType $ Pseudo AnyElement], Pseudo AnyArray, True)
->  ,("!between", [Pseudo AnyElement
->                ,Pseudo AnyElement
->                ,Pseudo AnyElement], typeBool, False)
->  ,("!substring",[ScalarType "text",typeInt,typeInt],ScalarType "text",False)
->  ,("!substring",[ScalarType "varchar",typeInt,typeInt],ScalarType "varchar",False)
->  ,("!substring",[ScalarType "char",typeInt,typeInt],ScalarType "char",False)
->  ,("!arraysub", [Pseudo AnyArray,typeInt], Pseudo AnyElement, False)
->  ]
->
-> -- these look like functions, but don't appear in the postgresql catalog.
->
-> specialFunctionTypes :: [FunctionPrototype]
-> specialFunctionTypes = [
->   ("coalesce", [ArrayType $ Pseudo AnyElement], Pseudo AnyElement, True)
->  ,("nullif", [Pseudo AnyElement, Pseudo AnyElement], Pseudo AnyElement,False)
->  ,("greatest", [ArrayType $ Pseudo AnyElement], Pseudo AnyElement,True)
->  ,("least", [ArrayType $ Pseudo AnyElement], Pseudo AnyElement,True)
->  ]
->
-> pseudoTypes :: [(String, Type)]
-> pseudoTypes =
->     [("any",Pseudo Any)
->     ,("anyarray",Pseudo AnyArray)
->     ,("anyelement",Pseudo AnyElement)
->     ,("anyenum",Pseudo AnyEnum)
->     ,("anynonarray",Pseudo AnyNonArray)
->     ,("cstring",Pseudo Cstring)
->     ,("record",Pseudo Record)
->     ,("trigger",Pseudo Trigger)
->     ,("void",Pseudo Void)
->     ,("_cstring",ArrayType $ Pseudo Cstring)
->     ,("_record",ArrayType $ Pseudo Record)
->     --,Pseudo Internal
->     --,Pseudo LanguageHandler
->     --,Pseudo Opaque
->     ]
-
-================================================================================
-
-= getOperatorType
-
-used by the pretty printer, not sure this is a very good design
-
-for now, assume that all the overloaded operators that have the
-same name are all either binary, prefix or postfix, otherwise the
-getoperatortype would need the types of the arguments to determine
-the operator type, and the parser would have to be a lot cleverer
-although, parsec handles - being unary and binary without breaking
-a sweat, so maybe this isn't too difficult?
-
-this is why binary @ operator isn't currently supported
-
-> data OperatorType = BinaryOp | PrefixOp | PostfixOp
->                   deriving (Eq,Show)
->
-> getOperatorType :: Catalog -> String -> Either [TypeError] OperatorType
-> getOperatorType cat s =
->   case () of
->           _ | s `elem` ["!and", "!or","!like","!notlike","."] -> Right BinaryOp
->             | s `elem` ["!not"] -> Right PrefixOp
->             | s `elem` ["!isnull", "!isnotnull"] -> Right PostfixOp
->             | any (\(x,_,_,_) -> x == s) (catBinaryOperators cat) ->
->                       Right BinaryOp
->             | any (\(x,_,_,_) -> x == s || (x=="-" && s=="u-"))
->                   (catPrefixOperators cat) ->
->                       Right PrefixOp
->             | any (\(x,_,_,_) -> x == s) (catPostfixOperators cat) ->
->                       Right PostfixOp
->             | otherwise ->
->                 Left [InternalError $ "don't know flavour of operator " ++ s]
->
-> isOperatorName :: String -> Bool
-> isOperatorName = any (`elem` "+-*/<>=~!@#%^&|`?.")
-
-================================================================================
-
-> -- | items in first catalog and not second, items in second and not first.
-> data CatalogDiff = CatalogDiff [CatalogUpdate] [CatalogUpdate]
->                deriving Show
->
-> -- | find differences between two catalogs
-> compareCatalogs :: Catalog -> Catalog -> Catalog -> CatalogDiff
-> compareCatalogs base start end =
->         let baseCatBits = deconstructCatalog base
->             startCatBits = deconstructCatalog start \\ baseCatBits
->             endCatBits = deconstructCatalog end \\ baseCatBits
->             missing = sort $ endCatBits \\ startCatBits
->             extras = sort $ startCatBits \\ endCatBits
->         in CatalogDiff missing extras
->
-> -- | print a catdiff in a more human readable way than show.
-> ppCatDiff :: CatalogDiff -> String
-> ppCatDiff (CatalogDiff missing extr) =
->     "\nmissing:\n"
->     ++ intercalate "\n" (map ppCatUpdate missing)
->     ++ "\nextra:\n"
->     ++ intercalate "\n" (map ppCatUpdate extr)
diff --git a/src/Database/HsSqlPpp/AstInternals/Catalog/DefaultTemplate1Catalog.lhs b/src/Database/HsSqlPpp/AstInternals/Catalog/DefaultTemplate1Catalog.lhs
deleted file mode 100644
--- a/src/Database/HsSqlPpp/AstInternals/Catalog/DefaultTemplate1Catalog.lhs
+++ /dev/null
@@ -1,13044 +0,0 @@
-
-
-
-
-This file is auto generated, to regenerate run
-MUMBLE MUMBLE SOMETHING
-
-from the project root (i.e. where the cabal file is located).
-
-> module Database.HsSqlPpp.AstInternals.Catalog.DefaultTemplate1Catalog
->      (defaultTemplate1Catalog) where
->
-> import Database.HsSqlPpp.AstInternals.Catalog.CatalogInternal
-> import Database.HsSqlPpp.AstInternals.TypeType
->
-> defaultTemplate1Catalog :: Catalog
-> defaultTemplate1Catalog =
->     (\l -> case l of
->              Left x -> error $ show x
->              Right e -> e) $
->      updateCatalog defaultCatalog
-
- 
->        [CatCreateScalar (ScalarType "bool") "B" True,
->         CatCreateScalar (ScalarType "bytea") "U" False,
->         CatCreateScalar (ScalarType "char") "S" False,
->         CatCreateScalar (ScalarType "name") "S" False,
->         CatCreateScalar (ScalarType "int8") "N" False,
->         CatCreateScalar (ScalarType "int2") "N" False,
->         CatCreateScalar (ScalarType "int2vector") "A" False,
->         CatCreateScalar (ScalarType "int4") "N" False,
->         CatCreateScalar (ScalarType "regproc") "N" False,
->         CatCreateScalar (ScalarType "text") "S" True,
->         CatCreateScalar (ScalarType "oid") "N" True,
->         CatCreateScalar (ScalarType "tid") "U" False,
->         CatCreateScalar (ScalarType "xid") "U" False,
->         CatCreateScalar (ScalarType "cid") "U" False,
->         CatCreateScalar (ScalarType "oidvector") "A" False,
->         CatCreateScalar (ScalarType "xml") "U" False,
->         CatCreateScalar (ScalarType "point") "G" False,
->         CatCreateScalar (ScalarType "lseg") "G" False,
->         CatCreateScalar (ScalarType "path") "G" False,
->         CatCreateScalar (ScalarType "box") "G" False,
->         CatCreateScalar (ScalarType "polygon") "G" False,
->         CatCreateScalar (ScalarType "line") "G" False,
->         CatCreateScalar (ScalarType "float4") "N" False,
->         CatCreateScalar (ScalarType "float8") "N" True,
->         CatCreateScalar (ScalarType "abstime") "D" False,
->         CatCreateScalar (ScalarType "reltime") "T" False,
->         CatCreateScalar (ScalarType "tinterval") "T" False,
->         CatCreateScalar (ScalarType "circle") "G" False,
->         CatCreateScalar (ScalarType "money") "N" False,
->         CatCreateScalar (ScalarType "macaddr") "U" False,
->         CatCreateScalar (ScalarType "inet") "I" True,
->         CatCreateScalar (ScalarType "cidr") "I" False,
->         CatCreateScalar (ScalarType "aclitem") "U" False,
->         CatCreateScalar (ScalarType "bpchar") "S" False,
->         CatCreateScalar (ScalarType "varchar") "S" False,
->         CatCreateScalar (ScalarType "date") "D" False,
->         CatCreateScalar (ScalarType "time") "D" False,
->         CatCreateScalar (ScalarType "timestamp") "D" False,
->         CatCreateScalar (ScalarType "timestamptz") "D" True,
->         CatCreateScalar (ScalarType "interval") "T" True,
->         CatCreateScalar (ScalarType "timetz") "D" False,
->         CatCreateScalar (ScalarType "bit") "V" False,
->         CatCreateScalar (ScalarType "varbit") "V" True,
->         CatCreateScalar (ScalarType "numeric") "N" False,
->         CatCreateScalar (ScalarType "refcursor") "U" False,
->         CatCreateScalar (ScalarType "regprocedure") "N" False,
->         CatCreateScalar (ScalarType "regoper") "N" False,
->         CatCreateScalar (ScalarType "regoperator") "N" False,
->         CatCreateScalar (ScalarType "regclass") "N" False,
->         CatCreateScalar (ScalarType "regtype") "N" False,
->         CatCreateScalar (ScalarType "uuid") "U" False,
->         CatCreateScalar (ScalarType "tsvector") "U" False,
->         CatCreateScalar (ScalarType "gtsvector") "U" False,
->         CatCreateScalar (ScalarType "tsquery") "U" False,
->         CatCreateScalar (ScalarType "regconfig") "N" False,
->         CatCreateScalar (ScalarType "regdictionary") "N" False,
->         CatCreateScalar (ScalarType "txid_snapshot") "U" False,
->         CatCreateDomain (DomainType "information_schema.cardinal_number")
->           (ScalarType "int4"),
->         CatCreateDomain (DomainType "information_schema.character_data")
->           (ScalarType "varchar"),
->         CatCreateDomain (DomainType "information_schema.sql_identifier")
->           (ScalarType "varchar"),
->         CatCreateDomain (DomainType "information_schema.time_stamp")
->           (ScalarType "timestamptz"),
->         CatCreateCast (ScalarType "int8") (ScalarType "int2")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "int8") (ScalarType "int4")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "int8") (ScalarType "float4")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int8") (ScalarType "float8")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int8") (ScalarType "numeric")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int2") (ScalarType "int8")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int2") (ScalarType "int4")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int2") (ScalarType "float4")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int2") (ScalarType "float8")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int2") (ScalarType "numeric")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int4") (ScalarType "int8")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int4") (ScalarType "int2")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "int4") (ScalarType "float4")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int4") (ScalarType "float8")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int4") (ScalarType "numeric")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "float4") (ScalarType "int8")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "float4") (ScalarType "int2")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "float4") (ScalarType "int4")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "float4") (ScalarType "float8")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "float4") (ScalarType "numeric")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "float8") (ScalarType "int8")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "float8") (ScalarType "int2")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "float8") (ScalarType "int4")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "float8") (ScalarType "float4")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "float8") (ScalarType "numeric")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "numeric") (ScalarType "int8")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "numeric") (ScalarType "int2")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "numeric") (ScalarType "int4")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "numeric") (ScalarType "float4")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "numeric") (ScalarType "float8")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int4") (ScalarType "bool")
->           ExplicitCastContext,
->         CatCreateCast (ScalarType "bool") (ScalarType "int4")
->           ExplicitCastContext,
->         CatCreateCast (ScalarType "int8") (ScalarType "oid")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int2") (ScalarType "oid")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int4") (ScalarType "oid")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "oid") (ScalarType "int8")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "oid") (ScalarType "int4")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "oid") (ScalarType "regproc")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "regproc") (ScalarType "oid")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int8") (ScalarType "regproc")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int2") (ScalarType "regproc")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int4") (ScalarType "regproc")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "regproc") (ScalarType "int8")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "regproc") (ScalarType "int4")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "regproc") (ScalarType "regprocedure")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "regprocedure") (ScalarType "regproc")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "oid") (ScalarType "regprocedure")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "regprocedure") (ScalarType "oid")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int8") (ScalarType "regprocedure")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int2") (ScalarType "regprocedure")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int4") (ScalarType "regprocedure")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "regprocedure") (ScalarType "int8")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "regprocedure") (ScalarType "int4")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "oid") (ScalarType "regoper")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "regoper") (ScalarType "oid")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int8") (ScalarType "regoper")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int2") (ScalarType "regoper")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int4") (ScalarType "regoper")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "regoper") (ScalarType "int8")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "regoper") (ScalarType "int4")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "regoper") (ScalarType "regoperator")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "regoperator") (ScalarType "regoper")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "oid") (ScalarType "regoperator")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "regoperator") (ScalarType "oid")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int8") (ScalarType "regoperator")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int2") (ScalarType "regoperator")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int4") (ScalarType "regoperator")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "regoperator") (ScalarType "int8")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "regoperator") (ScalarType "int4")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "oid") (ScalarType "regclass")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "regclass") (ScalarType "oid")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int8") (ScalarType "regclass")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int2") (ScalarType "regclass")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int4") (ScalarType "regclass")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "regclass") (ScalarType "int8")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "regclass") (ScalarType "int4")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "oid") (ScalarType "regtype")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "regtype") (ScalarType "oid")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int8") (ScalarType "regtype")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int2") (ScalarType "regtype")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int4") (ScalarType "regtype")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "regtype") (ScalarType "int8")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "regtype") (ScalarType "int4")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "oid") (ScalarType "regconfig")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "regconfig") (ScalarType "oid")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int8") (ScalarType "regconfig")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int2") (ScalarType "regconfig")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int4") (ScalarType "regconfig")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "regconfig") (ScalarType "int8")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "regconfig") (ScalarType "int4")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "oid") (ScalarType "regdictionary")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "regdictionary") (ScalarType "oid")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int8") (ScalarType "regdictionary")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int2") (ScalarType "regdictionary")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int4") (ScalarType "regdictionary")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "regdictionary") (ScalarType "int8")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "regdictionary") (ScalarType "int4")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "text") (ScalarType "regclass")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "varchar") (ScalarType "regclass")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "text") (ScalarType "bpchar")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "text") (ScalarType "varchar")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "bpchar") (ScalarType "text")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "bpchar") (ScalarType "varchar")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "varchar") (ScalarType "text")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "varchar") (ScalarType "bpchar")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "char") (ScalarType "text")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "char") (ScalarType "bpchar")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "char") (ScalarType "varchar")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "name") (ScalarType "text")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "name") (ScalarType "bpchar")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "name") (ScalarType "varchar")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "text") (ScalarType "char")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "bpchar") (ScalarType "char")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "varchar") (ScalarType "char")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "text") (ScalarType "name")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "bpchar") (ScalarType "name")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "varchar") (ScalarType "name")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "char") (ScalarType "int4")
->           ExplicitCastContext,
->         CatCreateCast (ScalarType "int4") (ScalarType "char")
->           ExplicitCastContext,
->         CatCreateCast (ScalarType "abstime") (ScalarType "date")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "abstime") (ScalarType "time")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "abstime") (ScalarType "timestamp")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "abstime") (ScalarType "timestamptz")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "reltime") (ScalarType "interval")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "date") (ScalarType "timestamp")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "date") (ScalarType "timestamptz")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "time") (ScalarType "interval")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "time") (ScalarType "timetz")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "timestamp") (ScalarType "abstime")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "timestamp") (ScalarType "date")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "timestamp") (ScalarType "time")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "timestamp") (ScalarType "timestamptz")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "timestamptz") (ScalarType "abstime")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "timestamptz") (ScalarType "date")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "timestamptz") (ScalarType "time")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "timestamptz") (ScalarType "timestamp")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "timestamptz") (ScalarType "timetz")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "interval") (ScalarType "reltime")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "interval") (ScalarType "time")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "timetz") (ScalarType "time")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "int4") (ScalarType "abstime")
->           ExplicitCastContext,
->         CatCreateCast (ScalarType "abstime") (ScalarType "int4")
->           ExplicitCastContext,
->         CatCreateCast (ScalarType "int4") (ScalarType "reltime")
->           ExplicitCastContext,
->         CatCreateCast (ScalarType "reltime") (ScalarType "int4")
->           ExplicitCastContext,
->         CatCreateCast (ScalarType "lseg") (ScalarType "point")
->           ExplicitCastContext,
->         CatCreateCast (ScalarType "path") (ScalarType "point")
->           ExplicitCastContext,
->         CatCreateCast (ScalarType "path") (ScalarType "polygon")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "box") (ScalarType "point")
->           ExplicitCastContext,
->         CatCreateCast (ScalarType "box") (ScalarType "lseg")
->           ExplicitCastContext,
->         CatCreateCast (ScalarType "box") (ScalarType "polygon")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "box") (ScalarType "circle")
->           ExplicitCastContext,
->         CatCreateCast (ScalarType "polygon") (ScalarType "point")
->           ExplicitCastContext,
->         CatCreateCast (ScalarType "polygon") (ScalarType "path")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "polygon") (ScalarType "box")
->           ExplicitCastContext,
->         CatCreateCast (ScalarType "polygon") (ScalarType "circle")
->           ExplicitCastContext,
->         CatCreateCast (ScalarType "circle") (ScalarType "point")
->           ExplicitCastContext,
->         CatCreateCast (ScalarType "circle") (ScalarType "box")
->           ExplicitCastContext,
->         CatCreateCast (ScalarType "circle") (ScalarType "polygon")
->           ExplicitCastContext,
->         CatCreateCast (ScalarType "cidr") (ScalarType "inet")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "inet") (ScalarType "cidr")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "bit") (ScalarType "varbit")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "varbit") (ScalarType "bit")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "int8") (ScalarType "bit")
->           ExplicitCastContext,
->         CatCreateCast (ScalarType "int4") (ScalarType "bit")
->           ExplicitCastContext,
->         CatCreateCast (ScalarType "bit") (ScalarType "int8")
->           ExplicitCastContext,
->         CatCreateCast (ScalarType "bit") (ScalarType "int4")
->           ExplicitCastContext,
->         CatCreateCast (ScalarType "cidr") (ScalarType "text")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "inet") (ScalarType "text")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "bool") (ScalarType "text")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "xml") (ScalarType "text")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "text") (ScalarType "xml")
->           ExplicitCastContext,
->         CatCreateCast (ScalarType "cidr") (ScalarType "varchar")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "inet") (ScalarType "varchar")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "bool") (ScalarType "varchar")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "xml") (ScalarType "varchar")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "varchar") (ScalarType "xml")
->           ExplicitCastContext,
->         CatCreateCast (ScalarType "cidr") (ScalarType "bpchar")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "inet") (ScalarType "bpchar")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "bool") (ScalarType "bpchar")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "xml") (ScalarType "bpchar")
->           AssignmentCastContext,
->         CatCreateCast (ScalarType "bpchar") (ScalarType "xml")
->           ExplicitCastContext,
->         CatCreateCast (ScalarType "bpchar") (ScalarType "bpchar")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "varchar") (ScalarType "varchar")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "time") (ScalarType "time")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "timestamp") (ScalarType "timestamp")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "timestamptz") (ScalarType "timestamptz")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "interval") (ScalarType "interval")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "timetz") (ScalarType "timetz")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "bit") (ScalarType "bit")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "varbit") (ScalarType "varbit")
->           ImplicitCastContext,
->         CatCreateCast (ScalarType "numeric") (ScalarType "numeric")
->           ImplicitCastContext,
->         CatCreateFunction FunPrefix "~" [ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunPrefix "~" [ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunPrefix "~" [ScalarType "int2"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunPrefix "~" [ScalarType "bit"]
->           (ScalarType "bit")
->           False,
->         CatCreateFunction FunPrefix "~" [ScalarType "inet"]
->           (ScalarType "inet")
->           False,
->         CatCreateFunction FunPrefix "||/" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunPrefix "|/" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunPrefix "|" [ScalarType "tinterval"]
->           (ScalarType "abstime")
->           False,
->         CatCreateFunction FunPrefix "@@" [ScalarType "circle"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunPrefix "@@" [ScalarType "lseg"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunPrefix "@@" [ScalarType "path"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunPrefix "@@" [ScalarType "polygon"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunPrefix "@@" [ScalarType "box"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunPrefix "@-@" [ScalarType "path"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunPrefix "@-@" [ScalarType "lseg"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunPrefix "@" [ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunPrefix "@" [ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunPrefix "@" [ScalarType "int2"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunPrefix "@" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunPrefix "@" [ScalarType "float4"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunPrefix "@" [ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunPrefix "?|" [ScalarType "line"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunPrefix "?|" [ScalarType "lseg"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunPrefix "?-" [ScalarType "lseg"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunPrefix "?-" [ScalarType "line"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunPrefix "-" [ScalarType "interval"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunPrefix "-" [ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunPrefix "-" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunPrefix "-" [ScalarType "float4"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunPrefix "-" [ScalarType "int2"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunPrefix "-" [ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunPrefix "-" [ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunPrefix "+" [ScalarType "int2"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunPrefix "+" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunPrefix "+" [ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunPrefix "+" [ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunPrefix "+" [ScalarType "float4"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunPrefix "+" [ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunPrefix "#" [ScalarType "path"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunPrefix "#" [ScalarType "polygon"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunPrefix "!!" [ScalarType "int8"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunPrefix "!!" [ScalarType "tsquery"]
->           (ScalarType "tsquery")
->           False,
->         CatCreateFunction FunPostfix "!" [ScalarType "int8"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunBinary "~~*"
->           [ScalarType "name", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "~~*"
->           [ScalarType "bpchar", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "~~*"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "~~"
->           [ScalarType "bpchar", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "~~"
->           [ScalarType "bytea", ScalarType "bytea"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "~~"
->           [ScalarType "name", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "~~"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "~>~"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "~>~"
->           [ScalarType "bpchar", ScalarType "bpchar"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "~>=~"
->           [ScalarType "bpchar", ScalarType "bpchar"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "~>=~"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "~="
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "~="
->           [ScalarType "tinterval", ScalarType "tinterval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "~="
->           [ScalarType "polygon", ScalarType "polygon"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "~="
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "~="
->           [ScalarType "point", ScalarType "point"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "~<~"
->           [ScalarType "bpchar", ScalarType "bpchar"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "~<~"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "~<=~"
->           [ScalarType "bpchar", ScalarType "bpchar"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "~<=~"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "~*"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "~*"
->           [ScalarType "bpchar", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "~*"
->           [ScalarType "name", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "~"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "~"
->           [ScalarType "bpchar", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "~"
->           [ArrayType (ScalarType "aclitem"), ScalarType "aclitem"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "~"
->           [ScalarType "circle", ScalarType "point"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "~"
->           [ScalarType "polygon", ScalarType "point"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "~"
->           [ScalarType "path", ScalarType "point"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "~"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "~"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "~"
->           [ScalarType "polygon", ScalarType "polygon"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "~"
->           [ScalarType "name", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "||" [Pseudo AnyArray, Pseudo AnyArray]
->           (Pseudo AnyArray)
->           False,
->         CatCreateFunction FunBinary "||"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunBinary "||"
->           [ScalarType "varbit", ScalarType "varbit"]
->           (ScalarType "varbit")
->           False,
->         CatCreateFunction FunBinary "||"
->           [Pseudo AnyElement, Pseudo AnyArray]
->           (Pseudo AnyArray)
->           False,
->         CatCreateFunction FunBinary "||"
->           [ScalarType "tsquery", ScalarType "tsquery"]
->           (ScalarType "tsquery")
->           False,
->         CatCreateFunction FunBinary "||"
->           [ScalarType "bytea", ScalarType "bytea"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunBinary "||"
->           [Pseudo AnyNonArray, ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunBinary "||"
->           [ScalarType "tsvector", ScalarType "tsvector"]
->           (ScalarType "tsvector")
->           False,
->         CatCreateFunction FunBinary "||"
->           [Pseudo AnyArray, Pseudo AnyElement]
->           (Pseudo AnyArray)
->           False,
->         CatCreateFunction FunBinary "||"
->           [ScalarType "text", Pseudo AnyNonArray]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunBinary "|>>"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "|>>"
->           [ScalarType "polygon", ScalarType "polygon"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "|>>"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "|&>"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "|&>"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "|&>"
->           [ScalarType "polygon", ScalarType "polygon"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "|"
->           [ScalarType "int8", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunBinary "|"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunBinary "|"
->           [ScalarType "int2", ScalarType "int2"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunBinary "|"
->           [ScalarType "inet", ScalarType "inet"]
->           (ScalarType "inet")
->           False,
->         CatCreateFunction FunBinary "|"
->           [ScalarType "bit", ScalarType "bit"]
->           (ScalarType "bit")
->           False,
->         CatCreateFunction FunBinary "^"
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunBinary "^"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunBinary "@@@"
->           [ScalarType "tsquery", ScalarType "tsvector"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "@@@"
->           [ScalarType "tsvector", ScalarType "tsquery"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "@@"
->           [ScalarType "text", ScalarType "tsquery"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "@@"
->           [ScalarType "tsquery", ScalarType "tsvector"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "@@"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "@@"
->           [ScalarType "tsvector", ScalarType "tsquery"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "@>" [Pseudo AnyArray, Pseudo AnyArray]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "@>"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "@>"
->           [ScalarType "tsquery", ScalarType "tsquery"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "@>"
->           [ScalarType "polygon", ScalarType "point"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "@>"
->           [ScalarType "path", ScalarType "point"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "@>"
->           [ArrayType (ScalarType "aclitem"), ScalarType "aclitem"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "@>"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "@>"
->           [ScalarType "polygon", ScalarType "polygon"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "@>"
->           [ScalarType "circle", ScalarType "point"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "?||"
->           [ScalarType "line", ScalarType "line"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "?||"
->           [ScalarType "lseg", ScalarType "lseg"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "?|"
->           [ScalarType "point", ScalarType "point"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "?-|"
->           [ScalarType "line", ScalarType "line"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "?-|"
->           [ScalarType "lseg", ScalarType "lseg"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "?-"
->           [ScalarType "point", ScalarType "point"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "?#"
->           [ScalarType "lseg", ScalarType "lseg"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "?#"
->           [ScalarType "path", ScalarType "path"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "?#"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "?#"
->           [ScalarType "lseg", ScalarType "line"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "?#"
->           [ScalarType "line", ScalarType "line"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "?#"
->           [ScalarType "lseg", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "?#"
->           [ScalarType "line", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">^"
->           [ScalarType "point", ScalarType "point"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">^"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">>="
->           [ScalarType "inet", ScalarType "inet"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">>"
->           [ScalarType "polygon", ScalarType "polygon"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">>"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">>"
->           [ScalarType "point", ScalarType "point"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">>"
->           [ScalarType "int8", ScalarType "int4"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunBinary ">>"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunBinary ">>"
->           [ScalarType "int2", ScalarType "int4"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunBinary ">>"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">>"
->           [ScalarType "inet", ScalarType "inet"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">>"
->           [ScalarType "bit", ScalarType "int4"]
->           (ScalarType "bit")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "uuid", ScalarType "uuid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "macaddr", ScalarType "macaddr"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "bpchar", ScalarType "bpchar"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "char", ScalarType "char"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "bytea", ScalarType "bytea"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "int2", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">=" [Pseudo AnyEnum, Pseudo AnyEnum]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "lseg", ScalarType "lseg"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">=" [Pseudo AnyArray, Pseudo AnyArray]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "timestamp", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "date", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "time", ScalarType "time"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "timetz", ScalarType "timetz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "float4", ScalarType "float8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "varbit", ScalarType "varbit"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "int4", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "name", ScalarType "name"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "tsvector", ScalarType "tsvector"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "date", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "tsquery", ScalarType "tsquery"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "float8", ScalarType "float4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "bool", ScalarType "bool"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">=" [Pseudo Record, Pseudo Record]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "int2", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "timestamptz", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "timestamp", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "timestamptz", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "bit", ScalarType "bit"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "timestamp", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "abstime", ScalarType "abstime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "path", ScalarType "path"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "timestamptz", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "int8", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "int2", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "int8", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "oid", ScalarType "oid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "tinterval", ScalarType "tinterval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "date", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "tid", ScalarType "tid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "money", ScalarType "money"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "oidvector", ScalarType "oidvector"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "interval", ScalarType "interval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "reltime", ScalarType "reltime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "int4", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "inet", ScalarType "inet"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "int8", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">="
->           [ScalarType "float4", ScalarType "float4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "timestamptz", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "inet", ScalarType "inet"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "macaddr", ScalarType "macaddr"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "bpchar", ScalarType "bpchar"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "int4", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "int8", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "char", ScalarType "char"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">" [Pseudo AnyArray, Pseudo AnyArray]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "int4", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "timestamp", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "interval", ScalarType "interval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">" [Pseudo AnyEnum, Pseudo AnyEnum]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "reltime", ScalarType "reltime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "timestamptz", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "int2", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "lseg", ScalarType "lseg"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "tinterval", ScalarType "tinterval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "date", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "int8", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "timestamp", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "time", ScalarType "time"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "uuid", ScalarType "uuid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "bytea", ScalarType "bytea"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "timetz", ScalarType "timetz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "bit", ScalarType "bit"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "name", ScalarType "name"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "float4", ScalarType "float8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "oidvector", ScalarType "oidvector"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "path", ScalarType "path"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">" [Pseudo Record, Pseudo Record]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "int2", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "timestamp", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "bool", ScalarType "bool"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "varbit", ScalarType "varbit"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "oid", ScalarType "oid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "tsvector", ScalarType "tsvector"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "float8", ScalarType "float4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "int2", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "date", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "date", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "timestamptz", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "money", ScalarType "money"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "tsquery", ScalarType "tsquery"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "float4", ScalarType "float4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "tid", ScalarType "tid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "int8", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary ">"
->           [ScalarType "abstime", ScalarType "abstime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "timestamp", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "int4", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "reltime", ScalarType "reltime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "bytea", ScalarType "bytea"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "int2", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "date", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "oid", ScalarType "oid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "interval", ScalarType "interval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "date", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "oidvector", ScalarType "oidvector"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "float4", ScalarType "float4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "int8", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "timestamp", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "int2", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "varbit", ScalarType "varbit"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "timestamptz", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "timestamp", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "path", ScalarType "path"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "bit", ScalarType "bit"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "timestamptz", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "int8", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "tinterval", ScalarType "tinterval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "int8", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "money", ScalarType "money"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "tid", ScalarType "tid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "aclitem", ScalarType "aclitem"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "uuid", ScalarType "uuid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "int2vector", ScalarType "int2vector"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "=" [Pseudo Record, Pseudo Record]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "cid", ScalarType "cid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "xid", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "bpchar", ScalarType "bpchar"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "inet", ScalarType "inet"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "=" [Pseudo AnyArray, Pseudo AnyArray]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "macaddr", ScalarType "macaddr"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "line", ScalarType "line"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "=" [Pseudo AnyEnum, Pseudo AnyEnum]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "xid", ScalarType "xid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "tsvector", ScalarType "tsvector"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "date", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "time", ScalarType "time"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "timetz", ScalarType "timetz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "float4", ScalarType "float8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "float8", ScalarType "float4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "int4", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "lseg", ScalarType "lseg"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "int2", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "name", ScalarType "name"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "tsquery", ScalarType "tsquery"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "char", ScalarType "char"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "bool", ScalarType "bool"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "timestamptz", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "="
->           [ScalarType "abstime", ScalarType "abstime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<^"
->           [ScalarType "point", ScalarType "point"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<^"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<@"
->           [ScalarType "tsquery", ScalarType "tsquery"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<@" [Pseudo AnyArray, Pseudo AnyArray]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<@"
->           [ScalarType "lseg", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<@"
->           [ScalarType "lseg", ScalarType "line"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<@"
->           [ScalarType "point", ScalarType "line"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<@"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<@"
->           [ScalarType "point", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<@"
->           [ScalarType "point", ScalarType "polygon"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<@"
->           [ScalarType "point", ScalarType "path"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<@"
->           [ScalarType "point", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<@"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<@"
->           [ScalarType "polygon", ScalarType "polygon"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<@"
->           [ScalarType "point", ScalarType "lseg"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<?>"
->           [ScalarType "abstime", ScalarType "tinterval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "float4", ScalarType "float4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>" [Pseudo AnyArray, Pseudo AnyArray]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "timetz", ScalarType "timetz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "reltime", ScalarType "reltime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "int4", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "int8", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "tsvector", ScalarType "tsvector"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "interval", ScalarType "interval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "time", ScalarType "time"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "date", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "oidvector", ScalarType "oidvector"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "int4", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "lseg", ScalarType "lseg"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "char", ScalarType "char"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "int2", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "oid", ScalarType "oid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "bytea", ScalarType "bytea"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "point", ScalarType "point"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "timestamptz", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "int8", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "date", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "int8", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "bit", ScalarType "bit"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "int2", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "abstime", ScalarType "abstime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "date", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "tsquery", ScalarType "tsquery"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "name", ScalarType "name"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "tinterval", ScalarType "tinterval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "int2", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "timestamp", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "money", ScalarType "money"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "float8", ScalarType "float4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>" [Pseudo AnyEnum, Pseudo AnyEnum]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "timestamp", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "timestamptz", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "timestamp", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "uuid", ScalarType "uuid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "varbit", ScalarType "varbit"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "tid", ScalarType "tid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "bool", ScalarType "bool"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "float4", ScalarType "float8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "inet", ScalarType "inet"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "timestamptz", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>" [Pseudo Record, Pseudo Record]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "bpchar", ScalarType "bpchar"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<>"
->           [ScalarType "macaddr", ScalarType "macaddr"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "oidvector", ScalarType "oidvector"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "oid", ScalarType "oid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "reltime", ScalarType "reltime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "tsvector", ScalarType "tsvector"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<=" [Pseudo AnyEnum, Pseudo AnyEnum]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "float8", ScalarType "float4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "uuid", ScalarType "uuid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "float4", ScalarType "float8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "tid", ScalarType "tid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "timetz", ScalarType "timetz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "int8", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "time", ScalarType "time"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "interval", ScalarType "interval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "int8", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "date", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "lseg", ScalarType "lseg"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<=" [Pseudo AnyArray, Pseudo AnyArray]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "macaddr", ScalarType "macaddr"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "bpchar", ScalarType "bpchar"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "inet", ScalarType "inet"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "timestamptz", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "timestamp", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "timestamptz", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "money", ScalarType "money"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "bool", ScalarType "bool"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "timestamp", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "tinterval", ScalarType "tinterval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<=" [Pseudo Record, Pseudo Record]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "int4", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "timestamptz", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "date", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "path", ScalarType "path"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "bit", ScalarType "bit"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "int2", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "date", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "tsquery", ScalarType "tsquery"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "int2", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "int4", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "timestamp", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "varbit", ScalarType "varbit"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "name", ScalarType "name"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "int2", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "char", ScalarType "char"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "int8", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "float4", ScalarType "float4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "abstime", ScalarType "abstime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<="
->           [ScalarType "bytea", ScalarType "bytea"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<<|"
->           [ScalarType "polygon", ScalarType "polygon"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<<|"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<<|"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<<="
->           [ScalarType "inet", ScalarType "inet"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<<"
->           [ScalarType "int2", ScalarType "int4"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunBinary "<<"
->           [ScalarType "inet", ScalarType "inet"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<<"
->           [ScalarType "tinterval", ScalarType "tinterval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<<"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<<"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<<"
->           [ScalarType "polygon", ScalarType "polygon"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<<"
->           [ScalarType "int8", ScalarType "int4"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunBinary "<<"
->           [ScalarType "bit", ScalarType "int4"]
->           (ScalarType "bit")
->           False,
->         CatCreateFunction FunBinary "<<"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunBinary "<<"
->           [ScalarType "point", ScalarType "point"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<->"
->           [ScalarType "point", ScalarType "point"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunBinary "<->"
->           [ScalarType "circle", ScalarType "polygon"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunBinary "<->"
->           [ScalarType "point", ScalarType "line"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunBinary "<->"
->           [ScalarType "point", ScalarType "path"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunBinary "<->"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunBinary "<->"
->           [ScalarType "point", ScalarType "circle"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunBinary "<->"
->           [ScalarType "lseg", ScalarType "box"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunBinary "<->"
->           [ScalarType "point", ScalarType "lseg"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunBinary "<->"
->           [ScalarType "lseg", ScalarType "line"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunBinary "<->"
->           [ScalarType "point", ScalarType "box"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunBinary "<->"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunBinary "<->"
->           [ScalarType "polygon", ScalarType "polygon"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunBinary "<->"
->           [ScalarType "lseg", ScalarType "lseg"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunBinary "<->"
->           [ScalarType "line", ScalarType "line"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunBinary "<->"
->           [ScalarType "path", ScalarType "path"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunBinary "<->"
->           [ScalarType "line", ScalarType "box"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunBinary "<#>"
->           [ScalarType "abstime", ScalarType "abstime"]
->           (ScalarType "tinterval")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "oidvector", ScalarType "oidvector"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "money", ScalarType "money"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "float8", ScalarType "float4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "timestamptz", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<" [Pseudo AnyEnum, Pseudo AnyEnum]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "bytea", ScalarType "bytea"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "timestamp", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "tinterval", ScalarType "tinterval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "tsvector", ScalarType "tsvector"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "varbit", ScalarType "varbit"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "int8", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "float4", ScalarType "float4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "path", ScalarType "path"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "bit", ScalarType "bit"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "date", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "bool", ScalarType "bool"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "char", ScalarType "char"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<" [Pseudo Record, Pseudo Record]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "name", ScalarType "name"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "timestamptz", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "interval", ScalarType "interval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "date", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "int8", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "lseg", ScalarType "lseg"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "time", ScalarType "time"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "int2", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "int2", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<" [Pseudo AnyArray, Pseudo AnyArray]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "int8", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "macaddr", ScalarType "macaddr"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "abstime", ScalarType "abstime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "bpchar", ScalarType "bpchar"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "tid", ScalarType "tid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "inet", ScalarType "inet"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "float4", ScalarType "float8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "timestamptz", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "int4", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "uuid", ScalarType "uuid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "timestamp", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "timestamp", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "timetz", ScalarType "timetz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "oid", ScalarType "oid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "date", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "int2", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "int4", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "reltime", ScalarType "reltime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "<"
->           [ScalarType "tsquery", ScalarType "tsquery"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "/"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunBinary "/"
->           [ScalarType "int2", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunBinary "/"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunBinary "/"
->           [ScalarType "int2", ScalarType "int2"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunBinary "/"
->           [ScalarType "money", ScalarType "float4"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunBinary "/"
->           [ScalarType "int8", ScalarType "int2"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunBinary "/"
->           [ScalarType "int4", ScalarType "int2"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunBinary "/"
->           [ScalarType "point", ScalarType "point"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunBinary "/"
->           [ScalarType "circle", ScalarType "point"]
->           (ScalarType "circle")
->           False,
->         CatCreateFunction FunBinary "/"
->           [ScalarType "int4", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunBinary "/"
->           [ScalarType "float8", ScalarType "float4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunBinary "/"
->           [ScalarType "money", ScalarType "int4"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunBinary "/"
->           [ScalarType "path", ScalarType "point"]
->           (ScalarType "path")
->           False,
->         CatCreateFunction FunBinary "/"
->           [ScalarType "interval", ScalarType "float8"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunBinary "/"
->           [ScalarType "int8", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunBinary "/"
->           [ScalarType "int8", ScalarType "int4"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunBinary "/"
->           [ScalarType "int2", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunBinary "/"
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunBinary "/"
->           [ScalarType "float4", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunBinary "/"
->           [ScalarType "money", ScalarType "int2"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunBinary "/"
->           [ScalarType "float4", ScalarType "float4"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunBinary "/"
->           [ScalarType "money", ScalarType "float8"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunBinary "/"
->           [ScalarType "box", ScalarType "point"]
->           (ScalarType "box")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "interval", ScalarType "interval"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "timestamptz", ScalarType "interval"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "timestamptz", ScalarType "timestamptz"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "circle", ScalarType "point"]
->           (ScalarType "circle")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "float8", ScalarType "float4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "float4", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "date", ScalarType "int4"]
->           (ScalarType "date")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "date", ScalarType "date"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "date", ScalarType "interval"]
->           (ScalarType "timestamp")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ArrayType (ScalarType "aclitem"), ScalarType "aclitem"]
->           (ArrayType (ScalarType "aclitem"))
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "money", ScalarType "money"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "inet", ScalarType "int8"]
->           (ScalarType "inet")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "inet", ScalarType "inet"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "box", ScalarType "point"]
->           (ScalarType "box")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "path", ScalarType "point"]
->           (ScalarType "path")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "point", ScalarType "point"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "int2", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "int8", ScalarType "int2"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "int4", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "int8", ScalarType "int4"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "int8", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "time", ScalarType "interval"]
->           (ScalarType "time")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "timetz", ScalarType "interval"]
->           (ScalarType "timetz")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "float4", ScalarType "float4"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "abstime", ScalarType "reltime"]
->           (ScalarType "abstime")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "int4", ScalarType "int2"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "int2", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "int2", ScalarType "int2"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "timestamp", ScalarType "interval"]
->           (ScalarType "timestamp")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "time", ScalarType "time"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunBinary "-"
->           [ScalarType "timestamp", ScalarType "timestamp"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "interval", ScalarType "interval"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "date", ScalarType "time"]
->           (ScalarType "timestamp")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "int4", ScalarType "int2"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "int2", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "int2", ScalarType "int2"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "timetz", ScalarType "interval"]
->           (ScalarType "timetz")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "time", ScalarType "interval"]
->           (ScalarType "time")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "int8", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "int8", ScalarType "int4"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "int4", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "timestamp", ScalarType "interval"]
->           (ScalarType "timestamp")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "time", ScalarType "date"]
->           (ScalarType "timestamp")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "int8", ScalarType "int2"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "date", ScalarType "timetz"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "int2", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "point", ScalarType "point"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "path", ScalarType "path"]
->           (ScalarType "path")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "path", ScalarType "point"]
->           (ScalarType "path")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "box", ScalarType "point"]
->           (ScalarType "box")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "money", ScalarType "money"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "int8", ScalarType "inet"]
->           (ScalarType "inet")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ArrayType (ScalarType "aclitem"), ScalarType "aclitem"]
->           (ArrayType (ScalarType "aclitem"))
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "inet", ScalarType "int8"]
->           (ScalarType "inet")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "interval", ScalarType "date"]
->           (ScalarType "timestamp")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "date", ScalarType "interval"]
->           (ScalarType "timestamp")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "timetz", ScalarType "date"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "interval", ScalarType "timetz"]
->           (ScalarType "timetz")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "interval", ScalarType "timestamp"]
->           (ScalarType "timestamp")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "date", ScalarType "int4"]
->           (ScalarType "date")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "interval", ScalarType "timestamptz"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "int4", ScalarType "date"]
->           (ScalarType "date")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "float4", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "float8", ScalarType "float4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "float4", ScalarType "float4"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "circle", ScalarType "point"]
->           (ScalarType "circle")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "timestamptz", ScalarType "interval"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "abstime", ScalarType "reltime"]
->           (ScalarType "abstime")
->           False,
->         CatCreateFunction FunBinary "+"
->           [ScalarType "interval", ScalarType "time"]
->           (ScalarType "time")
->           False,
->         CatCreateFunction FunBinary "*"
->           [ScalarType "point", ScalarType "point"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunBinary "*"
->           [ScalarType "int2", ScalarType "int2"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunBinary "*"
->           [ScalarType "path", ScalarType "point"]
->           (ScalarType "path")
->           False,
->         CatCreateFunction FunBinary "*"
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunBinary "*"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunBinary "*"
->           [ScalarType "box", ScalarType "point"]
->           (ScalarType "box")
->           False,
->         CatCreateFunction FunBinary "*"
->           [ScalarType "money", ScalarType "float4"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunBinary "*"
->           [ScalarType "float4", ScalarType "money"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunBinary "*"
->           [ScalarType "money", ScalarType "float8"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunBinary "*"
->           [ScalarType "money", ScalarType "int4"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunBinary "*"
->           [ScalarType "money", ScalarType "int2"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunBinary "*"
->           [ScalarType "float8", ScalarType "money"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunBinary "*"
->           [ScalarType "int4", ScalarType "money"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunBinary "*"
->           [ScalarType "int2", ScalarType "money"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunBinary "*"
->           [ScalarType "circle", ScalarType "point"]
->           (ScalarType "circle")
->           False,
->         CatCreateFunction FunBinary "*"
->           [ScalarType "float4", ScalarType "float4"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunBinary "*"
->           [ScalarType "float8", ScalarType "interval"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunBinary "*"
->           [ScalarType "interval", ScalarType "float8"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunBinary "*"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunBinary "*"
->           [ScalarType "int4", ScalarType "int2"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunBinary "*"
->           [ScalarType "int2", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunBinary "*"
->           [ScalarType "int8", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunBinary "*"
->           [ScalarType "int8", ScalarType "int4"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunBinary "*"
->           [ScalarType "float4", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunBinary "*"
->           [ScalarType "int4", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunBinary "*"
->           [ScalarType "int8", ScalarType "int2"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunBinary "*"
->           [ScalarType "int2", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunBinary "*"
->           [ScalarType "float8", ScalarType "float4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunBinary "&>"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "&>"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "&>"
->           [ScalarType "polygon", ScalarType "polygon"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "&<|"
->           [ScalarType "polygon", ScalarType "polygon"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "&<|"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "&<|"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "&<"
->           [ScalarType "polygon", ScalarType "polygon"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "&<"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "&<"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "&&" [Pseudo AnyArray, Pseudo AnyArray]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "&&"
->           [ScalarType "tinterval", ScalarType "tinterval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "&&"
->           [ScalarType "polygon", ScalarType "polygon"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "&&"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "&&"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "&&"
->           [ScalarType "tsquery", ScalarType "tsquery"]
->           (ScalarType "tsquery")
->           False,
->         CatCreateFunction FunBinary "&"
->           [ScalarType "inet", ScalarType "inet"]
->           (ScalarType "inet")
->           False,
->         CatCreateFunction FunBinary "&"
->           [ScalarType "bit", ScalarType "bit"]
->           (ScalarType "bit")
->           False,
->         CatCreateFunction FunBinary "&"
->           [ScalarType "int8", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunBinary "&"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunBinary "&"
->           [ScalarType "int2", ScalarType "int2"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunBinary "%"
->           [ScalarType "int2", ScalarType "int2"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunBinary "%"
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunBinary "%"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunBinary "%"
->           [ScalarType "int8", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunBinary "#>="
->           [ScalarType "tinterval", ScalarType "reltime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "#>"
->           [ScalarType "tinterval", ScalarType "reltime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "#="
->           [ScalarType "tinterval", ScalarType "reltime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "#<>"
->           [ScalarType "tinterval", ScalarType "reltime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "#<="
->           [ScalarType "tinterval", ScalarType "reltime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "#<"
->           [ScalarType "tinterval", ScalarType "reltime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "##"
->           [ScalarType "line", ScalarType "lseg"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunBinary "##"
->           [ScalarType "lseg", ScalarType "line"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunBinary "##"
->           [ScalarType "point", ScalarType "box"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunBinary "##"
->           [ScalarType "lseg", ScalarType "box"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunBinary "##"
->           [ScalarType "line", ScalarType "box"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunBinary "##"
->           [ScalarType "point", ScalarType "line"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunBinary "##"
->           [ScalarType "point", ScalarType "lseg"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunBinary "##"
->           [ScalarType "lseg", ScalarType "lseg"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunBinary "#"
->           [ScalarType "bit", ScalarType "bit"]
->           (ScalarType "bit")
->           False,
->         CatCreateFunction FunBinary "#"
->           [ScalarType "line", ScalarType "line"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunBinary "#"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "box")
->           False,
->         CatCreateFunction FunBinary "#"
->           [ScalarType "int2", ScalarType "int2"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunBinary "#"
->           [ScalarType "int8", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunBinary "#"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunBinary "#"
->           [ScalarType "lseg", ScalarType "lseg"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunBinary "!~~*"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "!~~*"
->           [ScalarType "bpchar", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "!~~*"
->           [ScalarType "name", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "!~~"
->           [ScalarType "bytea", ScalarType "bytea"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "!~~"
->           [ScalarType "bpchar", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "!~~"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "!~~"
->           [ScalarType "name", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "!~*"
->           [ScalarType "bpchar", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "!~*"
->           [ScalarType "name", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "!~*"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "!~"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "!~"
->           [ScalarType "name", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunBinary "!~"
->           [ScalarType "bpchar", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "RI_FKey_cascade_del" [] (Pseudo Trigger)
->           False,
->         CatCreateFunction FunName "RI_FKey_cascade_upd" [] (Pseudo Trigger)
->           False,
->         CatCreateFunction FunName "RI_FKey_check_ins" [] (Pseudo Trigger)
->           False,
->         CatCreateFunction FunName "RI_FKey_check_upd" [] (Pseudo Trigger)
->           False,
->         CatCreateFunction FunName "RI_FKey_noaction_del" []
->           (Pseudo Trigger)
->           False,
->         CatCreateFunction FunName "RI_FKey_noaction_upd" []
->           (Pseudo Trigger)
->           False,
->         CatCreateFunction FunName "RI_FKey_restrict_del" []
->           (Pseudo Trigger)
->           False,
->         CatCreateFunction FunName "RI_FKey_restrict_upd" []
->           (Pseudo Trigger)
->           False,
->         CatCreateFunction FunName "RI_FKey_setdefault_del" []
->           (Pseudo Trigger)
->           False,
->         CatCreateFunction FunName "RI_FKey_setdefault_upd" []
->           (Pseudo Trigger)
->           False,
->         CatCreateFunction FunName "RI_FKey_setnull_del" [] (Pseudo Trigger)
->           False,
->         CatCreateFunction FunName "RI_FKey_setnull_upd" [] (Pseudo Trigger)
->           False,
->         CatCreateFunction FunName "abbrev" [ScalarType "cidr"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "abbrev" [ScalarType "inet"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "abs" [ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "abs" [ScalarType "int2"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunName "abs" [ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "abs" [ScalarType "float4"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunName "abs" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "abs" [ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "abstime" [ScalarType "timestamp"]
->           (ScalarType "abstime")
->           False,
->         CatCreateFunction FunName "abstime" [ScalarType "timestamptz"]
->           (ScalarType "abstime")
->           False,
->         CatCreateFunction FunName "abstimeeq"
->           [ScalarType "abstime", ScalarType "abstime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "abstimege"
->           [ScalarType "abstime", ScalarType "abstime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "abstimegt"
->           [ScalarType "abstime", ScalarType "abstime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "abstimein" [Pseudo Cstring]
->           (ScalarType "abstime")
->           False,
->         CatCreateFunction FunName "abstimele"
->           [ScalarType "abstime", ScalarType "abstime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "abstimelt"
->           [ScalarType "abstime", ScalarType "abstime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "abstimene"
->           [ScalarType "abstime", ScalarType "abstime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "abstimeout" [ScalarType "abstime"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "abstimerecv" [Pseudo Internal]
->           (ScalarType "abstime")
->           False,
->         CatCreateFunction FunName "abstimesend" [ScalarType "abstime"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "aclcontains"
->           [ArrayType (ScalarType "aclitem"), ScalarType "aclitem"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "aclinsert"
->           [ArrayType (ScalarType "aclitem"), ScalarType "aclitem"]
->           (ArrayType (ScalarType "aclitem"))
->           False,
->         CatCreateFunction FunName "aclitemeq"
->           [ScalarType "aclitem", ScalarType "aclitem"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "aclitemin" [Pseudo Cstring]
->           (ScalarType "aclitem")
->           False,
->         CatCreateFunction FunName "aclitemout" [ScalarType "aclitem"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "aclremove"
->           [ArrayType (ScalarType "aclitem"), ScalarType "aclitem"]
->           (ArrayType (ScalarType "aclitem"))
->           False,
->         CatCreateFunction FunName "acos" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "age" [ScalarType "xid"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "age" [ScalarType "timestamp"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunName "age" [ScalarType "timestamptz"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunName "age"
->           [ScalarType "timestamp", ScalarType "timestamp"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunName "age"
->           [ScalarType "timestamptz", ScalarType "timestamptz"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunName "any_in" [Pseudo Cstring] (Pseudo Any)
->           False,
->         CatCreateFunction FunName "any_out" [Pseudo Any] (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "anyarray_in" [Pseudo Cstring]
->           (Pseudo AnyArray)
->           False,
->         CatCreateFunction FunName "anyarray_out" [Pseudo AnyArray]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "anyarray_recv" [Pseudo Internal]
->           (Pseudo AnyArray)
->           False,
->         CatCreateFunction FunName "anyarray_send" [Pseudo AnyArray]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "anyelement_in" [Pseudo Cstring]
->           (Pseudo AnyElement)
->           False,
->         CatCreateFunction FunName "anyelement_out" [Pseudo AnyElement]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "anyenum_in" [Pseudo Cstring]
->           (Pseudo AnyEnum)
->           False,
->         CatCreateFunction FunName "anyenum_out" [Pseudo AnyEnum]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "anynonarray_in" [Pseudo Cstring]
->           (Pseudo AnyNonArray)
->           False,
->         CatCreateFunction FunName "anynonarray_out" [Pseudo AnyNonArray]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "anytextcat"
->           [Pseudo AnyNonArray, ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "area" [ScalarType "path"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "area" [ScalarType "box"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "area" [ScalarType "circle"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "areajoinsel"
->           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
->            ScalarType "int2", Pseudo Internal]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "areasel"
->           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
->            ScalarType "int4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "array_agg_finalfn" [Pseudo Internal]
->           (Pseudo AnyArray)
->           False,
->         CatCreateFunction FunName "array_agg_transfn"
->           [Pseudo Internal, Pseudo AnyElement]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "array_append"
->           [Pseudo AnyArray, Pseudo AnyElement]
->           (Pseudo AnyArray)
->           False,
->         CatCreateFunction FunName "array_cat"
->           [Pseudo AnyArray, Pseudo AnyArray]
->           (Pseudo AnyArray)
->           False,
->         CatCreateFunction FunName "array_dims" [Pseudo AnyArray]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "array_eq"
->           [Pseudo AnyArray, Pseudo AnyArray]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "array_fill"
->           [Pseudo AnyElement, ArrayType (ScalarType "int4")]
->           (Pseudo AnyArray)
->           False,
->         CatCreateFunction FunName "array_fill"
->           [Pseudo AnyElement, ArrayType (ScalarType "int4"),
->            ArrayType (ScalarType "int4")]
->           (Pseudo AnyArray)
->           False,
->         CatCreateFunction FunName "array_ge"
->           [Pseudo AnyArray, Pseudo AnyArray]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "array_gt"
->           [Pseudo AnyArray, Pseudo AnyArray]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "array_in"
->           [Pseudo Cstring, ScalarType "oid", ScalarType "int4"]
->           (Pseudo AnyArray)
->           False,
->         CatCreateFunction FunName "array_larger"
->           [Pseudo AnyArray, Pseudo AnyArray]
->           (Pseudo AnyArray)
->           False,
->         CatCreateFunction FunName "array_le"
->           [Pseudo AnyArray, Pseudo AnyArray]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "array_length"
->           [Pseudo AnyArray, ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "array_lower"
->           [Pseudo AnyArray, ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "array_lt"
->           [Pseudo AnyArray, Pseudo AnyArray]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "array_ndims" [Pseudo AnyArray]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "array_ne"
->           [Pseudo AnyArray, Pseudo AnyArray]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "array_out" [Pseudo AnyArray]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "array_prepend"
->           [Pseudo AnyElement, Pseudo AnyArray]
->           (Pseudo AnyArray)
->           False,
->         CatCreateFunction FunName "array_recv"
->           [Pseudo Internal, ScalarType "oid", ScalarType "int4"]
->           (Pseudo AnyArray)
->           False,
->         CatCreateFunction FunName "array_send" [Pseudo AnyArray]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "array_smaller"
->           [Pseudo AnyArray, Pseudo AnyArray]
->           (Pseudo AnyArray)
->           False,
->         CatCreateFunction FunName "array_to_string"
->           [Pseudo AnyArray, ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "array_upper"
->           [Pseudo AnyArray, ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "arraycontained"
->           [Pseudo AnyArray, Pseudo AnyArray]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "arraycontains"
->           [Pseudo AnyArray, Pseudo AnyArray]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "arrayoverlap"
->           [Pseudo AnyArray, Pseudo AnyArray]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "ascii" [ScalarType "text"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "ascii_to_mic"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "ascii_to_utf8"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "asin" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "atan" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "atan2"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "big5_to_euc_tw"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "big5_to_mic"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "big5_to_utf8"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "bit"
->           [ScalarType "int8", ScalarType "int4"]
->           (ScalarType "bit")
->           False,
->         CatCreateFunction FunName "bit"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "bit")
->           False,
->         CatCreateFunction FunName "bit"
->           [ScalarType "bit", ScalarType "int4", ScalarType "bool"]
->           (ScalarType "bit")
->           False,
->         CatCreateFunction FunName "bit_in"
->           [Pseudo Cstring, ScalarType "oid", ScalarType "int4"]
->           (ScalarType "bit")
->           False,
->         CatCreateFunction FunName "bit_length" [ScalarType "bytea"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "bit_length" [ScalarType "text"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "bit_length" [ScalarType "bit"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "bit_out" [ScalarType "bit"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "bit_recv"
->           [Pseudo Internal, ScalarType "oid", ScalarType "int4"]
->           (ScalarType "bit")
->           False,
->         CatCreateFunction FunName "bit_send" [ScalarType "bit"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "bitand"
->           [ScalarType "bit", ScalarType "bit"]
->           (ScalarType "bit")
->           False,
->         CatCreateFunction FunName "bitcat"
->           [ScalarType "varbit", ScalarType "varbit"]
->           (ScalarType "varbit")
->           False,
->         CatCreateFunction FunName "bitcmp"
->           [ScalarType "bit", ScalarType "bit"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "biteq"
->           [ScalarType "bit", ScalarType "bit"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "bitge"
->           [ScalarType "bit", ScalarType "bit"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "bitgt"
->           [ScalarType "bit", ScalarType "bit"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "bitle"
->           [ScalarType "bit", ScalarType "bit"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "bitlt"
->           [ScalarType "bit", ScalarType "bit"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "bitne"
->           [ScalarType "bit", ScalarType "bit"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "bitnot" [ScalarType "bit"]
->           (ScalarType "bit")
->           False,
->         CatCreateFunction FunName "bitor"
->           [ScalarType "bit", ScalarType "bit"]
->           (ScalarType "bit")
->           False,
->         CatCreateFunction FunName "bitshiftleft"
->           [ScalarType "bit", ScalarType "int4"]
->           (ScalarType "bit")
->           False,
->         CatCreateFunction FunName "bitshiftright"
->           [ScalarType "bit", ScalarType "int4"]
->           (ScalarType "bit")
->           False,
->         CatCreateFunction FunName "bittypmodin"
->           [ArrayType (Pseudo Cstring)]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "bittypmodout" [ScalarType "int4"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "bitxor"
->           [ScalarType "bit", ScalarType "bit"]
->           (ScalarType "bit")
->           False,
->         CatCreateFunction FunName "bool" [ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "booland_statefunc"
->           [ScalarType "bool", ScalarType "bool"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "booleq"
->           [ScalarType "bool", ScalarType "bool"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "boolge"
->           [ScalarType "bool", ScalarType "bool"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "boolgt"
->           [ScalarType "bool", ScalarType "bool"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "boolin" [Pseudo Cstring]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "boolle"
->           [ScalarType "bool", ScalarType "bool"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "boollt"
->           [ScalarType "bool", ScalarType "bool"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "boolne"
->           [ScalarType "bool", ScalarType "bool"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "boolor_statefunc"
->           [ScalarType "bool", ScalarType "bool"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "boolout" [ScalarType "bool"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "boolrecv" [Pseudo Internal]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "boolsend" [ScalarType "bool"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "box" [ScalarType "polygon"]
->           (ScalarType "box")
->           False,
->         CatCreateFunction FunName "box" [ScalarType "circle"]
->           (ScalarType "box")
->           False,
->         CatCreateFunction FunName "box"
->           [ScalarType "point", ScalarType "point"]
->           (ScalarType "box")
->           False,
->         CatCreateFunction FunName "box_above"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "box_above_eq"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "box_add"
->           [ScalarType "box", ScalarType "point"]
->           (ScalarType "box")
->           False,
->         CatCreateFunction FunName "box_below"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "box_below_eq"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "box_center" [ScalarType "box"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunName "box_contain"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "box_contained"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "box_distance"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "box_div"
->           [ScalarType "box", ScalarType "point"]
->           (ScalarType "box")
->           False,
->         CatCreateFunction FunName "box_eq"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "box_ge"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "box_gt"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "box_in" [Pseudo Cstring]
->           (ScalarType "box")
->           False,
->         CatCreateFunction FunName "box_intersect"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "box")
->           False,
->         CatCreateFunction FunName "box_le"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "box_left"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "box_lt"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "box_mul"
->           [ScalarType "box", ScalarType "point"]
->           (ScalarType "box")
->           False,
->         CatCreateFunction FunName "box_out" [ScalarType "box"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "box_overabove"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "box_overbelow"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "box_overlap"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "box_overleft"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "box_overright"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "box_recv" [Pseudo Internal]
->           (ScalarType "box")
->           False,
->         CatCreateFunction FunName "box_right"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "box_same"
->           [ScalarType "box", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "box_send" [ScalarType "box"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "box_sub"
->           [ScalarType "box", ScalarType "point"]
->           (ScalarType "box")
->           False,
->         CatCreateFunction FunName "bpchar" [ScalarType "char"]
->           (ScalarType "bpchar")
->           False,
->         CatCreateFunction FunName "bpchar" [ScalarType "name"]
->           (ScalarType "bpchar")
->           False,
->         CatCreateFunction FunName "bpchar"
->           [ScalarType "bpchar", ScalarType "int4", ScalarType "bool"]
->           (ScalarType "bpchar")
->           False,
->         CatCreateFunction FunName "bpchar_larger"
->           [ScalarType "bpchar", ScalarType "bpchar"]
->           (ScalarType "bpchar")
->           False,
->         CatCreateFunction FunName "bpchar_pattern_ge"
->           [ScalarType "bpchar", ScalarType "bpchar"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "bpchar_pattern_gt"
->           [ScalarType "bpchar", ScalarType "bpchar"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "bpchar_pattern_le"
->           [ScalarType "bpchar", ScalarType "bpchar"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "bpchar_pattern_lt"
->           [ScalarType "bpchar", ScalarType "bpchar"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "bpchar_smaller"
->           [ScalarType "bpchar", ScalarType "bpchar"]
->           (ScalarType "bpchar")
->           False,
->         CatCreateFunction FunName "bpcharcmp"
->           [ScalarType "bpchar", ScalarType "bpchar"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "bpchareq"
->           [ScalarType "bpchar", ScalarType "bpchar"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "bpcharge"
->           [ScalarType "bpchar", ScalarType "bpchar"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "bpchargt"
->           [ScalarType "bpchar", ScalarType "bpchar"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "bpchariclike"
->           [ScalarType "bpchar", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "bpcharicnlike"
->           [ScalarType "bpchar", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "bpcharicregexeq"
->           [ScalarType "bpchar", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "bpcharicregexne"
->           [ScalarType "bpchar", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "bpcharin"
->           [Pseudo Cstring, ScalarType "oid", ScalarType "int4"]
->           (ScalarType "bpchar")
->           False,
->         CatCreateFunction FunName "bpcharle"
->           [ScalarType "bpchar", ScalarType "bpchar"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "bpcharlike"
->           [ScalarType "bpchar", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "bpcharlt"
->           [ScalarType "bpchar", ScalarType "bpchar"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "bpcharne"
->           [ScalarType "bpchar", ScalarType "bpchar"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "bpcharnlike"
->           [ScalarType "bpchar", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "bpcharout" [ScalarType "bpchar"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "bpcharrecv"
->           [Pseudo Internal, ScalarType "oid", ScalarType "int4"]
->           (ScalarType "bpchar")
->           False,
->         CatCreateFunction FunName "bpcharregexeq"
->           [ScalarType "bpchar", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "bpcharregexne"
->           [ScalarType "bpchar", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "bpcharsend" [ScalarType "bpchar"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "bpchartypmodin"
->           [ArrayType (Pseudo Cstring)]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "bpchartypmodout" [ScalarType "int4"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "broadcast" [ScalarType "inet"]
->           (ScalarType "inet")
->           False,
->         CatCreateFunction FunName "btabstimecmp"
->           [ScalarType "abstime", ScalarType "abstime"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "btarraycmp"
->           [Pseudo AnyArray, Pseudo AnyArray]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "btbeginscan"
->           [Pseudo Internal, Pseudo Internal, Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "btboolcmp"
->           [ScalarType "bool", ScalarType "bool"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "btbpchar_pattern_cmp"
->           [ScalarType "bpchar", ScalarType "bpchar"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "btbuild"
->           [Pseudo Internal, Pseudo Internal, Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "btbulkdelete"
->           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
->            Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "btcharcmp"
->           [ScalarType "char", ScalarType "char"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "btcostestimate"
->           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
->            Pseudo Internal, Pseudo Internal, Pseudo Internal, Pseudo Internal,
->            Pseudo Internal]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "btendscan" [Pseudo Internal]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "btfloat48cmp"
->           [ScalarType "float4", ScalarType "float8"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "btfloat4cmp"
->           [ScalarType "float4", ScalarType "float4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "btfloat84cmp"
->           [ScalarType "float8", ScalarType "float4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "btfloat8cmp"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "btgetbitmap"
->           [Pseudo Internal, Pseudo Internal]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "btgettuple"
->           [Pseudo Internal, Pseudo Internal]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "btinsert"
->           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
->            Pseudo Internal, Pseudo Internal, Pseudo Internal]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "btint24cmp"
->           [ScalarType "int2", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "btint28cmp"
->           [ScalarType "int2", ScalarType "int8"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "btint2cmp"
->           [ScalarType "int2", ScalarType "int2"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "btint42cmp"
->           [ScalarType "int4", ScalarType "int2"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "btint48cmp"
->           [ScalarType "int4", ScalarType "int8"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "btint4cmp"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "btint82cmp"
->           [ScalarType "int8", ScalarType "int2"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "btint84cmp"
->           [ScalarType "int8", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "btint8cmp"
->           [ScalarType "int8", ScalarType "int8"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "btmarkpos" [Pseudo Internal]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "btnamecmp"
->           [ScalarType "name", ScalarType "name"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "btoidcmp"
->           [ScalarType "oid", ScalarType "oid"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "btoidvectorcmp"
->           [ScalarType "oidvector", ScalarType "oidvector"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "btoptions"
->           [ArrayType (ScalarType "text"), ScalarType "bool"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "btrecordcmp"
->           [Pseudo Record, Pseudo Record]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "btreltimecmp"
->           [ScalarType "reltime", ScalarType "reltime"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "btrescan"
->           [Pseudo Internal, Pseudo Internal]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "btrestrpos" [Pseudo Internal]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "btrim" [ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "btrim"
->           [ScalarType "bytea", ScalarType "bytea"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "btrim"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "bttext_pattern_cmp"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "bttextcmp"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "bttidcmp"
->           [ScalarType "tid", ScalarType "tid"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "bttintervalcmp"
->           [ScalarType "tinterval", ScalarType "tinterval"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "btvacuumcleanup"
->           [Pseudo Internal, Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "byteacat"
->           [ScalarType "bytea", ScalarType "bytea"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "byteacmp"
->           [ScalarType "bytea", ScalarType "bytea"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "byteaeq"
->           [ScalarType "bytea", ScalarType "bytea"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "byteage"
->           [ScalarType "bytea", ScalarType "bytea"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "byteagt"
->           [ScalarType "bytea", ScalarType "bytea"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "byteain" [Pseudo Cstring]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "byteale"
->           [ScalarType "bytea", ScalarType "bytea"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "bytealike"
->           [ScalarType "bytea", ScalarType "bytea"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "bytealt"
->           [ScalarType "bytea", ScalarType "bytea"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "byteane"
->           [ScalarType "bytea", ScalarType "bytea"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "byteanlike"
->           [ScalarType "bytea", ScalarType "bytea"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "byteaout" [ScalarType "bytea"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "bytearecv" [Pseudo Internal]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "byteasend" [ScalarType "bytea"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "cash_cmp"
->           [ScalarType "money", ScalarType "money"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "cash_div_flt4"
->           [ScalarType "money", ScalarType "float4"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunName "cash_div_flt8"
->           [ScalarType "money", ScalarType "float8"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunName "cash_div_int2"
->           [ScalarType "money", ScalarType "int2"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunName "cash_div_int4"
->           [ScalarType "money", ScalarType "int4"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunName "cash_eq"
->           [ScalarType "money", ScalarType "money"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "cash_ge"
->           [ScalarType "money", ScalarType "money"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "cash_gt"
->           [ScalarType "money", ScalarType "money"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "cash_in" [Pseudo Cstring]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunName "cash_le"
->           [ScalarType "money", ScalarType "money"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "cash_lt"
->           [ScalarType "money", ScalarType "money"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "cash_mi"
->           [ScalarType "money", ScalarType "money"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunName "cash_mul_flt4"
->           [ScalarType "money", ScalarType "float4"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunName "cash_mul_flt8"
->           [ScalarType "money", ScalarType "float8"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunName "cash_mul_int2"
->           [ScalarType "money", ScalarType "int2"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunName "cash_mul_int4"
->           [ScalarType "money", ScalarType "int4"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunName "cash_ne"
->           [ScalarType "money", ScalarType "money"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "cash_out" [ScalarType "money"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "cash_pl"
->           [ScalarType "money", ScalarType "money"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunName "cash_recv" [Pseudo Internal]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunName "cash_send" [ScalarType "money"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "cash_words" [ScalarType "money"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "cashlarger"
->           [ScalarType "money", ScalarType "money"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunName "cashsmaller"
->           [ScalarType "money", ScalarType "money"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunName "cbrt" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "ceil" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "ceil" [ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "ceiling" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "ceiling" [ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "center" [ScalarType "box"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunName "center" [ScalarType "circle"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunName "char" [ScalarType "int4"]
->           (ScalarType "char")
->           False,
->         CatCreateFunction FunName "char" [ScalarType "text"]
->           (ScalarType "char")
->           False,
->         CatCreateFunction FunName "char_length" [ScalarType "text"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "char_length" [ScalarType "bpchar"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "character_length" [ScalarType "text"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "character_length" [ScalarType "bpchar"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "chareq"
->           [ScalarType "char", ScalarType "char"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "charge"
->           [ScalarType "char", ScalarType "char"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "chargt"
->           [ScalarType "char", ScalarType "char"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "charin" [Pseudo Cstring]
->           (ScalarType "char")
->           False,
->         CatCreateFunction FunName "charle"
->           [ScalarType "char", ScalarType "char"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "charlt"
->           [ScalarType "char", ScalarType "char"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "charne"
->           [ScalarType "char", ScalarType "char"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "charout" [ScalarType "char"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "charrecv" [Pseudo Internal]
->           (ScalarType "char")
->           False,
->         CatCreateFunction FunName "charsend" [ScalarType "char"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "chr" [ScalarType "int4"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "cideq"
->           [ScalarType "cid", ScalarType "cid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "cidin" [Pseudo Cstring]
->           (ScalarType "cid")
->           False,
->         CatCreateFunction FunName "cidout" [ScalarType "cid"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "cidr" [ScalarType "inet"]
->           (ScalarType "cidr")
->           False,
->         CatCreateFunction FunName "cidr_in" [Pseudo Cstring]
->           (ScalarType "cidr")
->           False,
->         CatCreateFunction FunName "cidr_out" [ScalarType "cidr"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "cidr_recv" [Pseudo Internal]
->           (ScalarType "cidr")
->           False,
->         CatCreateFunction FunName "cidr_send" [ScalarType "cidr"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "cidrecv" [Pseudo Internal]
->           (ScalarType "cid")
->           False,
->         CatCreateFunction FunName "cidsend" [ScalarType "cid"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "circle" [ScalarType "box"]
->           (ScalarType "circle")
->           False,
->         CatCreateFunction FunName "circle" [ScalarType "polygon"]
->           (ScalarType "circle")
->           False,
->         CatCreateFunction FunName "circle"
->           [ScalarType "point", ScalarType "float8"]
->           (ScalarType "circle")
->           False,
->         CatCreateFunction FunName "circle_above"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "circle_add_pt"
->           [ScalarType "circle", ScalarType "point"]
->           (ScalarType "circle")
->           False,
->         CatCreateFunction FunName "circle_below"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "circle_center" [ScalarType "circle"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunName "circle_contain"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "circle_contain_pt"
->           [ScalarType "circle", ScalarType "point"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "circle_contained"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "circle_distance"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "circle_div_pt"
->           [ScalarType "circle", ScalarType "point"]
->           (ScalarType "circle")
->           False,
->         CatCreateFunction FunName "circle_eq"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "circle_ge"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "circle_gt"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "circle_in" [Pseudo Cstring]
->           (ScalarType "circle")
->           False,
->         CatCreateFunction FunName "circle_le"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "circle_left"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "circle_lt"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "circle_mul_pt"
->           [ScalarType "circle", ScalarType "point"]
->           (ScalarType "circle")
->           False,
->         CatCreateFunction FunName "circle_ne"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "circle_out" [ScalarType "circle"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "circle_overabove"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "circle_overbelow"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "circle_overlap"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "circle_overleft"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "circle_overright"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "circle_recv" [Pseudo Internal]
->           (ScalarType "circle")
->           False,
->         CatCreateFunction FunName "circle_right"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "circle_same"
->           [ScalarType "circle", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "circle_send" [ScalarType "circle"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "circle_sub_pt"
->           [ScalarType "circle", ScalarType "point"]
->           (ScalarType "circle")
->           False,
->         CatCreateFunction FunName "clock_timestamp" []
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName "close_lb"
->           [ScalarType "line", ScalarType "box"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunName "close_ls"
->           [ScalarType "line", ScalarType "lseg"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunName "close_lseg"
->           [ScalarType "lseg", ScalarType "lseg"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunName "close_pb"
->           [ScalarType "point", ScalarType "box"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunName "close_pl"
->           [ScalarType "point", ScalarType "line"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunName "close_ps"
->           [ScalarType "point", ScalarType "lseg"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunName "close_sb"
->           [ScalarType "lseg", ScalarType "box"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunName "close_sl"
->           [ScalarType "lseg", ScalarType "line"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunName "col_description"
->           [ScalarType "oid", ScalarType "int4"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "contjoinsel"
->           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
->            ScalarType "int2", Pseudo Internal]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "contsel"
->           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
->            ScalarType "int4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "convert"
->           [ScalarType "bytea", ScalarType "name", ScalarType "name"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "convert_from"
->           [ScalarType "bytea", ScalarType "name"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "convert_to"
->           [ScalarType "text", ScalarType "name"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "cos" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "cot" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "cstring_in" [Pseudo Cstring]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "cstring_out" [Pseudo Cstring]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "cstring_recv" [Pseudo Internal]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "cstring_send" [Pseudo Cstring]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "current_database" [] (ScalarType "name")
->           False,
->         CatCreateFunction FunName "current_query" [] (ScalarType "text")
->           False,
->         CatCreateFunction FunName "current_schema" [] (ScalarType "name")
->           False,
->         CatCreateFunction FunName "current_schemas" [ScalarType "bool"]
->           (ArrayType (ScalarType "name"))
->           False,
->         CatCreateFunction FunName "current_setting" [ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "current_user" [] (ScalarType "name")
->           False,
->         CatCreateFunction FunName "currtid"
->           [ScalarType "oid", ScalarType "tid"]
->           (ScalarType "tid")
->           False,
->         CatCreateFunction FunName "currtid2"
->           [ScalarType "text", ScalarType "tid"]
->           (ScalarType "tid")
->           False,
->         CatCreateFunction FunName "currval" [ScalarType "regclass"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "cursor_to_xml"
->           [ScalarType "refcursor", ScalarType "int4", ScalarType "bool",
->            ScalarType "bool", ScalarType "text"]
->           (ScalarType "xml")
->           False,
->         CatCreateFunction FunName "cursor_to_xmlschema"
->           [ScalarType "refcursor", ScalarType "bool", ScalarType "bool",
->            ScalarType "text"]
->           (ScalarType "xml")
->           False,
->         CatCreateFunction FunName "database_to_xml"
->           [ScalarType "bool", ScalarType "bool", ScalarType "text"]
->           (ScalarType "xml")
->           False,
->         CatCreateFunction FunName "database_to_xml_and_xmlschema"
->           [ScalarType "bool", ScalarType "bool", ScalarType "text"]
->           (ScalarType "xml")
->           False,
->         CatCreateFunction FunName "database_to_xmlschema"
->           [ScalarType "bool", ScalarType "bool", ScalarType "text"]
->           (ScalarType "xml")
->           False,
->         CatCreateFunction FunName "date" [ScalarType "abstime"]
->           (ScalarType "date")
->           False,
->         CatCreateFunction FunName "date" [ScalarType "timestamp"]
->           (ScalarType "date")
->           False,
->         CatCreateFunction FunName "date" [ScalarType "timestamptz"]
->           (ScalarType "date")
->           False,
->         CatCreateFunction FunName "date_cmp"
->           [ScalarType "date", ScalarType "date"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "date_cmp_timestamp"
->           [ScalarType "date", ScalarType "timestamp"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "date_cmp_timestamptz"
->           [ScalarType "date", ScalarType "timestamptz"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "date_eq"
->           [ScalarType "date", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "date_eq_timestamp"
->           [ScalarType "date", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "date_eq_timestamptz"
->           [ScalarType "date", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "date_ge"
->           [ScalarType "date", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "date_ge_timestamp"
->           [ScalarType "date", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "date_ge_timestamptz"
->           [ScalarType "date", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "date_gt"
->           [ScalarType "date", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "date_gt_timestamp"
->           [ScalarType "date", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "date_gt_timestamptz"
->           [ScalarType "date", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "date_in" [Pseudo Cstring]
->           (ScalarType "date")
->           False,
->         CatCreateFunction FunName "date_larger"
->           [ScalarType "date", ScalarType "date"]
->           (ScalarType "date")
->           False,
->         CatCreateFunction FunName "date_le"
->           [ScalarType "date", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "date_le_timestamp"
->           [ScalarType "date", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "date_le_timestamptz"
->           [ScalarType "date", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "date_lt"
->           [ScalarType "date", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "date_lt_timestamp"
->           [ScalarType "date", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "date_lt_timestamptz"
->           [ScalarType "date", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "date_mi"
->           [ScalarType "date", ScalarType "date"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "date_mi_interval"
->           [ScalarType "date", ScalarType "interval"]
->           (ScalarType "timestamp")
->           False,
->         CatCreateFunction FunName "date_mii"
->           [ScalarType "date", ScalarType "int4"]
->           (ScalarType "date")
->           False,
->         CatCreateFunction FunName "date_ne"
->           [ScalarType "date", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "date_ne_timestamp"
->           [ScalarType "date", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "date_ne_timestamptz"
->           [ScalarType "date", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "date_out" [ScalarType "date"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "date_part"
->           [ScalarType "text", ScalarType "abstime"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "date_part"
->           [ScalarType "text", ScalarType "reltime"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "date_part"
->           [ScalarType "text", ScalarType "date"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "date_part"
->           [ScalarType "text", ScalarType "time"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "date_part"
->           [ScalarType "text", ScalarType "timestamp"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "date_part"
->           [ScalarType "text", ScalarType "timestamptz"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "date_part"
->           [ScalarType "text", ScalarType "interval"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "date_part"
->           [ScalarType "text", ScalarType "timetz"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "date_pl_interval"
->           [ScalarType "date", ScalarType "interval"]
->           (ScalarType "timestamp")
->           False,
->         CatCreateFunction FunName "date_pli"
->           [ScalarType "date", ScalarType "int4"]
->           (ScalarType "date")
->           False,
->         CatCreateFunction FunName "date_recv" [Pseudo Internal]
->           (ScalarType "date")
->           False,
->         CatCreateFunction FunName "date_send" [ScalarType "date"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "date_smaller"
->           [ScalarType "date", ScalarType "date"]
->           (ScalarType "date")
->           False,
->         CatCreateFunction FunName "date_trunc"
->           [ScalarType "text", ScalarType "timestamp"]
->           (ScalarType "timestamp")
->           False,
->         CatCreateFunction FunName "date_trunc"
->           [ScalarType "text", ScalarType "timestamptz"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName "date_trunc"
->           [ScalarType "text", ScalarType "interval"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunName "datetime_pl"
->           [ScalarType "date", ScalarType "time"]
->           (ScalarType "timestamp")
->           False,
->         CatCreateFunction FunName "datetimetz_pl"
->           [ScalarType "date", ScalarType "timetz"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName "dcbrt" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "decode"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "degrees" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "dexp" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "diagonal" [ScalarType "box"]
->           (ScalarType "lseg")
->           False,
->         CatCreateFunction FunName "diameter" [ScalarType "circle"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "dispell_init" [Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "dispell_lexize"
->           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
->            Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "dist_cpoly"
->           [ScalarType "circle", ScalarType "polygon"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "dist_lb"
->           [ScalarType "line", ScalarType "box"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "dist_pb"
->           [ScalarType "point", ScalarType "box"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "dist_pc"
->           [ScalarType "point", ScalarType "circle"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "dist_pl"
->           [ScalarType "point", ScalarType "line"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "dist_ppath"
->           [ScalarType "point", ScalarType "path"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "dist_ps"
->           [ScalarType "point", ScalarType "lseg"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "dist_sb"
->           [ScalarType "lseg", ScalarType "box"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "dist_sl"
->           [ScalarType "lseg", ScalarType "line"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "div"
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "dlog1" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "dlog10" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "domain_in"
->           [Pseudo Cstring, ScalarType "oid", ScalarType "int4"]
->           (Pseudo Any)
->           False,
->         CatCreateFunction FunName "domain_recv"
->           [Pseudo Internal, ScalarType "oid", ScalarType "int4"]
->           (Pseudo Any)
->           False,
->         CatCreateFunction FunName "dpow"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "dround" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "dsimple_init" [Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "dsimple_lexize"
->           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
->            Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "dsnowball_init" [Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "dsnowball_lexize"
->           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
->            Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "dsqrt" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "dsynonym_init" [Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "dsynonym_lexize"
->           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
->            Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "dtrunc" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "encode"
->           [ScalarType "bytea", ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "enum_cmp"
->           [Pseudo AnyEnum, Pseudo AnyEnum]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "enum_eq"
->           [Pseudo AnyEnum, Pseudo AnyEnum]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "enum_first" [Pseudo AnyEnum]
->           (Pseudo AnyEnum)
->           False,
->         CatCreateFunction FunName "enum_ge"
->           [Pseudo AnyEnum, Pseudo AnyEnum]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "enum_gt"
->           [Pseudo AnyEnum, Pseudo AnyEnum]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "enum_in"
->           [Pseudo Cstring, ScalarType "oid"]
->           (Pseudo AnyEnum)
->           False,
->         CatCreateFunction FunName "enum_larger"
->           [Pseudo AnyEnum, Pseudo AnyEnum]
->           (Pseudo AnyEnum)
->           False,
->         CatCreateFunction FunName "enum_last" [Pseudo AnyEnum]
->           (Pseudo AnyEnum)
->           False,
->         CatCreateFunction FunName "enum_le"
->           [Pseudo AnyEnum, Pseudo AnyEnum]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "enum_lt"
->           [Pseudo AnyEnum, Pseudo AnyEnum]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "enum_ne"
->           [Pseudo AnyEnum, Pseudo AnyEnum]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "enum_out" [Pseudo AnyEnum]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "enum_range" [Pseudo AnyEnum]
->           (Pseudo AnyArray)
->           False,
->         CatCreateFunction FunName "enum_range"
->           [Pseudo AnyEnum, Pseudo AnyEnum]
->           (Pseudo AnyArray)
->           False,
->         CatCreateFunction FunName "enum_recv"
->           [Pseudo Cstring, ScalarType "oid"]
->           (Pseudo AnyEnum)
->           False,
->         CatCreateFunction FunName "enum_send" [Pseudo AnyEnum]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "enum_smaller"
->           [Pseudo AnyEnum, Pseudo AnyEnum]
->           (Pseudo AnyEnum)
->           False,
->         CatCreateFunction FunName "eqjoinsel"
->           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
->            ScalarType "int2", Pseudo Internal]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "eqsel"
->           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
->            ScalarType "int4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "euc_cn_to_mic"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "euc_cn_to_utf8"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "euc_jis_2004_to_shift_jis_2004"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "euc_jis_2004_to_utf8"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "euc_jp_to_mic"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "euc_jp_to_sjis"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "euc_jp_to_utf8"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "euc_kr_to_mic"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "euc_kr_to_utf8"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "euc_tw_to_big5"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "euc_tw_to_mic"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "euc_tw_to_utf8"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "exp" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "exp" [ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "factorial" [ScalarType "int8"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "family" [ScalarType "inet"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "flatfile_update_trigger" []
->           (Pseudo Trigger)
->           False,
->         CatCreateFunction FunName "float4" [ScalarType "int8"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunName "float4" [ScalarType "int2"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunName "float4" [ScalarType "int4"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunName "float4" [ScalarType "float8"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunName "float4" [ScalarType "numeric"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunName "float48div"
->           [ScalarType "float4", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float48eq"
->           [ScalarType "float4", ScalarType "float8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "float48ge"
->           [ScalarType "float4", ScalarType "float8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "float48gt"
->           [ScalarType "float4", ScalarType "float8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "float48le"
->           [ScalarType "float4", ScalarType "float8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "float48lt"
->           [ScalarType "float4", ScalarType "float8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "float48mi"
->           [ScalarType "float4", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float48mul"
->           [ScalarType "float4", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float48ne"
->           [ScalarType "float4", ScalarType "float8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "float48pl"
->           [ScalarType "float4", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float4_accum"
->           [ArrayType (ScalarType "float8"), ScalarType "float4"]
->           (ArrayType (ScalarType "float8"))
->           False,
->         CatCreateFunction FunName "float4abs" [ScalarType "float4"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunName "float4div"
->           [ScalarType "float4", ScalarType "float4"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunName "float4eq"
->           [ScalarType "float4", ScalarType "float4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "float4ge"
->           [ScalarType "float4", ScalarType "float4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "float4gt"
->           [ScalarType "float4", ScalarType "float4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "float4in" [Pseudo Cstring]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunName "float4larger"
->           [ScalarType "float4", ScalarType "float4"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunName "float4le"
->           [ScalarType "float4", ScalarType "float4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "float4lt"
->           [ScalarType "float4", ScalarType "float4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "float4mi"
->           [ScalarType "float4", ScalarType "float4"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunName "float4mul"
->           [ScalarType "float4", ScalarType "float4"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunName "float4ne"
->           [ScalarType "float4", ScalarType "float4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "float4out" [ScalarType "float4"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "float4pl"
->           [ScalarType "float4", ScalarType "float4"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunName "float4recv" [Pseudo Internal]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunName "float4send" [ScalarType "float4"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "float4smaller"
->           [ScalarType "float4", ScalarType "float4"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunName "float4um" [ScalarType "float4"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunName "float4up" [ScalarType "float4"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunName "float8" [ScalarType "int8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float8" [ScalarType "int2"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float8" [ScalarType "int4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float8" [ScalarType "float4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float8" [ScalarType "numeric"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float84div"
->           [ScalarType "float8", ScalarType "float4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float84eq"
->           [ScalarType "float8", ScalarType "float4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "float84ge"
->           [ScalarType "float8", ScalarType "float4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "float84gt"
->           [ScalarType "float8", ScalarType "float4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "float84le"
->           [ScalarType "float8", ScalarType "float4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "float84lt"
->           [ScalarType "float8", ScalarType "float4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "float84mi"
->           [ScalarType "float8", ScalarType "float4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float84mul"
->           [ScalarType "float8", ScalarType "float4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float84ne"
->           [ScalarType "float8", ScalarType "float4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "float84pl"
->           [ScalarType "float8", ScalarType "float4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float8_accum"
->           [ArrayType (ScalarType "float8"), ScalarType "float8"]
->           (ArrayType (ScalarType "float8"))
->           False,
->         CatCreateFunction FunName "float8_avg"
->           [ArrayType (ScalarType "float8")]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float8_corr"
->           [ArrayType (ScalarType "float8")]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float8_covar_pop"
->           [ArrayType (ScalarType "float8")]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float8_covar_samp"
->           [ArrayType (ScalarType "float8")]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float8_regr_accum"
->           [ArrayType (ScalarType "float8"), ScalarType "float8",
->            ScalarType "float8"]
->           (ArrayType (ScalarType "float8"))
->           False,
->         CatCreateFunction FunName "float8_regr_avgx"
->           [ArrayType (ScalarType "float8")]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float8_regr_avgy"
->           [ArrayType (ScalarType "float8")]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float8_regr_intercept"
->           [ArrayType (ScalarType "float8")]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float8_regr_r2"
->           [ArrayType (ScalarType "float8")]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float8_regr_slope"
->           [ArrayType (ScalarType "float8")]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float8_regr_sxx"
->           [ArrayType (ScalarType "float8")]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float8_regr_sxy"
->           [ArrayType (ScalarType "float8")]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float8_regr_syy"
->           [ArrayType (ScalarType "float8")]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float8_stddev_pop"
->           [ArrayType (ScalarType "float8")]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float8_stddev_samp"
->           [ArrayType (ScalarType "float8")]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float8_var_pop"
->           [ArrayType (ScalarType "float8")]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float8_var_samp"
->           [ArrayType (ScalarType "float8")]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float8abs" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float8div"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float8eq"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "float8ge"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "float8gt"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "float8in" [Pseudo Cstring]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float8larger"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float8le"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "float8lt"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "float8mi"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float8mul"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float8ne"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "float8out" [ScalarType "float8"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "float8pl"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float8recv" [Pseudo Internal]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float8send" [ScalarType "float8"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "float8smaller"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float8um" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "float8up" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "floor" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "floor" [ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "flt4_mul_cash"
->           [ScalarType "float4", ScalarType "money"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunName "flt8_mul_cash"
->           [ScalarType "float8", ScalarType "money"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunName "fmgr_c_validator" [ScalarType "oid"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "fmgr_internal_validator"
->           [ScalarType "oid"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "fmgr_sql_validator" [ScalarType "oid"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "format_type"
->           [ScalarType "oid", ScalarType "int4"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "gb18030_to_utf8"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "gbk_to_utf8"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "generate_series"
->           [ScalarType "int8", ScalarType "int8"]
->           (SetOfType (ScalarType "int8"))
->           False,
->         CatCreateFunction FunName "generate_series"
->           [ScalarType "int4", ScalarType "int4"]
->           (SetOfType (ScalarType "int4"))
->           False,
->         CatCreateFunction FunName "generate_series"
->           [ScalarType "int8", ScalarType "int8", ScalarType "int8"]
->           (SetOfType (ScalarType "int8"))
->           False,
->         CatCreateFunction FunName "generate_series"
->           [ScalarType "int4", ScalarType "int4", ScalarType "int4"]
->           (SetOfType (ScalarType "int4"))
->           False,
->         CatCreateFunction FunName "generate_series"
->           [ScalarType "timestamp", ScalarType "timestamp",
->            ScalarType "interval"]
->           (SetOfType (ScalarType "timestamp"))
->           False,
->         CatCreateFunction FunName "generate_series"
->           [ScalarType "timestamptz", ScalarType "timestamptz",
->            ScalarType "interval"]
->           (SetOfType (ScalarType "timestamptz"))
->           False,
->         CatCreateFunction FunName "generate_subscripts"
->           [Pseudo AnyArray, ScalarType "int4"]
->           (SetOfType (ScalarType "int4"))
->           False,
->         CatCreateFunction FunName "generate_subscripts"
->           [Pseudo AnyArray, ScalarType "int4", ScalarType "bool"]
->           (SetOfType (ScalarType "int4"))
->           False,
->         CatCreateFunction FunName "get_bit"
->           [ScalarType "bytea", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "get_byte"
->           [ScalarType "bytea", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "get_current_ts_config" []
->           (ScalarType "regconfig")
->           False,
->         CatCreateFunction FunName "getdatabaseencoding" []
->           (ScalarType "name")
->           False,
->         CatCreateFunction FunName "getpgusername" [] (ScalarType "name")
->           False,
->         CatCreateFunction FunName "gin_cmp_prefix"
->           [ScalarType "text", ScalarType "text", ScalarType "int2",
->            Pseudo Internal]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "gin_cmp_tslexeme"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "gin_extract_tsquery"
->           [ScalarType "tsquery", Pseudo Internal, ScalarType "int2",
->            Pseudo Internal, Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "gin_extract_tsvector"
->           [ScalarType "tsvector", Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "gin_tsquery_consistent"
->           [Pseudo Internal, ScalarType "int2", ScalarType "tsquery",
->            ScalarType "int4", Pseudo Internal, Pseudo Internal]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "ginarrayconsistent"
->           [Pseudo Internal, ScalarType "int2", Pseudo AnyArray,
->            ScalarType "int4", Pseudo Internal, Pseudo Internal]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "ginarrayextract"
->           [Pseudo AnyArray, Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "ginbeginscan"
->           [Pseudo Internal, Pseudo Internal, Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "ginbuild"
->           [Pseudo Internal, Pseudo Internal, Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "ginbulkdelete"
->           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
->            Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "gincostestimate"
->           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
->            Pseudo Internal, Pseudo Internal, Pseudo Internal, Pseudo Internal,
->            Pseudo Internal]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "ginendscan" [Pseudo Internal]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "gingetbitmap"
->           [Pseudo Internal, Pseudo Internal]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "gininsert"
->           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
->            Pseudo Internal, Pseudo Internal, Pseudo Internal]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "ginmarkpos" [Pseudo Internal]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "ginoptions"
->           [ArrayType (ScalarType "text"), ScalarType "bool"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "ginqueryarrayextract"
->           [Pseudo AnyArray, Pseudo Internal, ScalarType "int2",
->            Pseudo Internal, Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "ginrescan"
->           [Pseudo Internal, Pseudo Internal]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "ginrestrpos" [Pseudo Internal]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "ginvacuumcleanup"
->           [Pseudo Internal, Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "gist_box_compress" [Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "gist_box_consistent"
->           [Pseudo Internal, ScalarType "box", ScalarType "int4",
->            ScalarType "oid", Pseudo Internal]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "gist_box_decompress" [Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "gist_box_penalty"
->           [Pseudo Internal, Pseudo Internal, Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "gist_box_picksplit"
->           [Pseudo Internal, Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "gist_box_same"
->           [ScalarType "box", ScalarType "box", Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "gist_box_union"
->           [Pseudo Internal, Pseudo Internal]
->           (ScalarType "box")
->           False,
->         CatCreateFunction FunName "gist_circle_compress" [Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "gist_circle_consistent"
->           [Pseudo Internal, ScalarType "circle", ScalarType "int4",
->            ScalarType "oid", Pseudo Internal]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "gist_poly_compress" [Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "gist_poly_consistent"
->           [Pseudo Internal, ScalarType "polygon", ScalarType "int4",
->            ScalarType "oid", Pseudo Internal]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "gistbeginscan"
->           [Pseudo Internal, Pseudo Internal, Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "gistbuild"
->           [Pseudo Internal, Pseudo Internal, Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "gistbulkdelete"
->           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
->            Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "gistcostestimate"
->           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
->            Pseudo Internal, Pseudo Internal, Pseudo Internal, Pseudo Internal,
->            Pseudo Internal]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "gistendscan" [Pseudo Internal]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "gistgetbitmap"
->           [Pseudo Internal, Pseudo Internal]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "gistgettuple"
->           [Pseudo Internal, Pseudo Internal]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "gistinsert"
->           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
->            Pseudo Internal, Pseudo Internal, Pseudo Internal]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "gistmarkpos" [Pseudo Internal]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "gistoptions"
->           [ArrayType (ScalarType "text"), ScalarType "bool"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "gistrescan"
->           [Pseudo Internal, Pseudo Internal]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "gistrestrpos" [Pseudo Internal]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "gistvacuumcleanup"
->           [Pseudo Internal, Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "gtsquery_compress" [Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "gtsquery_consistent"
->           [Pseudo Internal, Pseudo Internal, ScalarType "int4",
->            ScalarType "oid", Pseudo Internal]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "gtsquery_decompress" [Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "gtsquery_penalty"
->           [Pseudo Internal, Pseudo Internal, Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "gtsquery_picksplit"
->           [Pseudo Internal, Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "gtsquery_same"
->           [ScalarType "int8", ScalarType "int8", Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "gtsquery_union"
->           [Pseudo Internal, Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "gtsvector_compress" [Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "gtsvector_consistent"
->           [Pseudo Internal, ScalarType "gtsvector", ScalarType "int4",
->            ScalarType "oid", Pseudo Internal]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "gtsvector_decompress" [Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "gtsvector_penalty"
->           [Pseudo Internal, Pseudo Internal, Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "gtsvector_picksplit"
->           [Pseudo Internal, Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "gtsvector_same"
->           [ScalarType "gtsvector", ScalarType "gtsvector", Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "gtsvector_union"
->           [Pseudo Internal, Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "gtsvectorin" [Pseudo Cstring]
->           (ScalarType "gtsvector")
->           False,
->         CatCreateFunction FunName "gtsvectorout" [ScalarType "gtsvector"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "has_any_column_privilege"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_any_column_privilege"
->           [ScalarType "oid", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_any_column_privilege"
->           [ScalarType "name", ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_any_column_privilege"
->           [ScalarType "name", ScalarType "oid", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_any_column_privilege"
->           [ScalarType "oid", ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_any_column_privilege"
->           [ScalarType "oid", ScalarType "oid", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_column_privilege"
->           [ScalarType "text", ScalarType "int2", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_column_privilege"
->           [ScalarType "text", ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_column_privilege"
->           [ScalarType "oid", ScalarType "int2", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_column_privilege"
->           [ScalarType "oid", ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_column_privilege"
->           [ScalarType "name", ScalarType "text", ScalarType "int2",
->            ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_column_privilege"
->           [ScalarType "name", ScalarType "text", ScalarType "text",
->            ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_column_privilege"
->           [ScalarType "name", ScalarType "oid", ScalarType "int2",
->            ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_column_privilege"
->           [ScalarType "name", ScalarType "oid", ScalarType "text",
->            ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_column_privilege"
->           [ScalarType "oid", ScalarType "text", ScalarType "int2",
->            ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_column_privilege"
->           [ScalarType "oid", ScalarType "text", ScalarType "text",
->            ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_column_privilege"
->           [ScalarType "oid", ScalarType "oid", ScalarType "int2",
->            ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_column_privilege"
->           [ScalarType "oid", ScalarType "oid", ScalarType "text",
->            ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_database_privilege"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_database_privilege"
->           [ScalarType "oid", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_database_privilege"
->           [ScalarType "name", ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_database_privilege"
->           [ScalarType "name", ScalarType "oid", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_database_privilege"
->           [ScalarType "oid", ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_database_privilege"
->           [ScalarType "oid", ScalarType "oid", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_foreign_data_wrapper_privilege"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_foreign_data_wrapper_privilege"
->           [ScalarType "oid", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_foreign_data_wrapper_privilege"
->           [ScalarType "name", ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_foreign_data_wrapper_privilege"
->           [ScalarType "name", ScalarType "oid", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_foreign_data_wrapper_privilege"
->           [ScalarType "oid", ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_foreign_data_wrapper_privilege"
->           [ScalarType "oid", ScalarType "oid", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_function_privilege"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_function_privilege"
->           [ScalarType "oid", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_function_privilege"
->           [ScalarType "name", ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_function_privilege"
->           [ScalarType "name", ScalarType "oid", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_function_privilege"
->           [ScalarType "oid", ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_function_privilege"
->           [ScalarType "oid", ScalarType "oid", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_language_privilege"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_language_privilege"
->           [ScalarType "oid", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_language_privilege"
->           [ScalarType "name", ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_language_privilege"
->           [ScalarType "name", ScalarType "oid", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_language_privilege"
->           [ScalarType "oid", ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_language_privilege"
->           [ScalarType "oid", ScalarType "oid", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_schema_privilege"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_schema_privilege"
->           [ScalarType "oid", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_schema_privilege"
->           [ScalarType "name", ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_schema_privilege"
->           [ScalarType "name", ScalarType "oid", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_schema_privilege"
->           [ScalarType "oid", ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_schema_privilege"
->           [ScalarType "oid", ScalarType "oid", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_server_privilege"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_server_privilege"
->           [ScalarType "oid", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_server_privilege"
->           [ScalarType "name", ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_server_privilege"
->           [ScalarType "name", ScalarType "oid", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_server_privilege"
->           [ScalarType "oid", ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_server_privilege"
->           [ScalarType "oid", ScalarType "oid", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_table_privilege"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_table_privilege"
->           [ScalarType "oid", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_table_privilege"
->           [ScalarType "name", ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_table_privilege"
->           [ScalarType "name", ScalarType "oid", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_table_privilege"
->           [ScalarType "oid", ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_table_privilege"
->           [ScalarType "oid", ScalarType "oid", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_tablespace_privilege"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_tablespace_privilege"
->           [ScalarType "oid", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_tablespace_privilege"
->           [ScalarType "name", ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_tablespace_privilege"
->           [ScalarType "name", ScalarType "oid", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_tablespace_privilege"
->           [ScalarType "oid", ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "has_tablespace_privilege"
->           [ScalarType "oid", ScalarType "oid", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "hash_aclitem" [ScalarType "aclitem"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "hash_numeric" [ScalarType "numeric"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "hashbeginscan"
->           [Pseudo Internal, Pseudo Internal, Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "hashbpchar" [ScalarType "bpchar"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "hashbuild"
->           [Pseudo Internal, Pseudo Internal, Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "hashbulkdelete"
->           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
->            Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "hashchar" [ScalarType "char"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "hashcostestimate"
->           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
->            Pseudo Internal, Pseudo Internal, Pseudo Internal, Pseudo Internal,
->            Pseudo Internal]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "hashendscan" [Pseudo Internal]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "hashenum" [Pseudo AnyEnum]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "hashfloat4" [ScalarType "float4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "hashfloat8" [ScalarType "float8"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "hashgetbitmap"
->           [Pseudo Internal, Pseudo Internal]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "hashgettuple"
->           [Pseudo Internal, Pseudo Internal]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "hashinet" [ScalarType "inet"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "hashinsert"
->           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
->            Pseudo Internal, Pseudo Internal, Pseudo Internal]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "hashint2" [ScalarType "int2"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "hashint2vector"
->           [ScalarType "int2vector"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "hashint4" [ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "hashint8" [ScalarType "int8"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "hashmacaddr" [ScalarType "macaddr"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "hashmarkpos" [Pseudo Internal]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "hashname" [ScalarType "name"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "hashoid" [ScalarType "oid"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "hashoidvector" [ScalarType "oidvector"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "hashoptions"
->           [ArrayType (ScalarType "text"), ScalarType "bool"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "hashrescan"
->           [Pseudo Internal, Pseudo Internal]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "hashrestrpos" [Pseudo Internal]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "hashtext" [ScalarType "text"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "hashvacuumcleanup"
->           [Pseudo Internal, Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "hashvarlena" [Pseudo Internal]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "height" [ScalarType "box"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "host" [ScalarType "inet"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "hostmask" [ScalarType "inet"]
->           (ScalarType "inet")
->           False,
->         CatCreateFunction FunName "iclikejoinsel"
->           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
->            ScalarType "int2", Pseudo Internal]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "iclikesel"
->           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
->            ScalarType "int4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "icnlikejoinsel"
->           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
->            ScalarType "int2", Pseudo Internal]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "icnlikesel"
->           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
->            ScalarType "int4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "icregexeqjoinsel"
->           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
->            ScalarType "int2", Pseudo Internal]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "icregexeqsel"
->           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
->            ScalarType "int4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "icregexnejoinsel"
->           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
->            ScalarType "int2", Pseudo Internal]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "icregexnesel"
->           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
->            ScalarType "int4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "inet_client_addr" [] (ScalarType "inet")
->           False,
->         CatCreateFunction FunName "inet_client_port" [] (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "inet_in" [Pseudo Cstring]
->           (ScalarType "inet")
->           False,
->         CatCreateFunction FunName "inet_out" [ScalarType "inet"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "inet_recv" [Pseudo Internal]
->           (ScalarType "inet")
->           False,
->         CatCreateFunction FunName "inet_send" [ScalarType "inet"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "inet_server_addr" [] (ScalarType "inet")
->           False,
->         CatCreateFunction FunName "inet_server_port" [] (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "inetand"
->           [ScalarType "inet", ScalarType "inet"]
->           (ScalarType "inet")
->           False,
->         CatCreateFunction FunName "inetmi"
->           [ScalarType "inet", ScalarType "inet"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "inetmi_int8"
->           [ScalarType "inet", ScalarType "int8"]
->           (ScalarType "inet")
->           False,
->         CatCreateFunction FunName "inetnot" [ScalarType "inet"]
->           (ScalarType "inet")
->           False,
->         CatCreateFunction FunName "inetor"
->           [ScalarType "inet", ScalarType "inet"]
->           (ScalarType "inet")
->           False,
->         CatCreateFunction FunName "inetpl"
->           [ScalarType "inet", ScalarType "int8"]
->           (ScalarType "inet")
->           False,
->         CatCreateFunction FunName "initcap" [ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "int2" [ScalarType "int8"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunName "int2" [ScalarType "int4"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunName "int2" [ScalarType "float4"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunName "int2" [ScalarType "float8"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunName "int2" [ScalarType "numeric"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunName "int24div"
->           [ScalarType "int2", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int24eq"
->           [ScalarType "int2", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int24ge"
->           [ScalarType "int2", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int24gt"
->           [ScalarType "int2", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int24le"
->           [ScalarType "int2", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int24lt"
->           [ScalarType "int2", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int24mi"
->           [ScalarType "int2", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int24mul"
->           [ScalarType "int2", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int24ne"
->           [ScalarType "int2", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int24pl"
->           [ScalarType "int2", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int28div"
->           [ScalarType "int2", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int28eq"
->           [ScalarType "int2", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int28ge"
->           [ScalarType "int2", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int28gt"
->           [ScalarType "int2", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int28le"
->           [ScalarType "int2", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int28lt"
->           [ScalarType "int2", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int28mi"
->           [ScalarType "int2", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int28mul"
->           [ScalarType "int2", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int28ne"
->           [ScalarType "int2", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int28pl"
->           [ScalarType "int2", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int2_accum"
->           [ArrayType (ScalarType "numeric"), ScalarType "int2"]
->           (ArrayType (ScalarType "numeric"))
->           False,
->         CatCreateFunction FunName "int2_avg_accum"
->           [ArrayType (ScalarType "int8"), ScalarType "int2"]
->           (ArrayType (ScalarType "int8"))
->           False,
->         CatCreateFunction FunName "int2_mul_cash"
->           [ScalarType "int2", ScalarType "money"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunName "int2_sum"
->           [ScalarType "int8", ScalarType "int2"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int2abs" [ScalarType "int2"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunName "int2and"
->           [ScalarType "int2", ScalarType "int2"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunName "int2div"
->           [ScalarType "int2", ScalarType "int2"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunName "int2eq"
->           [ScalarType "int2", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int2ge"
->           [ScalarType "int2", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int2gt"
->           [ScalarType "int2", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int2in" [Pseudo Cstring]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunName "int2larger"
->           [ScalarType "int2", ScalarType "int2"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunName "int2le"
->           [ScalarType "int2", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int2lt"
->           [ScalarType "int2", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int2mi"
->           [ScalarType "int2", ScalarType "int2"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunName "int2mod"
->           [ScalarType "int2", ScalarType "int2"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunName "int2mul"
->           [ScalarType "int2", ScalarType "int2"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunName "int2ne"
->           [ScalarType "int2", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int2not" [ScalarType "int2"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunName "int2or"
->           [ScalarType "int2", ScalarType "int2"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunName "int2out" [ScalarType "int2"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "int2pl"
->           [ScalarType "int2", ScalarType "int2"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunName "int2recv" [Pseudo Internal]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunName "int2send" [ScalarType "int2"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "int2shl"
->           [ScalarType "int2", ScalarType "int4"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunName "int2shr"
->           [ScalarType "int2", ScalarType "int4"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunName "int2smaller"
->           [ScalarType "int2", ScalarType "int2"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunName "int2um" [ScalarType "int2"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunName "int2up" [ScalarType "int2"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunName "int2vectoreq"
->           [ScalarType "int2vector", ScalarType "int2vector"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int2vectorin" [Pseudo Cstring]
->           (ScalarType "int2vector")
->           False,
->         CatCreateFunction FunName "int2vectorout" [ScalarType "int2vector"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "int2vectorrecv" [Pseudo Internal]
->           (ScalarType "int2vector")
->           False,
->         CatCreateFunction FunName "int2vectorsend"
->           [ScalarType "int2vector"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "int2xor"
->           [ScalarType "int2", ScalarType "int2"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunName "int4" [ScalarType "bool"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int4" [ScalarType "char"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int4" [ScalarType "int8"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int4" [ScalarType "int2"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int4" [ScalarType "float4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int4" [ScalarType "float8"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int4" [ScalarType "bit"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int4" [ScalarType "numeric"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int42div"
->           [ScalarType "int4", ScalarType "int2"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int42eq"
->           [ScalarType "int4", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int42ge"
->           [ScalarType "int4", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int42gt"
->           [ScalarType "int4", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int42le"
->           [ScalarType "int4", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int42lt"
->           [ScalarType "int4", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int42mi"
->           [ScalarType "int4", ScalarType "int2"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int42mul"
->           [ScalarType "int4", ScalarType "int2"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int42ne"
->           [ScalarType "int4", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int42pl"
->           [ScalarType "int4", ScalarType "int2"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int48div"
->           [ScalarType "int4", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int48eq"
->           [ScalarType "int4", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int48ge"
->           [ScalarType "int4", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int48gt"
->           [ScalarType "int4", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int48le"
->           [ScalarType "int4", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int48lt"
->           [ScalarType "int4", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int48mi"
->           [ScalarType "int4", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int48mul"
->           [ScalarType "int4", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int48ne"
->           [ScalarType "int4", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int48pl"
->           [ScalarType "int4", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int4_accum"
->           [ArrayType (ScalarType "numeric"), ScalarType "int4"]
->           (ArrayType (ScalarType "numeric"))
->           False,
->         CatCreateFunction FunName "int4_avg_accum"
->           [ArrayType (ScalarType "int8"), ScalarType "int4"]
->           (ArrayType (ScalarType "int8"))
->           False,
->         CatCreateFunction FunName "int4_mul_cash"
->           [ScalarType "int4", ScalarType "money"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunName "int4_sum"
->           [ScalarType "int8", ScalarType "int4"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int4abs" [ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int4and"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int4div"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int4eq"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int4ge"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int4gt"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int4in" [Pseudo Cstring]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int4inc" [ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int4larger"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int4le"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int4lt"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int4mi"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int4mod"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int4mul"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int4ne"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int4not" [ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int4or"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int4out" [ScalarType "int4"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "int4pl"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int4recv" [Pseudo Internal]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int4send" [ScalarType "int4"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "int4shl"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int4shr"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int4smaller"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int4um" [ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int4up" [ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int4xor"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "int8" [ScalarType "int2"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int8" [ScalarType "int4"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int8" [ScalarType "oid"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int8" [ScalarType "float4"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int8" [ScalarType "float8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int8" [ScalarType "bit"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int8" [ScalarType "numeric"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int82div"
->           [ScalarType "int8", ScalarType "int2"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int82eq"
->           [ScalarType "int8", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int82ge"
->           [ScalarType "int8", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int82gt"
->           [ScalarType "int8", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int82le"
->           [ScalarType "int8", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int82lt"
->           [ScalarType "int8", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int82mi"
->           [ScalarType "int8", ScalarType "int2"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int82mul"
->           [ScalarType "int8", ScalarType "int2"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int82ne"
->           [ScalarType "int8", ScalarType "int2"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int82pl"
->           [ScalarType "int8", ScalarType "int2"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int84div"
->           [ScalarType "int8", ScalarType "int4"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int84eq"
->           [ScalarType "int8", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int84ge"
->           [ScalarType "int8", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int84gt"
->           [ScalarType "int8", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int84le"
->           [ScalarType "int8", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int84lt"
->           [ScalarType "int8", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int84mi"
->           [ScalarType "int8", ScalarType "int4"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int84mul"
->           [ScalarType "int8", ScalarType "int4"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int84ne"
->           [ScalarType "int8", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int84pl"
->           [ScalarType "int8", ScalarType "int4"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int8_accum"
->           [ArrayType (ScalarType "numeric"), ScalarType "int8"]
->           (ArrayType (ScalarType "numeric"))
->           False,
->         CatCreateFunction FunName "int8_avg"
->           [ArrayType (ScalarType "int8")]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "int8_avg_accum"
->           [ArrayType (ScalarType "numeric"), ScalarType "int8"]
->           (ArrayType (ScalarType "numeric"))
->           False,
->         CatCreateFunction FunName "int8_sum"
->           [ScalarType "numeric", ScalarType "int8"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "int8abs" [ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int8and"
->           [ScalarType "int8", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int8div"
->           [ScalarType "int8", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int8eq"
->           [ScalarType "int8", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int8ge"
->           [ScalarType "int8", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int8gt"
->           [ScalarType "int8", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int8in" [Pseudo Cstring]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int8inc" [ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int8inc_any"
->           [ScalarType "int8", Pseudo Any]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int8inc_float8_float8"
->           [ScalarType "int8", ScalarType "float8", ScalarType "float8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int8larger"
->           [ScalarType "int8", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int8le"
->           [ScalarType "int8", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int8lt"
->           [ScalarType "int8", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int8mi"
->           [ScalarType "int8", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int8mod"
->           [ScalarType "int8", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int8mul"
->           [ScalarType "int8", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int8ne"
->           [ScalarType "int8", ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "int8not" [ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int8or"
->           [ScalarType "int8", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int8out" [ScalarType "int8"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "int8pl"
->           [ScalarType "int8", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int8pl_inet"
->           [ScalarType "int8", ScalarType "inet"]
->           (ScalarType "inet")
->           False,
->         CatCreateFunction FunName "int8recv" [Pseudo Internal]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int8send" [ScalarType "int8"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "int8shl"
->           [ScalarType "int8", ScalarType "int4"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int8shr"
->           [ScalarType "int8", ScalarType "int4"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int8smaller"
->           [ScalarType "int8", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int8um" [ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int8up" [ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "int8xor"
->           [ScalarType "int8", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "integer_pl_date"
->           [ScalarType "int4", ScalarType "date"]
->           (ScalarType "date")
->           False,
->         CatCreateFunction FunName "inter_lb"
->           [ScalarType "line", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "inter_sb"
->           [ScalarType "lseg", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "inter_sl"
->           [ScalarType "lseg", ScalarType "line"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "internal_in" [Pseudo Cstring]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "internal_out" [Pseudo Internal]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "interval" [ScalarType "reltime"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunName "interval" [ScalarType "time"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunName "interval"
->           [ScalarType "interval", ScalarType "int4"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunName "interval_accum"
->           [ArrayType (ScalarType "interval"), ScalarType "interval"]
->           (ArrayType (ScalarType "interval"))
->           False,
->         CatCreateFunction FunName "interval_avg"
->           [ArrayType (ScalarType "interval")]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunName "interval_cmp"
->           [ScalarType "interval", ScalarType "interval"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "interval_div"
->           [ScalarType "interval", ScalarType "float8"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunName "interval_eq"
->           [ScalarType "interval", ScalarType "interval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "interval_ge"
->           [ScalarType "interval", ScalarType "interval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "interval_gt"
->           [ScalarType "interval", ScalarType "interval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "interval_hash" [ScalarType "interval"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "interval_in"
->           [Pseudo Cstring, ScalarType "oid", ScalarType "int4"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunName "interval_larger"
->           [ScalarType "interval", ScalarType "interval"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunName "interval_le"
->           [ScalarType "interval", ScalarType "interval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "interval_lt"
->           [ScalarType "interval", ScalarType "interval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "interval_mi"
->           [ScalarType "interval", ScalarType "interval"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunName "interval_mul"
->           [ScalarType "interval", ScalarType "float8"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunName "interval_ne"
->           [ScalarType "interval", ScalarType "interval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "interval_out" [ScalarType "interval"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "interval_pl"
->           [ScalarType "interval", ScalarType "interval"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunName "interval_pl_date"
->           [ScalarType "interval", ScalarType "date"]
->           (ScalarType "timestamp")
->           False,
->         CatCreateFunction FunName "interval_pl_time"
->           [ScalarType "interval", ScalarType "time"]
->           (ScalarType "time")
->           False,
->         CatCreateFunction FunName "interval_pl_timestamp"
->           [ScalarType "interval", ScalarType "timestamp"]
->           (ScalarType "timestamp")
->           False,
->         CatCreateFunction FunName "interval_pl_timestamptz"
->           [ScalarType "interval", ScalarType "timestamptz"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName "interval_pl_timetz"
->           [ScalarType "interval", ScalarType "timetz"]
->           (ScalarType "timetz")
->           False,
->         CatCreateFunction FunName "interval_recv"
->           [Pseudo Internal, ScalarType "oid", ScalarType "int4"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunName "interval_send" [ScalarType "interval"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "interval_smaller"
->           [ScalarType "interval", ScalarType "interval"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunName "interval_um" [ScalarType "interval"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunName "intervaltypmodin"
->           [ArrayType (Pseudo Cstring)]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "intervaltypmodout" [ScalarType "int4"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "intinterval"
->           [ScalarType "abstime", ScalarType "tinterval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "isclosed" [ScalarType "path"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "isfinite" [ScalarType "abstime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "isfinite" [ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "isfinite" [ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "isfinite" [ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "isfinite" [ScalarType "interval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "ishorizontal" [ScalarType "lseg"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "ishorizontal" [ScalarType "line"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "ishorizontal"
->           [ScalarType "point", ScalarType "point"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "iso8859_1_to_utf8"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "iso8859_to_utf8"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "iso_to_koi8r"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "iso_to_mic"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "iso_to_win1251"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "iso_to_win866"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "isopen" [ScalarType "path"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "isparallel"
->           [ScalarType "lseg", ScalarType "lseg"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "isparallel"
->           [ScalarType "line", ScalarType "line"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "isperp"
->           [ScalarType "lseg", ScalarType "lseg"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "isperp"
->           [ScalarType "line", ScalarType "line"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "isvertical" [ScalarType "lseg"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "isvertical" [ScalarType "line"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "isvertical"
->           [ScalarType "point", ScalarType "point"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "johab_to_utf8"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "justify_days" [ScalarType "interval"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunName "justify_hours" [ScalarType "interval"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunName "justify_interval"
->           [ScalarType "interval"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunName "koi8r_to_iso"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "koi8r_to_mic"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "koi8r_to_utf8"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "koi8r_to_win1251"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "koi8r_to_win866"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "koi8u_to_utf8"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "language_handler_in" [Pseudo Cstring]
->           (Pseudo LanguageHandler)
->           False,
->         CatCreateFunction FunName "language_handler_out"
->           [Pseudo LanguageHandler]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "lastval" [] (ScalarType "int8") False,
->         CatCreateFunction FunName "latin1_to_mic"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "latin2_to_mic"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "latin2_to_win1250"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "latin3_to_mic"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "latin4_to_mic"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "length" [ScalarType "bytea"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "length" [ScalarType "text"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "length" [ScalarType "lseg"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "length" [ScalarType "path"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "length" [ScalarType "bpchar"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "length" [ScalarType "bit"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "length" [ScalarType "tsvector"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "length"
->           [ScalarType "bytea", ScalarType "name"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "like"
->           [ScalarType "bytea", ScalarType "bytea"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "like"
->           [ScalarType "name", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "like"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "like_escape"
->           [ScalarType "bytea", ScalarType "bytea"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "like_escape"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "likejoinsel"
->           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
->            ScalarType "int2", Pseudo Internal]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "likesel"
->           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
->            ScalarType "int4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "line"
->           [ScalarType "point", ScalarType "point"]
->           (ScalarType "line")
->           False,
->         CatCreateFunction FunName "line_distance"
->           [ScalarType "line", ScalarType "line"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "line_eq"
->           [ScalarType "line", ScalarType "line"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "line_horizontal" [ScalarType "line"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "line_in" [Pseudo Cstring]
->           (ScalarType "line")
->           False,
->         CatCreateFunction FunName "line_interpt"
->           [ScalarType "line", ScalarType "line"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunName "line_intersect"
->           [ScalarType "line", ScalarType "line"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "line_out" [ScalarType "line"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "line_parallel"
->           [ScalarType "line", ScalarType "line"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "line_perp"
->           [ScalarType "line", ScalarType "line"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "line_recv" [Pseudo Internal]
->           (ScalarType "line")
->           False,
->         CatCreateFunction FunName "line_send" [ScalarType "line"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "line_vertical" [ScalarType "line"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "ln" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "ln" [ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "lo_close" [ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "lo_creat" [ScalarType "int4"]
->           (ScalarType "oid")
->           False,
->         CatCreateFunction FunName "lo_create" [ScalarType "oid"]
->           (ScalarType "oid")
->           False,
->         CatCreateFunction FunName "lo_export"
->           [ScalarType "oid", ScalarType "text"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "lo_import" [ScalarType "text"]
->           (ScalarType "oid")
->           False,
->         CatCreateFunction FunName "lo_import"
->           [ScalarType "text", ScalarType "oid"]
->           (ScalarType "oid")
->           False,
->         CatCreateFunction FunName "lo_lseek"
->           [ScalarType "int4", ScalarType "int4", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "lo_open"
->           [ScalarType "oid", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "lo_tell" [ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "lo_truncate"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "lo_unlink" [ScalarType "oid"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "log" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "log" [ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "log"
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "loread"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "lower" [ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "lowrite"
->           [ScalarType "int4", ScalarType "bytea"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "lpad"
->           [ScalarType "text", ScalarType "int4"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "lpad"
->           [ScalarType "text", ScalarType "int4", ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "lseg" [ScalarType "box"]
->           (ScalarType "lseg")
->           False,
->         CatCreateFunction FunName "lseg"
->           [ScalarType "point", ScalarType "point"]
->           (ScalarType "lseg")
->           False,
->         CatCreateFunction FunName "lseg_center" [ScalarType "lseg"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunName "lseg_distance"
->           [ScalarType "lseg", ScalarType "lseg"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "lseg_eq"
->           [ScalarType "lseg", ScalarType "lseg"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "lseg_ge"
->           [ScalarType "lseg", ScalarType "lseg"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "lseg_gt"
->           [ScalarType "lseg", ScalarType "lseg"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "lseg_horizontal" [ScalarType "lseg"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "lseg_in" [Pseudo Cstring]
->           (ScalarType "lseg")
->           False,
->         CatCreateFunction FunName "lseg_interpt"
->           [ScalarType "lseg", ScalarType "lseg"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunName "lseg_intersect"
->           [ScalarType "lseg", ScalarType "lseg"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "lseg_le"
->           [ScalarType "lseg", ScalarType "lseg"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "lseg_length" [ScalarType "lseg"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "lseg_lt"
->           [ScalarType "lseg", ScalarType "lseg"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "lseg_ne"
->           [ScalarType "lseg", ScalarType "lseg"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "lseg_out" [ScalarType "lseg"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "lseg_parallel"
->           [ScalarType "lseg", ScalarType "lseg"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "lseg_perp"
->           [ScalarType "lseg", ScalarType "lseg"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "lseg_recv" [Pseudo Internal]
->           (ScalarType "lseg")
->           False,
->         CatCreateFunction FunName "lseg_send" [ScalarType "lseg"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "lseg_vertical" [ScalarType "lseg"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "ltrim" [ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "ltrim"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "macaddr_cmp"
->           [ScalarType "macaddr", ScalarType "macaddr"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "macaddr_eq"
->           [ScalarType "macaddr", ScalarType "macaddr"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "macaddr_ge"
->           [ScalarType "macaddr", ScalarType "macaddr"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "macaddr_gt"
->           [ScalarType "macaddr", ScalarType "macaddr"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "macaddr_in" [Pseudo Cstring]
->           (ScalarType "macaddr")
->           False,
->         CatCreateFunction FunName "macaddr_le"
->           [ScalarType "macaddr", ScalarType "macaddr"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "macaddr_lt"
->           [ScalarType "macaddr", ScalarType "macaddr"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "macaddr_ne"
->           [ScalarType "macaddr", ScalarType "macaddr"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "macaddr_out" [ScalarType "macaddr"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "macaddr_recv" [Pseudo Internal]
->           (ScalarType "macaddr")
->           False,
->         CatCreateFunction FunName "macaddr_send" [ScalarType "macaddr"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "makeaclitem"
->           [ScalarType "oid", ScalarType "oid", ScalarType "text",
->            ScalarType "bool"]
->           (ScalarType "aclitem")
->           False,
->         CatCreateFunction FunName "masklen" [ScalarType "inet"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "md5" [ScalarType "bytea"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "md5" [ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "mic_to_ascii"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "mic_to_big5"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "mic_to_euc_cn"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "mic_to_euc_jp"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "mic_to_euc_kr"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "mic_to_euc_tw"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "mic_to_iso"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "mic_to_koi8r"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "mic_to_latin1"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "mic_to_latin2"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "mic_to_latin3"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "mic_to_latin4"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "mic_to_sjis"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "mic_to_win1250"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "mic_to_win1251"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "mic_to_win866"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "mktinterval"
->           [ScalarType "abstime", ScalarType "abstime"]
->           (ScalarType "tinterval")
->           False,
->         CatCreateFunction FunName "mod"
->           [ScalarType "int8", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "mod"
->           [ScalarType "int2", ScalarType "int2"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunName "mod"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "mod"
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "mul_d_interval"
->           [ScalarType "float8", ScalarType "interval"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunName "name" [ScalarType "text"]
->           (ScalarType "name")
->           False,
->         CatCreateFunction FunName "name" [ScalarType "bpchar"]
->           (ScalarType "name")
->           False,
->         CatCreateFunction FunName "name" [ScalarType "varchar"]
->           (ScalarType "name")
->           False,
->         CatCreateFunction FunName "nameeq"
->           [ScalarType "name", ScalarType "name"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "namege"
->           [ScalarType "name", ScalarType "name"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "namegt"
->           [ScalarType "name", ScalarType "name"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "nameiclike"
->           [ScalarType "name", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "nameicnlike"
->           [ScalarType "name", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "nameicregexeq"
->           [ScalarType "name", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "nameicregexne"
->           [ScalarType "name", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "namein" [Pseudo Cstring]
->           (ScalarType "name")
->           False,
->         CatCreateFunction FunName "namele"
->           [ScalarType "name", ScalarType "name"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "namelike"
->           [ScalarType "name", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "namelt"
->           [ScalarType "name", ScalarType "name"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "namene"
->           [ScalarType "name", ScalarType "name"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "namenlike"
->           [ScalarType "name", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "nameout" [ScalarType "name"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "namerecv" [Pseudo Internal]
->           (ScalarType "name")
->           False,
->         CatCreateFunction FunName "nameregexeq"
->           [ScalarType "name", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "nameregexne"
->           [ScalarType "name", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "namesend" [ScalarType "name"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "neqjoinsel"
->           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
->            ScalarType "int2", Pseudo Internal]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "neqsel"
->           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
->            ScalarType "int4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "netmask" [ScalarType "inet"]
->           (ScalarType "inet")
->           False,
->         CatCreateFunction FunName "network" [ScalarType "inet"]
->           (ScalarType "cidr")
->           False,
->         CatCreateFunction FunName "network_cmp"
->           [ScalarType "inet", ScalarType "inet"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "network_eq"
->           [ScalarType "inet", ScalarType "inet"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "network_ge"
->           [ScalarType "inet", ScalarType "inet"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "network_gt"
->           [ScalarType "inet", ScalarType "inet"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "network_le"
->           [ScalarType "inet", ScalarType "inet"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "network_lt"
->           [ScalarType "inet", ScalarType "inet"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "network_ne"
->           [ScalarType "inet", ScalarType "inet"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "network_sub"
->           [ScalarType "inet", ScalarType "inet"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "network_subeq"
->           [ScalarType "inet", ScalarType "inet"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "network_sup"
->           [ScalarType "inet", ScalarType "inet"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "network_supeq"
->           [ScalarType "inet", ScalarType "inet"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "nextval" [ScalarType "regclass"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "nlikejoinsel"
->           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
->            ScalarType "int2", Pseudo Internal]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "nlikesel"
->           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
->            ScalarType "int4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "notlike"
->           [ScalarType "bytea", ScalarType "bytea"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "notlike"
->           [ScalarType "name", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "notlike"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "now" [] (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName "npoints" [ScalarType "path"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "npoints" [ScalarType "polygon"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "numeric" [ScalarType "int8"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "numeric" [ScalarType "int2"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "numeric" [ScalarType "int4"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "numeric" [ScalarType "float4"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "numeric" [ScalarType "float8"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "numeric"
->           [ScalarType "numeric", ScalarType "int4"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "numeric_abs" [ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "numeric_accum"
->           [ArrayType (ScalarType "numeric"), ScalarType "numeric"]
->           (ArrayType (ScalarType "numeric"))
->           False,
->         CatCreateFunction FunName "numeric_add"
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "numeric_avg"
->           [ArrayType (ScalarType "numeric")]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "numeric_avg_accum"
->           [ArrayType (ScalarType "numeric"), ScalarType "numeric"]
->           (ArrayType (ScalarType "numeric"))
->           False,
->         CatCreateFunction FunName "numeric_cmp"
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "numeric_div"
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "numeric_div_trunc"
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "numeric_eq"
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "numeric_exp" [ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "numeric_fac" [ScalarType "int8"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "numeric_ge"
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "numeric_gt"
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "numeric_in"
->           [Pseudo Cstring, ScalarType "oid", ScalarType "int4"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "numeric_inc" [ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "numeric_larger"
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "numeric_le"
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "numeric_ln" [ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "numeric_log"
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "numeric_lt"
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "numeric_mod"
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "numeric_mul"
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "numeric_ne"
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "numeric_out" [ScalarType "numeric"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "numeric_power"
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "numeric_recv"
->           [Pseudo Internal, ScalarType "oid", ScalarType "int4"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "numeric_send" [ScalarType "numeric"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "numeric_smaller"
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "numeric_sqrt" [ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "numeric_stddev_pop"
->           [ArrayType (ScalarType "numeric")]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "numeric_stddev_samp"
->           [ArrayType (ScalarType "numeric")]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "numeric_sub"
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "numeric_uminus" [ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "numeric_uplus" [ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "numeric_var_pop"
->           [ArrayType (ScalarType "numeric")]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "numeric_var_samp"
->           [ArrayType (ScalarType "numeric")]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "numerictypmodin"
->           [ArrayType (Pseudo Cstring)]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "numerictypmodout" [ScalarType "int4"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "numnode" [ScalarType "tsquery"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "obj_description" [ScalarType "oid"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "obj_description"
->           [ScalarType "oid", ScalarType "name"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "octet_length" [ScalarType "bytea"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "octet_length" [ScalarType "text"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "octet_length" [ScalarType "bpchar"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "octet_length" [ScalarType "bit"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "oid" [ScalarType "int8"]
->           (ScalarType "oid")
->           False,
->         CatCreateFunction FunName "oideq"
->           [ScalarType "oid", ScalarType "oid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "oidge"
->           [ScalarType "oid", ScalarType "oid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "oidgt"
->           [ScalarType "oid", ScalarType "oid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "oidin" [Pseudo Cstring]
->           (ScalarType "oid")
->           False,
->         CatCreateFunction FunName "oidlarger"
->           [ScalarType "oid", ScalarType "oid"]
->           (ScalarType "oid")
->           False,
->         CatCreateFunction FunName "oidle"
->           [ScalarType "oid", ScalarType "oid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "oidlt"
->           [ScalarType "oid", ScalarType "oid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "oidne"
->           [ScalarType "oid", ScalarType "oid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "oidout" [ScalarType "oid"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "oidrecv" [Pseudo Internal]
->           (ScalarType "oid")
->           False,
->         CatCreateFunction FunName "oidsend" [ScalarType "oid"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "oidsmaller"
->           [ScalarType "oid", ScalarType "oid"]
->           (ScalarType "oid")
->           False,
->         CatCreateFunction FunName "oidvectoreq"
->           [ScalarType "oidvector", ScalarType "oidvector"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "oidvectorge"
->           [ScalarType "oidvector", ScalarType "oidvector"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "oidvectorgt"
->           [ScalarType "oidvector", ScalarType "oidvector"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "oidvectorin" [Pseudo Cstring]
->           (ScalarType "oidvector")
->           False,
->         CatCreateFunction FunName "oidvectorle"
->           [ScalarType "oidvector", ScalarType "oidvector"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "oidvectorlt"
->           [ScalarType "oidvector", ScalarType "oidvector"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "oidvectorne"
->           [ScalarType "oidvector", ScalarType "oidvector"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "oidvectorout" [ScalarType "oidvector"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "oidvectorrecv" [Pseudo Internal]
->           (ScalarType "oidvector")
->           False,
->         CatCreateFunction FunName "oidvectorsend" [ScalarType "oidvector"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "oidvectortypes" [ScalarType "oidvector"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "on_pb"
->           [ScalarType "point", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "on_pl"
->           [ScalarType "point", ScalarType "line"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "on_ppath"
->           [ScalarType "point", ScalarType "path"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "on_ps"
->           [ScalarType "point", ScalarType "lseg"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "on_sb"
->           [ScalarType "lseg", ScalarType "box"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "on_sl"
->           [ScalarType "lseg", ScalarType "line"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "opaque_in" [Pseudo Cstring]
->           (Pseudo Opaque)
->           False,
->         CatCreateFunction FunName "opaque_out" [Pseudo Opaque]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "overlaps"
->           [ScalarType "time", ScalarType "time", ScalarType "time",
->            ScalarType "time"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "overlaps"
->           [ScalarType "time", ScalarType "time", ScalarType "time",
->            ScalarType "interval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "overlaps"
->           [ScalarType "time", ScalarType "interval", ScalarType "time",
->            ScalarType "time"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "overlaps"
->           [ScalarType "time", ScalarType "interval", ScalarType "time",
->            ScalarType "interval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "overlaps"
->           [ScalarType "timestamp", ScalarType "timestamp",
->            ScalarType "timestamp", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "overlaps"
->           [ScalarType "timestamp", ScalarType "timestamp",
->            ScalarType "timestamp", ScalarType "interval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "overlaps"
->           [ScalarType "timestamp", ScalarType "interval",
->            ScalarType "timestamp", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "overlaps"
->           [ScalarType "timestamp", ScalarType "interval",
->            ScalarType "timestamp", ScalarType "interval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "overlaps"
->           [ScalarType "timestamptz", ScalarType "timestamptz",
->            ScalarType "timestamptz", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "overlaps"
->           [ScalarType "timestamptz", ScalarType "timestamptz",
->            ScalarType "timestamptz", ScalarType "interval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "overlaps"
->           [ScalarType "timestamptz", ScalarType "interval",
->            ScalarType "timestamptz", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "overlaps"
->           [ScalarType "timestamptz", ScalarType "interval",
->            ScalarType "timestamptz", ScalarType "interval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "overlaps"
->           [ScalarType "timetz", ScalarType "timetz", ScalarType "timetz",
->            ScalarType "timetz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "overlay"
->           [ScalarType "text", ScalarType "text", ScalarType "int4"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "overlay"
->           [ScalarType "text", ScalarType "text", ScalarType "int4",
->            ScalarType "int4"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "path" [ScalarType "polygon"]
->           (ScalarType "path")
->           False,
->         CatCreateFunction FunName "path_add"
->           [ScalarType "path", ScalarType "path"]
->           (ScalarType "path")
->           False,
->         CatCreateFunction FunName "path_add_pt"
->           [ScalarType "path", ScalarType "point"]
->           (ScalarType "path")
->           False,
->         CatCreateFunction FunName "path_center" [ScalarType "path"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunName "path_contain_pt"
->           [ScalarType "path", ScalarType "point"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "path_distance"
->           [ScalarType "path", ScalarType "path"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "path_div_pt"
->           [ScalarType "path", ScalarType "point"]
->           (ScalarType "path")
->           False,
->         CatCreateFunction FunName "path_in" [Pseudo Cstring]
->           (ScalarType "path")
->           False,
->         CatCreateFunction FunName "path_inter"
->           [ScalarType "path", ScalarType "path"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "path_length" [ScalarType "path"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "path_mul_pt"
->           [ScalarType "path", ScalarType "point"]
->           (ScalarType "path")
->           False,
->         CatCreateFunction FunName "path_n_eq"
->           [ScalarType "path", ScalarType "path"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "path_n_ge"
->           [ScalarType "path", ScalarType "path"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "path_n_gt"
->           [ScalarType "path", ScalarType "path"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "path_n_le"
->           [ScalarType "path", ScalarType "path"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "path_n_lt"
->           [ScalarType "path", ScalarType "path"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "path_npoints" [ScalarType "path"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "path_out" [ScalarType "path"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "path_recv" [Pseudo Internal]
->           (ScalarType "path")
->           False,
->         CatCreateFunction FunName "path_send" [ScalarType "path"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "path_sub_pt"
->           [ScalarType "path", ScalarType "point"]
->           (ScalarType "path")
->           False,
->         CatCreateFunction FunName "pclose" [ScalarType "path"]
->           (ScalarType "path")
->           False,
->         CatCreateFunction FunName "pg_advisory_lock" [ScalarType "int8"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "pg_advisory_lock"
->           [ScalarType "int4", ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "pg_advisory_lock_shared"
->           [ScalarType "int8"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "pg_advisory_lock_shared"
->           [ScalarType "int4", ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "pg_advisory_unlock" [ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "pg_advisory_unlock"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "pg_advisory_unlock_all" [] (Pseudo Void)
->           False,
->         CatCreateFunction FunName "pg_advisory_unlock_shared"
->           [ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "pg_advisory_unlock_shared"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "pg_backend_pid" [] (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "pg_cancel_backend" [ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "pg_char_to_encoding" [ScalarType "name"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "pg_client_encoding" []
->           (ScalarType "name")
->           False,
->         CatCreateFunction FunName "pg_column_size" [Pseudo Any]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "pg_conf_load_time" []
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName "pg_conversion_is_visible"
->           [ScalarType "oid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "pg_current_xlog_insert_location" []
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "pg_current_xlog_location" []
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "pg_cursor" []
->           (SetOfType (Pseudo Record))
->           False,
->         CatCreateFunction FunName "pg_database_size" [ScalarType "name"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_database_size" [ScalarType "oid"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_encoding_to_char" [ScalarType "int4"]
->           (ScalarType "name")
->           False,
->         CatCreateFunction FunName "pg_function_is_visible"
->           [ScalarType "oid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "pg_get_constraintdef" [ScalarType "oid"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "pg_get_constraintdef"
->           [ScalarType "oid", ScalarType "bool"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "pg_get_expr"
->           [ScalarType "text", ScalarType "oid"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "pg_get_expr"
->           [ScalarType "text", ScalarType "oid", ScalarType "bool"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "pg_get_function_arguments"
->           [ScalarType "oid"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "pg_get_function_identity_arguments"
->           [ScalarType "oid"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "pg_get_function_result"
->           [ScalarType "oid"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "pg_get_functiondef" [ScalarType "oid"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "pg_get_indexdef" [ScalarType "oid"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "pg_get_indexdef"
->           [ScalarType "oid", ScalarType "int4", ScalarType "bool"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "pg_get_keywords" []
->           (SetOfType (Pseudo Record))
->           False,
->         CatCreateFunction FunName "pg_get_ruledef" [ScalarType "oid"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "pg_get_ruledef"
->           [ScalarType "oid", ScalarType "bool"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "pg_get_serial_sequence"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "pg_get_triggerdef" [ScalarType "oid"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "pg_get_userbyid" [ScalarType "oid"]
->           (ScalarType "name")
->           False,
->         CatCreateFunction FunName "pg_get_viewdef" [ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "pg_get_viewdef" [ScalarType "oid"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "pg_get_viewdef"
->           [ScalarType "text", ScalarType "bool"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "pg_get_viewdef"
->           [ScalarType "oid", ScalarType "bool"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "pg_has_role"
->           [ScalarType "name", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "pg_has_role"
->           [ScalarType "oid", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "pg_has_role"
->           [ScalarType "name", ScalarType "name", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "pg_has_role"
->           [ScalarType "name", ScalarType "oid", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "pg_has_role"
->           [ScalarType "oid", ScalarType "name", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "pg_has_role"
->           [ScalarType "oid", ScalarType "oid", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "pg_is_other_temp_schema"
->           [ScalarType "oid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "pg_lock_status" []
->           (SetOfType (Pseudo Record))
->           False,
->         CatCreateFunction FunName "pg_ls_dir" [ScalarType "text"]
->           (SetOfType (ScalarType "text"))
->           False,
->         CatCreateFunction FunName "pg_my_temp_schema" [] (ScalarType "oid")
->           False,
->         CatCreateFunction FunName "pg_opclass_is_visible"
->           [ScalarType "oid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "pg_operator_is_visible"
->           [ScalarType "oid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "pg_options_to_table"
->           [ArrayType (ScalarType "text")]
->           (SetOfType (Pseudo Record))
->           False,
->         CatCreateFunction FunName "pg_postmaster_start_time" []
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName "pg_prepared_statement" []
->           (SetOfType (Pseudo Record))
->           False,
->         CatCreateFunction FunName "pg_prepared_xact" []
->           (SetOfType (Pseudo Record))
->           False,
->         CatCreateFunction FunName "pg_read_file"
->           [ScalarType "text", ScalarType "int8", ScalarType "int8"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "pg_relation_size"
->           [ScalarType "regclass"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_relation_size"
->           [ScalarType "regclass", ScalarType "text"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_reload_conf" [] (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "pg_rotate_logfile" []
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "pg_show_all_settings" []
->           (SetOfType (Pseudo Record))
->           False,
->         CatCreateFunction FunName "pg_size_pretty" [ScalarType "int8"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "pg_sleep" [ScalarType "float8"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "pg_start_backup"
->           [ScalarType "text", ScalarType "bool"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "pg_stat_clear_snapshot" [] (Pseudo Void)
->           False,
->         CatCreateFunction FunName "pg_stat_file" [ScalarType "text"]
->           (Pseudo Record)
->           False,
->         CatCreateFunction FunName "pg_stat_get_activity"
->           [ScalarType "int4"]
->           (SetOfType (Pseudo Record))
->           False,
->         CatCreateFunction FunName "pg_stat_get_backend_activity"
->           [ScalarType "int4"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "pg_stat_get_backend_activity_start"
->           [ScalarType "int4"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName "pg_stat_get_backend_client_addr"
->           [ScalarType "int4"]
->           (ScalarType "inet")
->           False,
->         CatCreateFunction FunName "pg_stat_get_backend_client_port"
->           [ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "pg_stat_get_backend_dbid"
->           [ScalarType "int4"]
->           (ScalarType "oid")
->           False,
->         CatCreateFunction FunName "pg_stat_get_backend_idset" []
->           (SetOfType (ScalarType "int4"))
->           False,
->         CatCreateFunction FunName "pg_stat_get_backend_pid"
->           [ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "pg_stat_get_backend_start"
->           [ScalarType "int4"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName "pg_stat_get_backend_userid"
->           [ScalarType "int4"]
->           (ScalarType "oid")
->           False,
->         CatCreateFunction FunName "pg_stat_get_backend_waiting"
->           [ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "pg_stat_get_backend_xact_start"
->           [ScalarType "int4"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName
->           "pg_stat_get_bgwriter_buf_written_checkpoints"
->           []
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_stat_get_bgwriter_buf_written_clean"
->           []
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_stat_get_bgwriter_maxwritten_clean"
->           []
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName
->           "pg_stat_get_bgwriter_requested_checkpoints"
->           []
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_stat_get_bgwriter_timed_checkpoints"
->           []
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_stat_get_blocks_fetched"
->           [ScalarType "oid"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_stat_get_blocks_hit"
->           [ScalarType "oid"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_stat_get_buf_alloc" []
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_stat_get_buf_written_backend" []
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_stat_get_db_blocks_fetched"
->           [ScalarType "oid"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_stat_get_db_blocks_hit"
->           [ScalarType "oid"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_stat_get_db_numbackends"
->           [ScalarType "oid"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "pg_stat_get_db_tuples_deleted"
->           [ScalarType "oid"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_stat_get_db_tuples_fetched"
->           [ScalarType "oid"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_stat_get_db_tuples_inserted"
->           [ScalarType "oid"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_stat_get_db_tuples_returned"
->           [ScalarType "oid"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_stat_get_db_tuples_updated"
->           [ScalarType "oid"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_stat_get_db_xact_commit"
->           [ScalarType "oid"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_stat_get_db_xact_rollback"
->           [ScalarType "oid"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_stat_get_dead_tuples"
->           [ScalarType "oid"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_stat_get_function_calls"
->           [ScalarType "oid"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_stat_get_function_self_time"
->           [ScalarType "oid"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_stat_get_function_time"
->           [ScalarType "oid"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_stat_get_last_analyze_time"
->           [ScalarType "oid"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName "pg_stat_get_last_autoanalyze_time"
->           [ScalarType "oid"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName "pg_stat_get_last_autovacuum_time"
->           [ScalarType "oid"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName "pg_stat_get_last_vacuum_time"
->           [ScalarType "oid"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName "pg_stat_get_live_tuples"
->           [ScalarType "oid"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_stat_get_numscans" [ScalarType "oid"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_stat_get_tuples_deleted"
->           [ScalarType "oid"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_stat_get_tuples_fetched"
->           [ScalarType "oid"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_stat_get_tuples_hot_updated"
->           [ScalarType "oid"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_stat_get_tuples_inserted"
->           [ScalarType "oid"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_stat_get_tuples_returned"
->           [ScalarType "oid"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_stat_get_tuples_updated"
->           [ScalarType "oid"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_stat_reset" [] (Pseudo Void) False,
->         CatCreateFunction FunName "pg_stop_backup" [] (ScalarType "text")
->           False,
->         CatCreateFunction FunName "pg_switch_xlog" [] (ScalarType "text")
->           False,
->         CatCreateFunction FunName "pg_table_is_visible" [ScalarType "oid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "pg_tablespace_databases"
->           [ScalarType "oid"]
->           (SetOfType (ScalarType "oid"))
->           False,
->         CatCreateFunction FunName "pg_tablespace_size" [ScalarType "name"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_tablespace_size" [ScalarType "oid"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_terminate_backend"
->           [ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "pg_timezone_abbrevs" []
->           (SetOfType (Pseudo Record))
->           False,
->         CatCreateFunction FunName "pg_timezone_names" []
->           (SetOfType (Pseudo Record))
->           False,
->         CatCreateFunction FunName "pg_total_relation_size"
->           [ScalarType "regclass"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "pg_try_advisory_lock"
->           [ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "pg_try_advisory_lock"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "pg_try_advisory_lock_shared"
->           [ScalarType "int8"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "pg_try_advisory_lock_shared"
->           [ScalarType "int4", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "pg_ts_config_is_visible"
->           [ScalarType "oid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "pg_ts_dict_is_visible"
->           [ScalarType "oid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "pg_ts_parser_is_visible"
->           [ScalarType "oid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "pg_ts_template_is_visible"
->           [ScalarType "oid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "pg_type_is_visible" [ScalarType "oid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "pg_typeof" [Pseudo Any]
->           (ScalarType "regtype")
->           False,
->         CatCreateFunction FunName "pg_xlogfile_name" [ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "pg_xlogfile_name_offset"
->           [ScalarType "text"]
->           (Pseudo Record)
->           False,
->         CatCreateFunction FunName "pi" [] (ScalarType "float8") False,
->         CatCreateFunction FunName "plainto_tsquery" [ScalarType "text"]
->           (ScalarType "tsquery")
->           False,
->         CatCreateFunction FunName "plainto_tsquery"
->           [ScalarType "regconfig", ScalarType "text"]
->           (ScalarType "tsquery")
->           False,
->         CatCreateFunction FunName "point" [ScalarType "lseg"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunName "point" [ScalarType "path"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunName "point" [ScalarType "box"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunName "point" [ScalarType "polygon"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunName "point" [ScalarType "circle"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunName "point"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunName "point_above"
->           [ScalarType "point", ScalarType "point"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "point_add"
->           [ScalarType "point", ScalarType "point"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunName "point_below"
->           [ScalarType "point", ScalarType "point"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "point_distance"
->           [ScalarType "point", ScalarType "point"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "point_div"
->           [ScalarType "point", ScalarType "point"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunName "point_eq"
->           [ScalarType "point", ScalarType "point"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "point_horiz"
->           [ScalarType "point", ScalarType "point"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "point_in" [Pseudo Cstring]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunName "point_left"
->           [ScalarType "point", ScalarType "point"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "point_mul"
->           [ScalarType "point", ScalarType "point"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunName "point_ne"
->           [ScalarType "point", ScalarType "point"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "point_out" [ScalarType "point"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "point_recv" [Pseudo Internal]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunName "point_right"
->           [ScalarType "point", ScalarType "point"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "point_send" [ScalarType "point"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "point_sub"
->           [ScalarType "point", ScalarType "point"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunName "point_vert"
->           [ScalarType "point", ScalarType "point"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "poly_above"
->           [ScalarType "polygon", ScalarType "polygon"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "poly_below"
->           [ScalarType "polygon", ScalarType "polygon"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "poly_center" [ScalarType "polygon"]
->           (ScalarType "point")
->           False,
->         CatCreateFunction FunName "poly_contain"
->           [ScalarType "polygon", ScalarType "polygon"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "poly_contain_pt"
->           [ScalarType "polygon", ScalarType "point"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "poly_contained"
->           [ScalarType "polygon", ScalarType "polygon"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "poly_distance"
->           [ScalarType "polygon", ScalarType "polygon"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "poly_in" [Pseudo Cstring]
->           (ScalarType "polygon")
->           False,
->         CatCreateFunction FunName "poly_left"
->           [ScalarType "polygon", ScalarType "polygon"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "poly_npoints" [ScalarType "polygon"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "poly_out" [ScalarType "polygon"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "poly_overabove"
->           [ScalarType "polygon", ScalarType "polygon"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "poly_overbelow"
->           [ScalarType "polygon", ScalarType "polygon"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "poly_overlap"
->           [ScalarType "polygon", ScalarType "polygon"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "poly_overleft"
->           [ScalarType "polygon", ScalarType "polygon"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "poly_overright"
->           [ScalarType "polygon", ScalarType "polygon"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "poly_recv" [Pseudo Internal]
->           (ScalarType "polygon")
->           False,
->         CatCreateFunction FunName "poly_right"
->           [ScalarType "polygon", ScalarType "polygon"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "poly_same"
->           [ScalarType "polygon", ScalarType "polygon"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "poly_send" [ScalarType "polygon"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "polygon" [ScalarType "path"]
->           (ScalarType "polygon")
->           False,
->         CatCreateFunction FunName "polygon" [ScalarType "box"]
->           (ScalarType "polygon")
->           False,
->         CatCreateFunction FunName "polygon" [ScalarType "circle"]
->           (ScalarType "polygon")
->           False,
->         CatCreateFunction FunName "polygon"
->           [ScalarType "int4", ScalarType "circle"]
->           (ScalarType "polygon")
->           False,
->         CatCreateFunction FunName "popen" [ScalarType "path"]
->           (ScalarType "path")
->           False,
->         CatCreateFunction FunName "position"
->           [ScalarType "bytea", ScalarType "bytea"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "position"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "position"
->           [ScalarType "bit", ScalarType "bit"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "positionjoinsel"
->           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
->            ScalarType "int2", Pseudo Internal]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "positionsel"
->           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
->            ScalarType "int4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "postgresql_fdw_validator"
->           [ArrayType (ScalarType "text"), ScalarType "oid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "pow"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "pow"
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "power"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "power"
->           [ScalarType "numeric", ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "prsd_end" [Pseudo Internal]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "prsd_headline"
->           [Pseudo Internal, Pseudo Internal, ScalarType "tsquery"]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "prsd_lextype" [Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "prsd_nexttoken"
->           [Pseudo Internal, Pseudo Internal, Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "prsd_start"
->           [Pseudo Internal, ScalarType "int4"]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "pt_contained_circle"
->           [ScalarType "point", ScalarType "circle"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "pt_contained_poly"
->           [ScalarType "point", ScalarType "polygon"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "query_to_xml"
->           [ScalarType "text", ScalarType "bool", ScalarType "bool",
->            ScalarType "text"]
->           (ScalarType "xml")
->           False,
->         CatCreateFunction FunName "query_to_xml_and_xmlschema"
->           [ScalarType "text", ScalarType "bool", ScalarType "bool",
->            ScalarType "text"]
->           (ScalarType "xml")
->           False,
->         CatCreateFunction FunName "query_to_xmlschema"
->           [ScalarType "text", ScalarType "bool", ScalarType "bool",
->            ScalarType "text"]
->           (ScalarType "xml")
->           False,
->         CatCreateFunction FunName "querytree" [ScalarType "tsquery"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "quote_ident" [ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "quote_literal" [ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "quote_literal" [Pseudo AnyElement]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "quote_nullable" [ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "quote_nullable" [Pseudo AnyElement]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "radians" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "radius" [ScalarType "circle"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "random" [] (ScalarType "float8") False,
->         CatCreateFunction FunName "record_eq"
->           [Pseudo Record, Pseudo Record]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "record_ge"
->           [Pseudo Record, Pseudo Record]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "record_gt"
->           [Pseudo Record, Pseudo Record]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "record_in"
->           [Pseudo Cstring, ScalarType "oid", ScalarType "int4"]
->           (Pseudo Record)
->           False,
->         CatCreateFunction FunName "record_le"
->           [Pseudo Record, Pseudo Record]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "record_lt"
->           [Pseudo Record, Pseudo Record]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "record_ne"
->           [Pseudo Record, Pseudo Record]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "record_out" [Pseudo Record]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "record_recv"
->           [Pseudo Internal, ScalarType "oid", ScalarType "int4"]
->           (Pseudo Record)
->           False,
->         CatCreateFunction FunName "record_send" [Pseudo Record]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "regclass" [ScalarType "text"]
->           (ScalarType "regclass")
->           False,
->         CatCreateFunction FunName "regclassin" [Pseudo Cstring]
->           (ScalarType "regclass")
->           False,
->         CatCreateFunction FunName "regclassout" [ScalarType "regclass"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "regclassrecv" [Pseudo Internal]
->           (ScalarType "regclass")
->           False,
->         CatCreateFunction FunName "regclasssend" [ScalarType "regclass"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "regconfigin" [Pseudo Cstring]
->           (ScalarType "regconfig")
->           False,
->         CatCreateFunction FunName "regconfigout" [ScalarType "regconfig"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "regconfigrecv" [Pseudo Internal]
->           (ScalarType "regconfig")
->           False,
->         CatCreateFunction FunName "regconfigsend" [ScalarType "regconfig"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "regdictionaryin" [Pseudo Cstring]
->           (ScalarType "regdictionary")
->           False,
->         CatCreateFunction FunName "regdictionaryout"
->           [ScalarType "regdictionary"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "regdictionaryrecv" [Pseudo Internal]
->           (ScalarType "regdictionary")
->           False,
->         CatCreateFunction FunName "regdictionarysend"
->           [ScalarType "regdictionary"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "regexeqjoinsel"
->           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
->            ScalarType "int2", Pseudo Internal]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "regexeqsel"
->           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
->            ScalarType "int4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "regexnejoinsel"
->           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
->            ScalarType "int2", Pseudo Internal]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "regexnesel"
->           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
->            ScalarType "int4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "regexp_matches"
->           [ScalarType "text", ScalarType "text"]
->           (SetOfType (ArrayType (ScalarType "text")))
->           False,
->         CatCreateFunction FunName "regexp_matches"
->           [ScalarType "text", ScalarType "text", ScalarType "text"]
->           (SetOfType (ArrayType (ScalarType "text")))
->           False,
->         CatCreateFunction FunName "regexp_replace"
->           [ScalarType "text", ScalarType "text", ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "regexp_replace"
->           [ScalarType "text", ScalarType "text", ScalarType "text",
->            ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "regexp_split_to_array"
->           [ScalarType "text", ScalarType "text"]
->           (ArrayType (ScalarType "text"))
->           False,
->         CatCreateFunction FunName "regexp_split_to_array"
->           [ScalarType "text", ScalarType "text", ScalarType "text"]
->           (ArrayType (ScalarType "text"))
->           False,
->         CatCreateFunction FunName "regexp_split_to_table"
->           [ScalarType "text", ScalarType "text"]
->           (SetOfType (ScalarType "text"))
->           False,
->         CatCreateFunction FunName "regexp_split_to_table"
->           [ScalarType "text", ScalarType "text", ScalarType "text"]
->           (SetOfType (ScalarType "text"))
->           False,
->         CatCreateFunction FunName "regoperatorin" [Pseudo Cstring]
->           (ScalarType "regoperator")
->           False,
->         CatCreateFunction FunName "regoperatorout"
->           [ScalarType "regoperator"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "regoperatorrecv" [Pseudo Internal]
->           (ScalarType "regoperator")
->           False,
->         CatCreateFunction FunName "regoperatorsend"
->           [ScalarType "regoperator"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "regoperin" [Pseudo Cstring]
->           (ScalarType "regoper")
->           False,
->         CatCreateFunction FunName "regoperout" [ScalarType "regoper"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "regoperrecv" [Pseudo Internal]
->           (ScalarType "regoper")
->           False,
->         CatCreateFunction FunName "regopersend" [ScalarType "regoper"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "regprocedurein" [Pseudo Cstring]
->           (ScalarType "regprocedure")
->           False,
->         CatCreateFunction FunName "regprocedureout"
->           [ScalarType "regprocedure"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "regprocedurerecv" [Pseudo Internal]
->           (ScalarType "regprocedure")
->           False,
->         CatCreateFunction FunName "regproceduresend"
->           [ScalarType "regprocedure"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "regprocin" [Pseudo Cstring]
->           (ScalarType "regproc")
->           False,
->         CatCreateFunction FunName "regprocout" [ScalarType "regproc"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "regprocrecv" [Pseudo Internal]
->           (ScalarType "regproc")
->           False,
->         CatCreateFunction FunName "regprocsend" [ScalarType "regproc"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "regtypein" [Pseudo Cstring]
->           (ScalarType "regtype")
->           False,
->         CatCreateFunction FunName "regtypeout" [ScalarType "regtype"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "regtyperecv" [Pseudo Internal]
->           (ScalarType "regtype")
->           False,
->         CatCreateFunction FunName "regtypesend" [ScalarType "regtype"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "reltime" [ScalarType "interval"]
->           (ScalarType "reltime")
->           False,
->         CatCreateFunction FunName "reltimeeq"
->           [ScalarType "reltime", ScalarType "reltime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "reltimege"
->           [ScalarType "reltime", ScalarType "reltime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "reltimegt"
->           [ScalarType "reltime", ScalarType "reltime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "reltimein" [Pseudo Cstring]
->           (ScalarType "reltime")
->           False,
->         CatCreateFunction FunName "reltimele"
->           [ScalarType "reltime", ScalarType "reltime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "reltimelt"
->           [ScalarType "reltime", ScalarType "reltime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "reltimene"
->           [ScalarType "reltime", ScalarType "reltime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "reltimeout" [ScalarType "reltime"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "reltimerecv" [Pseudo Internal]
->           (ScalarType "reltime")
->           False,
->         CatCreateFunction FunName "reltimesend" [ScalarType "reltime"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "repeat"
->           [ScalarType "text", ScalarType "int4"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "replace"
->           [ScalarType "text", ScalarType "text", ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "round" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "round" [ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "round"
->           [ScalarType "numeric", ScalarType "int4"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "rpad"
->           [ScalarType "text", ScalarType "int4"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "rpad"
->           [ScalarType "text", ScalarType "int4", ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "rtrim" [ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "rtrim"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "scalargtjoinsel"
->           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
->            ScalarType "int2", Pseudo Internal]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "scalargtsel"
->           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
->            ScalarType "int4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "scalarltjoinsel"
->           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
->            ScalarType "int2", Pseudo Internal]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "scalarltsel"
->           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
->            ScalarType "int4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "schema_to_xml"
->           [ScalarType "name", ScalarType "bool", ScalarType "bool",
->            ScalarType "text"]
->           (ScalarType "xml")
->           False,
->         CatCreateFunction FunName "schema_to_xml_and_xmlschema"
->           [ScalarType "name", ScalarType "bool", ScalarType "bool",
->            ScalarType "text"]
->           (ScalarType "xml")
->           False,
->         CatCreateFunction FunName "schema_to_xmlschema"
->           [ScalarType "name", ScalarType "bool", ScalarType "bool",
->            ScalarType "text"]
->           (ScalarType "xml")
->           False,
->         CatCreateFunction FunName "session_user" [] (ScalarType "name")
->           False,
->         CatCreateFunction FunName "set_bit"
->           [ScalarType "bytea", ScalarType "int4", ScalarType "int4"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "set_byte"
->           [ScalarType "bytea", ScalarType "int4", ScalarType "int4"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "set_config"
->           [ScalarType "text", ScalarType "text", ScalarType "bool"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "set_masklen"
->           [ScalarType "cidr", ScalarType "int4"]
->           (ScalarType "cidr")
->           False,
->         CatCreateFunction FunName "set_masklen"
->           [ScalarType "inet", ScalarType "int4"]
->           (ScalarType "inet")
->           False,
->         CatCreateFunction FunName "setseed" [ScalarType "float8"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "setval"
->           [ScalarType "regclass", ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "setval"
->           [ScalarType "regclass", ScalarType "int8", ScalarType "bool"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "setweight"
->           [ScalarType "tsvector", ScalarType "char"]
->           (ScalarType "tsvector")
->           False,
->         CatCreateFunction FunName "shell_in" [Pseudo Cstring]
->           (Pseudo Opaque)
->           False,
->         CatCreateFunction FunName "shell_out" [Pseudo Opaque]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "shift_jis_2004_to_euc_jis_2004"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "shift_jis_2004_to_utf8"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "shobj_description"
->           [ScalarType "oid", ScalarType "name"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "sign" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "sign" [ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "similar_escape"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "sin" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "sjis_to_euc_jp"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "sjis_to_mic"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "sjis_to_utf8"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "slope"
->           [ScalarType "point", ScalarType "point"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "smgreq"
->           [ScalarType "smgr", ScalarType "smgr"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "smgrin" [Pseudo Cstring]
->           (ScalarType "smgr")
->           False,
->         CatCreateFunction FunName "smgrne"
->           [ScalarType "smgr", ScalarType "smgr"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "smgrout" [ScalarType "smgr"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "split_part"
->           [ScalarType "text", ScalarType "text", ScalarType "int4"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "sqrt" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "sqrt" [ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "statement_timestamp" []
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName "string_to_array"
->           [ScalarType "text", ScalarType "text"]
->           (ArrayType (ScalarType "text"))
->           False,
->         CatCreateFunction FunName "strip" [ScalarType "tsvector"]
->           (ScalarType "tsvector")
->           False,
->         CatCreateFunction FunName "strpos"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "substr"
->           [ScalarType "bytea", ScalarType "int4"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "substr"
->           [ScalarType "text", ScalarType "int4"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "substr"
->           [ScalarType "bytea", ScalarType "int4", ScalarType "int4"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "substr"
->           [ScalarType "text", ScalarType "int4", ScalarType "int4"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "substring"
->           [ScalarType "bytea", ScalarType "int4"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "substring"
->           [ScalarType "text", ScalarType "int4"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "substring"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "substring"
->           [ScalarType "bit", ScalarType "int4"]
->           (ScalarType "bit")
->           False,
->         CatCreateFunction FunName "substring"
->           [ScalarType "bytea", ScalarType "int4", ScalarType "int4"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "substring"
->           [ScalarType "text", ScalarType "int4", ScalarType "int4"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "substring"
->           [ScalarType "text", ScalarType "text", ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "substring"
->           [ScalarType "bit", ScalarType "int4", ScalarType "int4"]
->           (ScalarType "bit")
->           False,
->         CatCreateFunction FunName "suppress_redundant_updates_trigger" []
->           (Pseudo Trigger)
->           False,
->         CatCreateFunction FunName "table_to_xml"
->           [ScalarType "regclass", ScalarType "bool", ScalarType "bool",
->            ScalarType "text"]
->           (ScalarType "xml")
->           False,
->         CatCreateFunction FunName "table_to_xml_and_xmlschema"
->           [ScalarType "regclass", ScalarType "bool", ScalarType "bool",
->            ScalarType "text"]
->           (ScalarType "xml")
->           False,
->         CatCreateFunction FunName "table_to_xmlschema"
->           [ScalarType "regclass", ScalarType "bool", ScalarType "bool",
->            ScalarType "text"]
->           (ScalarType "xml")
->           False,
->         CatCreateFunction FunName "tan" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "text" [ScalarType "bool"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "text" [ScalarType "char"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "text" [ScalarType "name"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "text" [ScalarType "xml"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "text" [ScalarType "inet"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "text" [ScalarType "bpchar"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "text_ge"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "text_gt"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "text_larger"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "text_le"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "text_lt"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "text_pattern_ge"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "text_pattern_gt"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "text_pattern_le"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "text_pattern_lt"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "text_smaller"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "textanycat"
->           [ScalarType "text", Pseudo AnyNonArray]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "textcat"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "texteq"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "texticlike"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "texticnlike"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "texticregexeq"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "texticregexne"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "textin" [Pseudo Cstring]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "textlen" [ScalarType "text"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "textlike"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "textne"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "textnlike"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "textout" [ScalarType "text"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "textrecv" [Pseudo Internal]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "textregexeq"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "textregexne"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "textsend" [ScalarType "text"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "thesaurus_init" [Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "thesaurus_lexize"
->           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
->            Pseudo Internal]
->           (Pseudo Internal)
->           False,
->         CatCreateFunction FunName "tideq"
->           [ScalarType "tid", ScalarType "tid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tidge"
->           [ScalarType "tid", ScalarType "tid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tidgt"
->           [ScalarType "tid", ScalarType "tid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tidin" [Pseudo Cstring]
->           (ScalarType "tid")
->           False,
->         CatCreateFunction FunName "tidlarger"
->           [ScalarType "tid", ScalarType "tid"]
->           (ScalarType "tid")
->           False,
->         CatCreateFunction FunName "tidle"
->           [ScalarType "tid", ScalarType "tid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tidlt"
->           [ScalarType "tid", ScalarType "tid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tidne"
->           [ScalarType "tid", ScalarType "tid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tidout" [ScalarType "tid"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "tidrecv" [Pseudo Internal]
->           (ScalarType "tid")
->           False,
->         CatCreateFunction FunName "tidsend" [ScalarType "tid"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "tidsmaller"
->           [ScalarType "tid", ScalarType "tid"]
->           (ScalarType "tid")
->           False,
->         CatCreateFunction FunName "time" [ScalarType "abstime"]
->           (ScalarType "time")
->           False,
->         CatCreateFunction FunName "time" [ScalarType "timestamp"]
->           (ScalarType "time")
->           False,
->         CatCreateFunction FunName "time" [ScalarType "timestamptz"]
->           (ScalarType "time")
->           False,
->         CatCreateFunction FunName "time" [ScalarType "interval"]
->           (ScalarType "time")
->           False,
->         CatCreateFunction FunName "time" [ScalarType "timetz"]
->           (ScalarType "time")
->           False,
->         CatCreateFunction FunName "time"
->           [ScalarType "time", ScalarType "int4"]
->           (ScalarType "time")
->           False,
->         CatCreateFunction FunName "time_cmp"
->           [ScalarType "time", ScalarType "time"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "time_eq"
->           [ScalarType "time", ScalarType "time"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "time_ge"
->           [ScalarType "time", ScalarType "time"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "time_gt"
->           [ScalarType "time", ScalarType "time"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "time_hash" [ScalarType "time"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "time_in"
->           [Pseudo Cstring, ScalarType "oid", ScalarType "int4"]
->           (ScalarType "time")
->           False,
->         CatCreateFunction FunName "time_larger"
->           [ScalarType "time", ScalarType "time"]
->           (ScalarType "time")
->           False,
->         CatCreateFunction FunName "time_le"
->           [ScalarType "time", ScalarType "time"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "time_lt"
->           [ScalarType "time", ScalarType "time"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "time_mi_interval"
->           [ScalarType "time", ScalarType "interval"]
->           (ScalarType "time")
->           False,
->         CatCreateFunction FunName "time_mi_time"
->           [ScalarType "time", ScalarType "time"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunName "time_ne"
->           [ScalarType "time", ScalarType "time"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "time_out" [ScalarType "time"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "time_pl_interval"
->           [ScalarType "time", ScalarType "interval"]
->           (ScalarType "time")
->           False,
->         CatCreateFunction FunName "time_recv"
->           [Pseudo Internal, ScalarType "oid", ScalarType "int4"]
->           (ScalarType "time")
->           False,
->         CatCreateFunction FunName "time_send" [ScalarType "time"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "time_smaller"
->           [ScalarType "time", ScalarType "time"]
->           (ScalarType "time")
->           False,
->         CatCreateFunction FunName "timedate_pl"
->           [ScalarType "time", ScalarType "date"]
->           (ScalarType "timestamp")
->           False,
->         CatCreateFunction FunName "timemi"
->           [ScalarType "abstime", ScalarType "reltime"]
->           (ScalarType "abstime")
->           False,
->         CatCreateFunction FunName "timenow" [] (ScalarType "abstime")
->           False,
->         CatCreateFunction FunName "timeofday" [] (ScalarType "text") False,
->         CatCreateFunction FunName "timepl"
->           [ScalarType "abstime", ScalarType "reltime"]
->           (ScalarType "abstime")
->           False,
->         CatCreateFunction FunName "timestamp" [ScalarType "abstime"]
->           (ScalarType "timestamp")
->           False,
->         CatCreateFunction FunName "timestamp" [ScalarType "date"]
->           (ScalarType "timestamp")
->           False,
->         CatCreateFunction FunName "timestamp" [ScalarType "timestamptz"]
->           (ScalarType "timestamp")
->           False,
->         CatCreateFunction FunName "timestamp"
->           [ScalarType "date", ScalarType "time"]
->           (ScalarType "timestamp")
->           False,
->         CatCreateFunction FunName "timestamp"
->           [ScalarType "timestamp", ScalarType "int4"]
->           (ScalarType "timestamp")
->           False,
->         CatCreateFunction FunName "timestamp_cmp"
->           [ScalarType "timestamp", ScalarType "timestamp"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "timestamp_cmp_date"
->           [ScalarType "timestamp", ScalarType "date"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "timestamp_cmp_timestamptz"
->           [ScalarType "timestamp", ScalarType "timestamptz"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "timestamp_eq"
->           [ScalarType "timestamp", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamp_eq_date"
->           [ScalarType "timestamp", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamp_eq_timestamptz"
->           [ScalarType "timestamp", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamp_ge"
->           [ScalarType "timestamp", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamp_ge_date"
->           [ScalarType "timestamp", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamp_ge_timestamptz"
->           [ScalarType "timestamp", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamp_gt"
->           [ScalarType "timestamp", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamp_gt_date"
->           [ScalarType "timestamp", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamp_gt_timestamptz"
->           [ScalarType "timestamp", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamp_hash" [ScalarType "timestamp"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "timestamp_in"
->           [Pseudo Cstring, ScalarType "oid", ScalarType "int4"]
->           (ScalarType "timestamp")
->           False,
->         CatCreateFunction FunName "timestamp_larger"
->           [ScalarType "timestamp", ScalarType "timestamp"]
->           (ScalarType "timestamp")
->           False,
->         CatCreateFunction FunName "timestamp_le"
->           [ScalarType "timestamp", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamp_le_date"
->           [ScalarType "timestamp", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamp_le_timestamptz"
->           [ScalarType "timestamp", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamp_lt"
->           [ScalarType "timestamp", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamp_lt_date"
->           [ScalarType "timestamp", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamp_lt_timestamptz"
->           [ScalarType "timestamp", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamp_mi"
->           [ScalarType "timestamp", ScalarType "timestamp"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunName "timestamp_mi_interval"
->           [ScalarType "timestamp", ScalarType "interval"]
->           (ScalarType "timestamp")
->           False,
->         CatCreateFunction FunName "timestamp_ne"
->           [ScalarType "timestamp", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamp_ne_date"
->           [ScalarType "timestamp", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamp_ne_timestamptz"
->           [ScalarType "timestamp", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamp_out" [ScalarType "timestamp"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "timestamp_pl_interval"
->           [ScalarType "timestamp", ScalarType "interval"]
->           (ScalarType "timestamp")
->           False,
->         CatCreateFunction FunName "timestamp_recv"
->           [Pseudo Internal, ScalarType "oid", ScalarType "int4"]
->           (ScalarType "timestamp")
->           False,
->         CatCreateFunction FunName "timestamp_send" [ScalarType "timestamp"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "timestamp_smaller"
->           [ScalarType "timestamp", ScalarType "timestamp"]
->           (ScalarType "timestamp")
->           False,
->         CatCreateFunction FunName "timestamptypmodin"
->           [ArrayType (Pseudo Cstring)]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "timestamptypmodout" [ScalarType "int4"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "timestamptz" [ScalarType "abstime"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName "timestamptz" [ScalarType "date"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName "timestamptz" [ScalarType "timestamp"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName "timestamptz"
->           [ScalarType "date", ScalarType "time"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName "timestamptz"
->           [ScalarType "date", ScalarType "timetz"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName "timestamptz"
->           [ScalarType "timestamptz", ScalarType "int4"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName "timestamptz_cmp"
->           [ScalarType "timestamptz", ScalarType "timestamptz"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "timestamptz_cmp_date"
->           [ScalarType "timestamptz", ScalarType "date"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "timestamptz_cmp_timestamp"
->           [ScalarType "timestamptz", ScalarType "timestamp"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "timestamptz_eq"
->           [ScalarType "timestamptz", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamptz_eq_date"
->           [ScalarType "timestamptz", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamptz_eq_timestamp"
->           [ScalarType "timestamptz", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamptz_ge"
->           [ScalarType "timestamptz", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamptz_ge_date"
->           [ScalarType "timestamptz", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamptz_ge_timestamp"
->           [ScalarType "timestamptz", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamptz_gt"
->           [ScalarType "timestamptz", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamptz_gt_date"
->           [ScalarType "timestamptz", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamptz_gt_timestamp"
->           [ScalarType "timestamptz", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamptz_in"
->           [Pseudo Cstring, ScalarType "oid", ScalarType "int4"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName "timestamptz_larger"
->           [ScalarType "timestamptz", ScalarType "timestamptz"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName "timestamptz_le"
->           [ScalarType "timestamptz", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamptz_le_date"
->           [ScalarType "timestamptz", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamptz_le_timestamp"
->           [ScalarType "timestamptz", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamptz_lt"
->           [ScalarType "timestamptz", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamptz_lt_date"
->           [ScalarType "timestamptz", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamptz_lt_timestamp"
->           [ScalarType "timestamptz", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamptz_mi"
->           [ScalarType "timestamptz", ScalarType "timestamptz"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunName "timestamptz_mi_interval"
->           [ScalarType "timestamptz", ScalarType "interval"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName "timestamptz_ne"
->           [ScalarType "timestamptz", ScalarType "timestamptz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamptz_ne_date"
->           [ScalarType "timestamptz", ScalarType "date"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamptz_ne_timestamp"
->           [ScalarType "timestamptz", ScalarType "timestamp"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timestamptz_out"
->           [ScalarType "timestamptz"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "timestamptz_pl_interval"
->           [ScalarType "timestamptz", ScalarType "interval"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName "timestamptz_recv"
->           [Pseudo Internal, ScalarType "oid", ScalarType "int4"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName "timestamptz_send"
->           [ScalarType "timestamptz"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "timestamptz_smaller"
->           [ScalarType "timestamptz", ScalarType "timestamptz"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName "timestamptztypmodin"
->           [ArrayType (Pseudo Cstring)]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "timestamptztypmodout"
->           [ScalarType "int4"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "timetypmodin"
->           [ArrayType (Pseudo Cstring)]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "timetypmodout" [ScalarType "int4"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "timetz" [ScalarType "time"]
->           (ScalarType "timetz")
->           False,
->         CatCreateFunction FunName "timetz" [ScalarType "timestamptz"]
->           (ScalarType "timetz")
->           False,
->         CatCreateFunction FunName "timetz"
->           [ScalarType "timetz", ScalarType "int4"]
->           (ScalarType "timetz")
->           False,
->         CatCreateFunction FunName "timetz_cmp"
->           [ScalarType "timetz", ScalarType "timetz"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "timetz_eq"
->           [ScalarType "timetz", ScalarType "timetz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timetz_ge"
->           [ScalarType "timetz", ScalarType "timetz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timetz_gt"
->           [ScalarType "timetz", ScalarType "timetz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timetz_hash" [ScalarType "timetz"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "timetz_in"
->           [Pseudo Cstring, ScalarType "oid", ScalarType "int4"]
->           (ScalarType "timetz")
->           False,
->         CatCreateFunction FunName "timetz_larger"
->           [ScalarType "timetz", ScalarType "timetz"]
->           (ScalarType "timetz")
->           False,
->         CatCreateFunction FunName "timetz_le"
->           [ScalarType "timetz", ScalarType "timetz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timetz_lt"
->           [ScalarType "timetz", ScalarType "timetz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timetz_mi_interval"
->           [ScalarType "timetz", ScalarType "interval"]
->           (ScalarType "timetz")
->           False,
->         CatCreateFunction FunName "timetz_ne"
->           [ScalarType "timetz", ScalarType "timetz"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "timetz_out" [ScalarType "timetz"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "timetz_pl_interval"
->           [ScalarType "timetz", ScalarType "interval"]
->           (ScalarType "timetz")
->           False,
->         CatCreateFunction FunName "timetz_recv"
->           [Pseudo Internal, ScalarType "oid", ScalarType "int4"]
->           (ScalarType "timetz")
->           False,
->         CatCreateFunction FunName "timetz_send" [ScalarType "timetz"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "timetz_smaller"
->           [ScalarType "timetz", ScalarType "timetz"]
->           (ScalarType "timetz")
->           False,
->         CatCreateFunction FunName "timetzdate_pl"
->           [ScalarType "timetz", ScalarType "date"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName "timetztypmodin"
->           [ArrayType (Pseudo Cstring)]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "timetztypmodout" [ScalarType "int4"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "timezone"
->           [ScalarType "text", ScalarType "timestamp"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName "timezone"
->           [ScalarType "text", ScalarType "timestamptz"]
->           (ScalarType "timestamp")
->           False,
->         CatCreateFunction FunName "timezone"
->           [ScalarType "text", ScalarType "timetz"]
->           (ScalarType "timetz")
->           False,
->         CatCreateFunction FunName "timezone"
->           [ScalarType "interval", ScalarType "timestamp"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName "timezone"
->           [ScalarType "interval", ScalarType "timestamptz"]
->           (ScalarType "timestamp")
->           False,
->         CatCreateFunction FunName "timezone"
->           [ScalarType "interval", ScalarType "timetz"]
->           (ScalarType "timetz")
->           False,
->         CatCreateFunction FunName "tinterval"
->           [ScalarType "abstime", ScalarType "abstime"]
->           (ScalarType "tinterval")
->           False,
->         CatCreateFunction FunName "tintervalct"
->           [ScalarType "tinterval", ScalarType "tinterval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tintervalend" [ScalarType "tinterval"]
->           (ScalarType "abstime")
->           False,
->         CatCreateFunction FunName "tintervaleq"
->           [ScalarType "tinterval", ScalarType "tinterval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tintervalge"
->           [ScalarType "tinterval", ScalarType "tinterval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tintervalgt"
->           [ScalarType "tinterval", ScalarType "tinterval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tintervalin" [Pseudo Cstring]
->           (ScalarType "tinterval")
->           False,
->         CatCreateFunction FunName "tintervalle"
->           [ScalarType "tinterval", ScalarType "tinterval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tintervalleneq"
->           [ScalarType "tinterval", ScalarType "reltime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tintervallenge"
->           [ScalarType "tinterval", ScalarType "reltime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tintervallengt"
->           [ScalarType "tinterval", ScalarType "reltime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tintervallenle"
->           [ScalarType "tinterval", ScalarType "reltime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tintervallenlt"
->           [ScalarType "tinterval", ScalarType "reltime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tintervallenne"
->           [ScalarType "tinterval", ScalarType "reltime"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tintervallt"
->           [ScalarType "tinterval", ScalarType "tinterval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tintervalne"
->           [ScalarType "tinterval", ScalarType "tinterval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tintervalout" [ScalarType "tinterval"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "tintervalov"
->           [ScalarType "tinterval", ScalarType "tinterval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tintervalrecv" [Pseudo Internal]
->           (ScalarType "tinterval")
->           False,
->         CatCreateFunction FunName "tintervalrel" [ScalarType "tinterval"]
->           (ScalarType "reltime")
->           False,
->         CatCreateFunction FunName "tintervalsame"
->           [ScalarType "tinterval", ScalarType "tinterval"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tintervalsend" [ScalarType "tinterval"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "tintervalstart" [ScalarType "tinterval"]
->           (ScalarType "abstime")
->           False,
->         CatCreateFunction FunName "to_ascii" [ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "to_ascii"
->           [ScalarType "text", ScalarType "name"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "to_ascii"
->           [ScalarType "text", ScalarType "int4"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "to_char"
->           [ScalarType "int8", ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "to_char"
->           [ScalarType "int4", ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "to_char"
->           [ScalarType "float4", ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "to_char"
->           [ScalarType "float8", ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "to_char"
->           [ScalarType "timestamp", ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "to_char"
->           [ScalarType "timestamptz", ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "to_char"
->           [ScalarType "interval", ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "to_char"
->           [ScalarType "numeric", ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "to_date"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "date")
->           False,
->         CatCreateFunction FunName "to_hex" [ScalarType "int8"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "to_hex" [ScalarType "int4"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "to_number"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "to_timestamp" [ScalarType "float8"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName "to_timestamp"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName "to_tsquery" [ScalarType "text"]
->           (ScalarType "tsquery")
->           False,
->         CatCreateFunction FunName "to_tsquery"
->           [ScalarType "regconfig", ScalarType "text"]
->           (ScalarType "tsquery")
->           False,
->         CatCreateFunction FunName "to_tsvector" [ScalarType "text"]
->           (ScalarType "tsvector")
->           False,
->         CatCreateFunction FunName "to_tsvector"
->           [ScalarType "regconfig", ScalarType "text"]
->           (ScalarType "tsvector")
->           False,
->         CatCreateFunction FunName "transaction_timestamp" []
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunName "translate"
->           [ScalarType "text", ScalarType "text", ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "trigger_in" [Pseudo Cstring]
->           (Pseudo Trigger)
->           False,
->         CatCreateFunction FunName "trigger_out" [Pseudo Trigger]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "trunc" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "trunc" [ScalarType "macaddr"]
->           (ScalarType "macaddr")
->           False,
->         CatCreateFunction FunName "trunc" [ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "trunc"
->           [ScalarType "numeric", ScalarType "int4"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunName "ts_debug" [ScalarType "text"]
->           (SetOfType (Pseudo Record))
->           False,
->         CatCreateFunction FunName "ts_debug"
->           [ScalarType "regconfig", ScalarType "text"]
->           (SetOfType (Pseudo Record))
->           False,
->         CatCreateFunction FunName "ts_headline"
->           [ScalarType "text", ScalarType "tsquery"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "ts_headline"
->           [ScalarType "text", ScalarType "tsquery", ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "ts_headline"
->           [ScalarType "regconfig", ScalarType "text", ScalarType "tsquery"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "ts_headline"
->           [ScalarType "regconfig", ScalarType "text", ScalarType "tsquery",
->            ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "ts_lexize"
->           [ScalarType "regdictionary", ScalarType "text"]
->           (ArrayType (ScalarType "text"))
->           False,
->         CatCreateFunction FunName "ts_match_qv"
->           [ScalarType "tsquery", ScalarType "tsvector"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "ts_match_tq"
->           [ScalarType "text", ScalarType "tsquery"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "ts_match_tt"
->           [ScalarType "text", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "ts_match_vq"
->           [ScalarType "tsvector", ScalarType "tsquery"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "ts_parse"
->           [ScalarType "text", ScalarType "text"]
->           (SetOfType (Pseudo Record))
->           False,
->         CatCreateFunction FunName "ts_parse"
->           [ScalarType "oid", ScalarType "text"]
->           (SetOfType (Pseudo Record))
->           False,
->         CatCreateFunction FunName "ts_rank"
->           [ScalarType "tsvector", ScalarType "tsquery"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunName "ts_rank"
->           [ArrayType (ScalarType "float4"), ScalarType "tsvector",
->            ScalarType "tsquery"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunName "ts_rank"
->           [ScalarType "tsvector", ScalarType "tsquery", ScalarType "int4"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunName "ts_rank"
->           [ArrayType (ScalarType "float4"), ScalarType "tsvector",
->            ScalarType "tsquery", ScalarType "int4"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunName "ts_rank_cd"
->           [ScalarType "tsvector", ScalarType "tsquery"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunName "ts_rank_cd"
->           [ArrayType (ScalarType "float4"), ScalarType "tsvector",
->            ScalarType "tsquery"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunName "ts_rank_cd"
->           [ScalarType "tsvector", ScalarType "tsquery", ScalarType "int4"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunName "ts_rank_cd"
->           [ArrayType (ScalarType "float4"), ScalarType "tsvector",
->            ScalarType "tsquery", ScalarType "int4"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunName "ts_rewrite"
->           [ScalarType "tsquery", ScalarType "text"]
->           (ScalarType "tsquery")
->           False,
->         CatCreateFunction FunName "ts_rewrite"
->           [ScalarType "tsquery", ScalarType "tsquery", ScalarType "tsquery"]
->           (ScalarType "tsquery")
->           False,
->         CatCreateFunction FunName "ts_stat" [ScalarType "text"]
->           (SetOfType (Pseudo Record))
->           False,
->         CatCreateFunction FunName "ts_stat"
->           [ScalarType "text", ScalarType "text"]
->           (SetOfType (Pseudo Record))
->           False,
->         CatCreateFunction FunName "ts_token_type" [ScalarType "text"]
->           (SetOfType (Pseudo Record))
->           False,
->         CatCreateFunction FunName "ts_token_type" [ScalarType "oid"]
->           (SetOfType (Pseudo Record))
->           False,
->         CatCreateFunction FunName "ts_typanalyze" [Pseudo Internal]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tsmatchjoinsel"
->           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
->            ScalarType "int2", Pseudo Internal]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "tsmatchsel"
->           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
->            ScalarType "int4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "tsq_mcontained"
->           [ScalarType "tsquery", ScalarType "tsquery"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tsq_mcontains"
->           [ScalarType "tsquery", ScalarType "tsquery"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tsquery_and"
->           [ScalarType "tsquery", ScalarType "tsquery"]
->           (ScalarType "tsquery")
->           False,
->         CatCreateFunction FunName "tsquery_cmp"
->           [ScalarType "tsquery", ScalarType "tsquery"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "tsquery_eq"
->           [ScalarType "tsquery", ScalarType "tsquery"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tsquery_ge"
->           [ScalarType "tsquery", ScalarType "tsquery"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tsquery_gt"
->           [ScalarType "tsquery", ScalarType "tsquery"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tsquery_le"
->           [ScalarType "tsquery", ScalarType "tsquery"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tsquery_lt"
->           [ScalarType "tsquery", ScalarType "tsquery"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tsquery_ne"
->           [ScalarType "tsquery", ScalarType "tsquery"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tsquery_not" [ScalarType "tsquery"]
->           (ScalarType "tsquery")
->           False,
->         CatCreateFunction FunName "tsquery_or"
->           [ScalarType "tsquery", ScalarType "tsquery"]
->           (ScalarType "tsquery")
->           False,
->         CatCreateFunction FunName "tsqueryin" [Pseudo Cstring]
->           (ScalarType "tsquery")
->           False,
->         CatCreateFunction FunName "tsqueryout" [ScalarType "tsquery"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "tsqueryrecv" [Pseudo Internal]
->           (ScalarType "tsquery")
->           False,
->         CatCreateFunction FunName "tsquerysend" [ScalarType "tsquery"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "tsvector_cmp"
->           [ScalarType "tsvector", ScalarType "tsvector"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "tsvector_concat"
->           [ScalarType "tsvector", ScalarType "tsvector"]
->           (ScalarType "tsvector")
->           False,
->         CatCreateFunction FunName "tsvector_eq"
->           [ScalarType "tsvector", ScalarType "tsvector"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tsvector_ge"
->           [ScalarType "tsvector", ScalarType "tsvector"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tsvector_gt"
->           [ScalarType "tsvector", ScalarType "tsvector"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tsvector_le"
->           [ScalarType "tsvector", ScalarType "tsvector"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tsvector_lt"
->           [ScalarType "tsvector", ScalarType "tsvector"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tsvector_ne"
->           [ScalarType "tsvector", ScalarType "tsvector"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "tsvector_update_trigger" []
->           (Pseudo Trigger)
->           False,
->         CatCreateFunction FunName "tsvector_update_trigger_column" []
->           (Pseudo Trigger)
->           False,
->         CatCreateFunction FunName "tsvectorin" [Pseudo Cstring]
->           (ScalarType "tsvector")
->           False,
->         CatCreateFunction FunName "tsvectorout" [ScalarType "tsvector"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "tsvectorrecv" [Pseudo Internal]
->           (ScalarType "tsvector")
->           False,
->         CatCreateFunction FunName "tsvectorsend" [ScalarType "tsvector"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "txid_current" [] (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "txid_current_snapshot" []
->           (ScalarType "txid_snapshot")
->           False,
->         CatCreateFunction FunName "txid_snapshot_in" [Pseudo Cstring]
->           (ScalarType "txid_snapshot")
->           False,
->         CatCreateFunction FunName "txid_snapshot_out"
->           [ScalarType "txid_snapshot"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "txid_snapshot_recv" [Pseudo Internal]
->           (ScalarType "txid_snapshot")
->           False,
->         CatCreateFunction FunName "txid_snapshot_send"
->           [ScalarType "txid_snapshot"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "txid_snapshot_xip"
->           [ScalarType "txid_snapshot"]
->           (SetOfType (ScalarType "int8"))
->           False,
->         CatCreateFunction FunName "txid_snapshot_xmax"
->           [ScalarType "txid_snapshot"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "txid_snapshot_xmin"
->           [ScalarType "txid_snapshot"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunName "txid_visible_in_snapshot"
->           [ScalarType "int8", ScalarType "txid_snapshot"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "uhc_to_utf8"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "unknownin" [Pseudo Cstring]
->           (ScalarType "unknown")
->           False,
->         CatCreateFunction FunName "unknownout" [ScalarType "unknown"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "unknownrecv" [Pseudo Internal]
->           (ScalarType "unknown")
->           False,
->         CatCreateFunction FunName "unknownsend" [ScalarType "unknown"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "unnest" [Pseudo AnyArray]
->           (SetOfType (Pseudo AnyElement))
->           False,
->         CatCreateFunction FunName "upper" [ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunName "utf8_to_ascii"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "utf8_to_big5"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "utf8_to_euc_cn"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "utf8_to_euc_jis_2004"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "utf8_to_euc_jp"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "utf8_to_euc_kr"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "utf8_to_euc_tw"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "utf8_to_gb18030"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "utf8_to_gbk"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "utf8_to_iso8859"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "utf8_to_iso8859_1"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "utf8_to_johab"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "utf8_to_koi8r"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "utf8_to_koi8u"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "utf8_to_shift_jis_2004"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "utf8_to_sjis"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "utf8_to_uhc"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "utf8_to_win"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "uuid_cmp"
->           [ScalarType "uuid", ScalarType "uuid"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "uuid_eq"
->           [ScalarType "uuid", ScalarType "uuid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "uuid_ge"
->           [ScalarType "uuid", ScalarType "uuid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "uuid_gt"
->           [ScalarType "uuid", ScalarType "uuid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "uuid_hash" [ScalarType "uuid"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "uuid_in" [Pseudo Cstring]
->           (ScalarType "uuid")
->           False,
->         CatCreateFunction FunName "uuid_le"
->           [ScalarType "uuid", ScalarType "uuid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "uuid_lt"
->           [ScalarType "uuid", ScalarType "uuid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "uuid_ne"
->           [ScalarType "uuid", ScalarType "uuid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "uuid_out" [ScalarType "uuid"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "uuid_recv" [Pseudo Internal]
->           (ScalarType "uuid")
->           False,
->         CatCreateFunction FunName "uuid_send" [ScalarType "uuid"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "varbit"
->           [ScalarType "varbit", ScalarType "int4", ScalarType "bool"]
->           (ScalarType "varbit")
->           False,
->         CatCreateFunction FunName "varbit_in"
->           [Pseudo Cstring, ScalarType "oid", ScalarType "int4"]
->           (ScalarType "varbit")
->           False,
->         CatCreateFunction FunName "varbit_out" [ScalarType "varbit"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "varbit_recv"
->           [Pseudo Internal, ScalarType "oid", ScalarType "int4"]
->           (ScalarType "varbit")
->           False,
->         CatCreateFunction FunName "varbit_send" [ScalarType "varbit"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "varbitcmp"
->           [ScalarType "varbit", ScalarType "varbit"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "varbiteq"
->           [ScalarType "varbit", ScalarType "varbit"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "varbitge"
->           [ScalarType "varbit", ScalarType "varbit"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "varbitgt"
->           [ScalarType "varbit", ScalarType "varbit"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "varbitle"
->           [ScalarType "varbit", ScalarType "varbit"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "varbitlt"
->           [ScalarType "varbit", ScalarType "varbit"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "varbitne"
->           [ScalarType "varbit", ScalarType "varbit"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "varbittypmodin"
->           [ArrayType (Pseudo Cstring)]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "varbittypmodout" [ScalarType "int4"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "varchar" [ScalarType "name"]
->           (ScalarType "varchar")
->           False,
->         CatCreateFunction FunName "varchar"
->           [ScalarType "varchar", ScalarType "int4", ScalarType "bool"]
->           (ScalarType "varchar")
->           False,
->         CatCreateFunction FunName "varcharin"
->           [Pseudo Cstring, ScalarType "oid", ScalarType "int4"]
->           (ScalarType "varchar")
->           False,
->         CatCreateFunction FunName "varcharout" [ScalarType "varchar"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "varcharrecv"
->           [Pseudo Internal, ScalarType "oid", ScalarType "int4"]
->           (ScalarType "varchar")
->           False,
->         CatCreateFunction FunName "varcharsend" [ScalarType "varchar"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "varchartypmodin"
->           [ArrayType (Pseudo Cstring)]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "varchartypmodout" [ScalarType "int4"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "version" [] (ScalarType "text") False,
->         CatCreateFunction FunName "void_in" [Pseudo Cstring] (Pseudo Void)
->           False,
->         CatCreateFunction FunName "void_out" [Pseudo Void] (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "width" [ScalarType "box"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunName "width_bucket"
->           [ScalarType "float8", ScalarType "float8", ScalarType "float8",
->            ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "width_bucket"
->           [ScalarType "numeric", ScalarType "numeric", ScalarType "numeric",
->            ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunName "win1250_to_latin2"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "win1250_to_mic"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "win1251_to_iso"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "win1251_to_koi8r"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "win1251_to_mic"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "win1251_to_win866"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "win866_to_iso"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "win866_to_koi8r"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "win866_to_mic"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "win866_to_win1251"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "win_to_utf8"
->           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
->            Pseudo Internal, ScalarType "int4"]
->           (Pseudo Void)
->           False,
->         CatCreateFunction FunName "xideq"
->           [ScalarType "xid", ScalarType "xid"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "xideqint4"
->           [ScalarType "xid", ScalarType "int4"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "xidin" [Pseudo Cstring]
->           (ScalarType "xid")
->           False,
->         CatCreateFunction FunName "xidout" [ScalarType "xid"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "xidrecv" [Pseudo Internal]
->           (ScalarType "xid")
->           False,
->         CatCreateFunction FunName "xidsend" [ScalarType "xid"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "xml" [ScalarType "text"]
->           (ScalarType "xml")
->           False,
->         CatCreateFunction FunName "xml_in" [Pseudo Cstring]
->           (ScalarType "xml")
->           False,
->         CatCreateFunction FunName "xml_out" [ScalarType "xml"]
->           (Pseudo Cstring)
->           False,
->         CatCreateFunction FunName "xml_recv" [Pseudo Internal]
->           (ScalarType "xml")
->           False,
->         CatCreateFunction FunName "xml_send" [ScalarType "xml"]
->           (ScalarType "bytea")
->           False,
->         CatCreateFunction FunName "xmlcomment" [ScalarType "text"]
->           (ScalarType "xml")
->           False,
->         CatCreateFunction FunName "xmlconcat2"
->           [ScalarType "xml", ScalarType "xml"]
->           (ScalarType "xml")
->           False,
->         CatCreateFunction FunName "xmlvalidate"
->           [ScalarType "xml", ScalarType "text"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunName "xpath"
->           [ScalarType "text", ScalarType "xml"]
->           (ArrayType (ScalarType "xml"))
->           False,
->         CatCreateFunction FunName "xpath"
->           [ScalarType "text", ScalarType "xml",
->            ArrayType (ScalarType "text")]
->           (ArrayType (ScalarType "xml"))
->           False,
->         CatCreateFunction FunAgg "array_agg" [Pseudo AnyElement]
->           (Pseudo AnyArray)
->           False,
->         CatCreateFunction FunAgg "avg" [ScalarType "int8"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunAgg "avg" [ScalarType "int2"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunAgg "avg" [ScalarType "int4"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunAgg "avg" [ScalarType "float4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunAgg "avg" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunAgg "avg" [ScalarType "interval"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunAgg "avg" [ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunAgg "bit_and" [ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunAgg "bit_and" [ScalarType "int2"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunAgg "bit_and" [ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunAgg "bit_and" [ScalarType "bit"]
->           (ScalarType "bit")
->           False,
->         CatCreateFunction FunAgg "bit_or" [ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunAgg "bit_or" [ScalarType "int2"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunAgg "bit_or" [ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunAgg "bit_or" [ScalarType "bit"]
->           (ScalarType "bit")
->           False,
->         CatCreateFunction FunAgg "bool_and" [ScalarType "bool"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunAgg "bool_or" [ScalarType "bool"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunAgg "corr"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunAgg "count" [] (ScalarType "int8") False,
->         CatCreateFunction FunAgg "count" [Pseudo Any] (ScalarType "int8")
->           False,
->         CatCreateFunction FunAgg "covar_pop"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunAgg "covar_samp"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunAgg "every" [ScalarType "bool"]
->           (ScalarType "bool")
->           False,
->         CatCreateFunction FunAgg "max" [ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunAgg "max" [ScalarType "int2"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunAgg "max" [ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunAgg "max" [ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunAgg "max" [ScalarType "oid"]
->           (ScalarType "oid")
->           False,
->         CatCreateFunction FunAgg "max" [ScalarType "tid"]
->           (ScalarType "tid")
->           False,
->         CatCreateFunction FunAgg "max" [ScalarType "float4"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunAgg "max" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunAgg "max" [ScalarType "abstime"]
->           (ScalarType "abstime")
->           False,
->         CatCreateFunction FunAgg "max" [ScalarType "money"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunAgg "max" [ScalarType "bpchar"]
->           (ScalarType "bpchar")
->           False,
->         CatCreateFunction FunAgg "max" [ScalarType "date"]
->           (ScalarType "date")
->           False,
->         CatCreateFunction FunAgg "max" [ScalarType "time"]
->           (ScalarType "time")
->           False,
->         CatCreateFunction FunAgg "max" [ScalarType "timestamp"]
->           (ScalarType "timestamp")
->           False,
->         CatCreateFunction FunAgg "max" [ScalarType "timestamptz"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunAgg "max" [ScalarType "interval"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunAgg "max" [ScalarType "timetz"]
->           (ScalarType "timetz")
->           False,
->         CatCreateFunction FunAgg "max" [ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunAgg "max" [Pseudo AnyArray] (Pseudo AnyArray)
->           False,
->         CatCreateFunction FunAgg "max" [Pseudo AnyEnum] (Pseudo AnyEnum)
->           False,
->         CatCreateFunction FunAgg "min" [ScalarType "int8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunAgg "min" [ScalarType "int2"]
->           (ScalarType "int2")
->           False,
->         CatCreateFunction FunAgg "min" [ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunAgg "min" [ScalarType "text"]
->           (ScalarType "text")
->           False,
->         CatCreateFunction FunAgg "min" [ScalarType "oid"]
->           (ScalarType "oid")
->           False,
->         CatCreateFunction FunAgg "min" [ScalarType "tid"]
->           (ScalarType "tid")
->           False,
->         CatCreateFunction FunAgg "min" [ScalarType "float4"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunAgg "min" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunAgg "min" [ScalarType "abstime"]
->           (ScalarType "abstime")
->           False,
->         CatCreateFunction FunAgg "min" [ScalarType "money"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunAgg "min" [ScalarType "bpchar"]
->           (ScalarType "bpchar")
->           False,
->         CatCreateFunction FunAgg "min" [ScalarType "date"]
->           (ScalarType "date")
->           False,
->         CatCreateFunction FunAgg "min" [ScalarType "time"]
->           (ScalarType "time")
->           False,
->         CatCreateFunction FunAgg "min" [ScalarType "timestamp"]
->           (ScalarType "timestamp")
->           False,
->         CatCreateFunction FunAgg "min" [ScalarType "timestamptz"]
->           (ScalarType "timestamptz")
->           False,
->         CatCreateFunction FunAgg "min" [ScalarType "interval"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunAgg "min" [ScalarType "timetz"]
->           (ScalarType "timetz")
->           False,
->         CatCreateFunction FunAgg "min" [ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunAgg "min" [Pseudo AnyArray] (Pseudo AnyArray)
->           False,
->         CatCreateFunction FunAgg "min" [Pseudo AnyEnum] (Pseudo AnyEnum)
->           False,
->         CatCreateFunction FunAgg "regr_avgx"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunAgg "regr_avgy"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunAgg "regr_count"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunAgg "regr_intercept"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunAgg "regr_r2"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunAgg "regr_slope"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunAgg "regr_sxx"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunAgg "regr_sxy"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunAgg "regr_syy"
->           [ScalarType "float8", ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunAgg "stddev" [ScalarType "int8"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunAgg "stddev" [ScalarType "int2"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunAgg "stddev" [ScalarType "int4"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunAgg "stddev" [ScalarType "float4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunAgg "stddev" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunAgg "stddev" [ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunAgg "stddev_pop" [ScalarType "int8"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunAgg "stddev_pop" [ScalarType "int2"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunAgg "stddev_pop" [ScalarType "int4"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunAgg "stddev_pop" [ScalarType "float4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunAgg "stddev_pop" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunAgg "stddev_pop" [ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunAgg "stddev_samp" [ScalarType "int8"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunAgg "stddev_samp" [ScalarType "int2"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunAgg "stddev_samp" [ScalarType "int4"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunAgg "stddev_samp" [ScalarType "float4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunAgg "stddev_samp" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunAgg "stddev_samp" [ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunAgg "sum" [ScalarType "int8"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunAgg "sum" [ScalarType "int2"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunAgg "sum" [ScalarType "int4"]
->           (ScalarType "int8")
->           False,
->         CatCreateFunction FunAgg "sum" [ScalarType "float4"]
->           (ScalarType "float4")
->           False,
->         CatCreateFunction FunAgg "sum" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunAgg "sum" [ScalarType "money"]
->           (ScalarType "money")
->           False,
->         CatCreateFunction FunAgg "sum" [ScalarType "interval"]
->           (ScalarType "interval")
->           False,
->         CatCreateFunction FunAgg "sum" [ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunAgg "var_pop" [ScalarType "int8"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunAgg "var_pop" [ScalarType "int2"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunAgg "var_pop" [ScalarType "int4"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunAgg "var_pop" [ScalarType "float4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunAgg "var_pop" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunAgg "var_pop" [ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunAgg "var_samp" [ScalarType "int8"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunAgg "var_samp" [ScalarType "int2"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunAgg "var_samp" [ScalarType "int4"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunAgg "var_samp" [ScalarType "float4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunAgg "var_samp" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunAgg "var_samp" [ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunAgg "variance" [ScalarType "int8"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunAgg "variance" [ScalarType "int2"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunAgg "variance" [ScalarType "int4"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunAgg "variance" [ScalarType "float4"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunAgg "variance" [ScalarType "float8"]
->           (ScalarType "float8")
->           False,
->         CatCreateFunction FunAgg "variance" [ScalarType "numeric"]
->           (ScalarType "numeric")
->           False,
->         CatCreateFunction FunAgg "xmlagg" [ScalarType "xml"]
->           (ScalarType "xml")
->           False,
->         CatCreateFunction FunWindow "cume_dist" [] (ScalarType "float8")
->           False,
->         CatCreateFunction FunWindow "dense_rank" [] (ScalarType "int8")
->           False,
->         CatCreateFunction FunWindow "first_value" [Pseudo AnyElement]
->           (Pseudo AnyElement)
->           False,
->         CatCreateFunction FunWindow "lag" [Pseudo AnyElement]
->           (Pseudo AnyElement)
->           False,
->         CatCreateFunction FunWindow "lag"
->           [Pseudo AnyElement, ScalarType "int4"]
->           (Pseudo AnyElement)
->           False,
->         CatCreateFunction FunWindow "lag"
->           [Pseudo AnyElement, ScalarType "int4", Pseudo AnyElement]
->           (Pseudo AnyElement)
->           False,
->         CatCreateFunction FunWindow "last_value" [Pseudo AnyElement]
->           (Pseudo AnyElement)
->           False,
->         CatCreateFunction FunWindow "lead" [Pseudo AnyElement]
->           (Pseudo AnyElement)
->           False,
->         CatCreateFunction FunWindow "lead"
->           [Pseudo AnyElement, ScalarType "int4"]
->           (Pseudo AnyElement)
->           False,
->         CatCreateFunction FunWindow "lead"
->           [Pseudo AnyElement, ScalarType "int4", Pseudo AnyElement]
->           (Pseudo AnyElement)
->           False,
->         CatCreateFunction FunWindow "nth_value"
->           [Pseudo AnyElement, ScalarType "int4"]
->           (Pseudo AnyElement)
->           False,
->         CatCreateFunction FunWindow "ntile" [ScalarType "int4"]
->           (ScalarType "int4")
->           False,
->         CatCreateFunction FunWindow "percent_rank" [] (ScalarType "float8")
->           False,
->         CatCreateFunction FunWindow "rank" [] (ScalarType "int8") False,
->         CatCreateFunction FunWindow "row_number" [] (ScalarType "int8")
->           False,
->         CatCreateTable "pg_aggregate"
->           [("aggfnoid", ScalarType "regproc"),
->            ("aggtransfn", ScalarType "regproc"),
->            ("aggfinalfn", ScalarType "regproc"),
->            ("aggsortop", ScalarType "oid"),
->            ("aggtranstype", ScalarType "oid"),
->            ("agginitval", ScalarType "text")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_am"
->           [("amname", ScalarType "name"),
->            ("amstrategies", ScalarType "int2"),
->            ("amsupport", ScalarType "int2"),
->            ("amcanorder", ScalarType "bool"),
->            ("amcanbackward", ScalarType "bool"),
->            ("amcanunique", ScalarType "bool"),
->            ("amcanmulticol", ScalarType "bool"),
->            ("amoptionalkey", ScalarType "bool"),
->            ("amindexnulls", ScalarType "bool"),
->            ("amsearchnulls", ScalarType "bool"),
->            ("amstorage", ScalarType "bool"),
->            ("amclusterable", ScalarType "bool"),
->            ("amkeytype", ScalarType "oid"),
->            ("aminsert", ScalarType "regproc"),
->            ("ambeginscan", ScalarType "regproc"),
->            ("amgettuple", ScalarType "regproc"),
->            ("amgetbitmap", ScalarType "regproc"),
->            ("amrescan", ScalarType "regproc"),
->            ("amendscan", ScalarType "regproc"),
->            ("ammarkpos", ScalarType "regproc"),
->            ("amrestrpos", ScalarType "regproc"),
->            ("ambuild", ScalarType "regproc"),
->            ("ambulkdelete", ScalarType "regproc"),
->            ("amvacuumcleanup", ScalarType "regproc"),
->            ("amcostestimate", ScalarType "regproc"),
->            ("amoptions", ScalarType "regproc")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
->            ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_amop"
->           [("amopfamily", ScalarType "oid"),
->            ("amoplefttype", ScalarType "oid"),
->            ("amoprighttype", ScalarType "oid"),
->            ("amopstrategy", ScalarType "int2"), ("amopopr", ScalarType "oid"),
->            ("amopmethod", ScalarType "oid")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
->            ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_amproc"
->           [("amprocfamily", ScalarType "oid"),
->            ("amproclefttype", ScalarType "oid"),
->            ("amprocrighttype", ScalarType "oid"),
->            ("amprocnum", ScalarType "int2"), ("amproc", ScalarType "regproc")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
->            ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_attrdef"
->           [("adrelid", ScalarType "oid"), ("adnum", ScalarType "int2"),
->            ("adbin", ScalarType "text"), ("adsrc", ScalarType "text")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
->            ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_attribute"
->           [("attrelid", ScalarType "oid"), ("attname", ScalarType "name"),
->            ("atttypid", ScalarType "oid"),
->            ("attstattarget", ScalarType "int4"),
->            ("attlen", ScalarType "int2"), ("attnum", ScalarType "int2"),
->            ("attndims", ScalarType "int4"),
->            ("attcacheoff", ScalarType "int4"),
->            ("atttypmod", ScalarType "int4"), ("attbyval", ScalarType "bool"),
->            ("attstorage", ScalarType "char"), ("attalign", ScalarType "char"),
->            ("attnotnull", ScalarType "bool"),
->            ("atthasdef", ScalarType "bool"),
->            ("attisdropped", ScalarType "bool"),
->            ("attislocal", ScalarType "bool"),
->            ("attinhcount", ScalarType "int4"),
->            ("attacl", ArrayType (ScalarType "aclitem"))]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_auth_members"
->           [("roleid", ScalarType "oid"), ("member", ScalarType "oid"),
->            ("grantor", ScalarType "oid"), ("admin_option", ScalarType "bool")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_authid"
->           [("rolname", ScalarType "name"), ("rolsuper", ScalarType "bool"),
->            ("rolinherit", ScalarType "bool"),
->            ("rolcreaterole", ScalarType "bool"),
->            ("rolcreatedb", ScalarType "bool"),
->            ("rolcatupdate", ScalarType "bool"),
->            ("rolcanlogin", ScalarType "bool"),
->            ("rolconnlimit", ScalarType "int4"),
->            ("rolpassword", ScalarType "text"),
->            ("rolvaliduntil", ScalarType "timestamptz"),
->            ("rolconfig", ArrayType (ScalarType "text"))]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
->            ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_cast"
->           [("castsource", ScalarType "oid"),
->            ("casttarget", ScalarType "oid"), ("castfunc", ScalarType "oid"),
->            ("castcontext", ScalarType "char"),
->            ("castmethod", ScalarType "char")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
->            ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_class"
->           [("relname", ScalarType "name"),
->            ("relnamespace", ScalarType "oid"), ("reltype", ScalarType "oid"),
->            ("relowner", ScalarType "oid"), ("relam", ScalarType "oid"),
->            ("relfilenode", ScalarType "oid"),
->            ("reltablespace", ScalarType "oid"),
->            ("relpages", ScalarType "int4"),
->            ("reltuples", ScalarType "float4"),
->            ("reltoastrelid", ScalarType "oid"),
->            ("reltoastidxid", ScalarType "oid"),
->            ("relhasindex", ScalarType "bool"),
->            ("relisshared", ScalarType "bool"),
->            ("relistemp", ScalarType "bool"), ("relkind", ScalarType "char"),
->            ("relnatts", ScalarType "int2"), ("relchecks", ScalarType "int2"),
->            ("relhasoids", ScalarType "bool"),
->            ("relhaspkey", ScalarType "bool"),
->            ("relhasrules", ScalarType "bool"),
->            ("relhastriggers", ScalarType "bool"),
->            ("relhassubclass", ScalarType "bool"),
->            ("relfrozenxid", ScalarType "xid"),
->            ("relacl", ArrayType (ScalarType "aclitem")),
->            ("reloptions", ArrayType (ScalarType "text"))]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
->            ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_constraint"
->           [("conname", ScalarType "name"),
->            ("connamespace", ScalarType "oid"), ("contype", ScalarType "char"),
->            ("condeferrable", ScalarType "bool"),
->            ("condeferred", ScalarType "bool"), ("conrelid", ScalarType "oid"),
->            ("contypid", ScalarType "oid"), ("confrelid", ScalarType "oid"),
->            ("confupdtype", ScalarType "char"),
->            ("confdeltype", ScalarType "char"),
->            ("confmatchtype", ScalarType "char"),
->            ("conislocal", ScalarType "bool"),
->            ("coninhcount", ScalarType "int4"),
->            ("conkey", ArrayType (ScalarType "int2")),
->            ("confkey", ArrayType (ScalarType "int2")),
->            ("conpfeqop", ArrayType (ScalarType "oid")),
->            ("conppeqop", ArrayType (ScalarType "oid")),
->            ("conffeqop", ArrayType (ScalarType "oid")),
->            ("conbin", ScalarType "text"), ("consrc", ScalarType "text")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
->            ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_conversion"
->           [("conname", ScalarType "name"),
->            ("connamespace", ScalarType "oid"), ("conowner", ScalarType "oid"),
->            ("conforencoding", ScalarType "int4"),
->            ("contoencoding", ScalarType "int4"),
->            ("conproc", ScalarType "regproc"),
->            ("condefault", ScalarType "bool")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
->            ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_database"
->           [("datname", ScalarType "name"), ("datdba", ScalarType "oid"),
->            ("encoding", ScalarType "int4"), ("datcollate", ScalarType "name"),
->            ("datctype", ScalarType "name"),
->            ("datistemplate", ScalarType "bool"),
->            ("datallowconn", ScalarType "bool"),
->            ("datconnlimit", ScalarType "int4"),
->            ("datlastsysoid", ScalarType "oid"),
->            ("datfrozenxid", ScalarType "xid"),
->            ("dattablespace", ScalarType "oid"),
->            ("datconfig", ArrayType (ScalarType "text")),
->            ("datacl", ArrayType (ScalarType "aclitem"))]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
->            ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_depend"
->           [("classid", ScalarType "oid"), ("objid", ScalarType "oid"),
->            ("objsubid", ScalarType "int4"), ("refclassid", ScalarType "oid"),
->            ("refobjid", ScalarType "oid"), ("refobjsubid", ScalarType "int4"),
->            ("deptype", ScalarType "char")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_description"
->           [("objoid", ScalarType "oid"), ("classoid", ScalarType "oid"),
->            ("objsubid", ScalarType "int4"),
->            ("description", ScalarType "text")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_enum"
->           [("enumtypid", ScalarType "oid"), ("enumlabel", ScalarType "name")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
->            ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_foreign_data_wrapper"
->           [("fdwname", ScalarType "name"), ("fdwowner", ScalarType "oid"),
->            ("fdwvalidator", ScalarType "oid"),
->            ("fdwacl", ArrayType (ScalarType "aclitem")),
->            ("fdwoptions", ArrayType (ScalarType "text"))]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
->            ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_foreign_server"
->           [("srvname", ScalarType "name"), ("srvowner", ScalarType "oid"),
->            ("srvfdw", ScalarType "oid"), ("srvtype", ScalarType "text"),
->            ("srvversion", ScalarType "text"),
->            ("srvacl", ArrayType (ScalarType "aclitem")),
->            ("srvoptions", ArrayType (ScalarType "text"))]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
->            ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_index"
->           [("indexrelid", ScalarType "oid"), ("indrelid", ScalarType "oid"),
->            ("indnatts", ScalarType "int2"),
->            ("indisunique", ScalarType "bool"),
->            ("indisprimary", ScalarType "bool"),
->            ("indisclustered", ScalarType "bool"),
->            ("indisvalid", ScalarType "bool"),
->            ("indcheckxmin", ScalarType "bool"),
->            ("indisready", ScalarType "bool"),
->            ("indkey", ScalarType "int2vector"),
->            ("indclass", ScalarType "oidvector"),
->            ("indoption", ScalarType "int2vector"),
->            ("indexprs", ScalarType "text"), ("indpred", ScalarType "text")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_inherits"
->           [("inhrelid", ScalarType "oid"), ("inhparent", ScalarType "oid"),
->            ("inhseqno", ScalarType "int4")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_language"
->           [("lanname", ScalarType "name"), ("lanowner", ScalarType "oid"),
->            ("lanispl", ScalarType "bool"),
->            ("lanpltrusted", ScalarType "bool"),
->            ("lanplcallfoid", ScalarType "oid"),
->            ("lanvalidator", ScalarType "oid"),
->            ("lanacl", ArrayType (ScalarType "aclitem"))]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
->            ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_largeobject"
->           [("loid", ScalarType "oid"), ("pageno", ScalarType "int4"),
->            ("data", ScalarType "bytea")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_listener"
->           [("relname", ScalarType "name"),
->            ("listenerpid", ScalarType "int4"),
->            ("notification", ScalarType "int4")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_namespace"
->           [("nspname", ScalarType "name"), ("nspowner", ScalarType "oid"),
->            ("nspacl", ArrayType (ScalarType "aclitem"))]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
->            ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_opclass"
->           [("opcmethod", ScalarType "oid"), ("opcname", ScalarType "name"),
->            ("opcnamespace", ScalarType "oid"), ("opcowner", ScalarType "oid"),
->            ("opcfamily", ScalarType "oid"), ("opcintype", ScalarType "oid"),
->            ("opcdefault", ScalarType "bool"),
->            ("opckeytype", ScalarType "oid")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
->            ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_operator"
->           [("oprname", ScalarType "name"),
->            ("oprnamespace", ScalarType "oid"), ("oprowner", ScalarType "oid"),
->            ("oprkind", ScalarType "char"), ("oprcanmerge", ScalarType "bool"),
->            ("oprcanhash", ScalarType "bool"), ("oprleft", ScalarType "oid"),
->            ("oprright", ScalarType "oid"), ("oprresult", ScalarType "oid"),
->            ("oprcom", ScalarType "oid"), ("oprnegate", ScalarType "oid"),
->            ("oprcode", ScalarType "regproc"),
->            ("oprrest", ScalarType "regproc"),
->            ("oprjoin", ScalarType "regproc")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
->            ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_opfamily"
->           [("opfmethod", ScalarType "oid"), ("opfname", ScalarType "name"),
->            ("opfnamespace", ScalarType "oid"), ("opfowner", ScalarType "oid")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
->            ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_pltemplate"
->           [("tmplname", ScalarType "name"),
->            ("tmpltrusted", ScalarType "bool"),
->            ("tmpldbacreate", ScalarType "bool"),
->            ("tmplhandler", ScalarType "text"),
->            ("tmplvalidator", ScalarType "text"),
->            ("tmpllibrary", ScalarType "text"),
->            ("tmplacl", ArrayType (ScalarType "aclitem"))]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_proc"
->           [("proname", ScalarType "name"),
->            ("pronamespace", ScalarType "oid"), ("proowner", ScalarType "oid"),
->            ("prolang", ScalarType "oid"), ("procost", ScalarType "float4"),
->            ("prorows", ScalarType "float4"),
->            ("provariadic", ScalarType "oid"), ("proisagg", ScalarType "bool"),
->            ("proiswindow", ScalarType "bool"),
->            ("prosecdef", ScalarType "bool"),
->            ("proisstrict", ScalarType "bool"),
->            ("proretset", ScalarType "bool"),
->            ("provolatile", ScalarType "char"),
->            ("pronargs", ScalarType "int2"),
->            ("pronargdefaults", ScalarType "int2"),
->            ("prorettype", ScalarType "oid"),
->            ("proargtypes", ScalarType "oidvector"),
->            ("proallargtypes", ArrayType (ScalarType "oid")),
->            ("proargmodes", ArrayType (ScalarType "char")),
->            ("proargnames", ArrayType (ScalarType "text")),
->            ("proargdefaults", ScalarType "text"),
->            ("prosrc", ScalarType "text"), ("probin", ScalarType "bytea"),
->            ("proconfig", ArrayType (ScalarType "text")),
->            ("proacl", ArrayType (ScalarType "aclitem"))]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
->            ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_rewrite"
->           [("rulename", ScalarType "name"), ("ev_class", ScalarType "oid"),
->            ("ev_attr", ScalarType "int2"), ("ev_type", ScalarType "char"),
->            ("ev_enabled", ScalarType "char"),
->            ("is_instead", ScalarType "bool"), ("ev_qual", ScalarType "text"),
->            ("ev_action", ScalarType "text")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
->            ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_shdepend"
->           [("dbid", ScalarType "oid"), ("classid", ScalarType "oid"),
->            ("objid", ScalarType "oid"), ("objsubid", ScalarType "int4"),
->            ("refclassid", ScalarType "oid"), ("refobjid", ScalarType "oid"),
->            ("deptype", ScalarType "char")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_shdescription"
->           [("objoid", ScalarType "oid"), ("classoid", ScalarType "oid"),
->            ("description", ScalarType "text")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_statistic"
->           [("starelid", ScalarType "oid"), ("staattnum", ScalarType "int2"),
->            ("stanullfrac", ScalarType "float4"),
->            ("stawidth", ScalarType "int4"),
->            ("stadistinct", ScalarType "float4"),
->            ("stakind1", ScalarType "int2"), ("stakind2", ScalarType "int2"),
->            ("stakind3", ScalarType "int2"), ("stakind4", ScalarType "int2"),
->            ("staop1", ScalarType "oid"), ("staop2", ScalarType "oid"),
->            ("staop3", ScalarType "oid"), ("staop4", ScalarType "oid"),
->            ("stanumbers1", ArrayType (ScalarType "float4")),
->            ("stanumbers2", ArrayType (ScalarType "float4")),
->            ("stanumbers3", ArrayType (ScalarType "float4")),
->            ("stanumbers4", ArrayType (ScalarType "float4")),
->            ("stavalues1", Pseudo AnyArray), ("stavalues2", Pseudo AnyArray),
->            ("stavalues3", Pseudo AnyArray), ("stavalues4", Pseudo AnyArray)]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_tablespace"
->           [("spcname", ScalarType "name"), ("spcowner", ScalarType "oid"),
->            ("spclocation", ScalarType "text"),
->            ("spcacl", ArrayType (ScalarType "aclitem"))]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
->            ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_trigger"
->           [("tgrelid", ScalarType "oid"), ("tgname", ScalarType "name"),
->            ("tgfoid", ScalarType "oid"), ("tgtype", ScalarType "int2"),
->            ("tgenabled", ScalarType "char"),
->            ("tgisconstraint", ScalarType "bool"),
->            ("tgconstrname", ScalarType "name"),
->            ("tgconstrrelid", ScalarType "oid"),
->            ("tgconstraint", ScalarType "oid"),
->            ("tgdeferrable", ScalarType "bool"),
->            ("tginitdeferred", ScalarType "bool"),
->            ("tgnargs", ScalarType "int2"),
->            ("tgattr", ScalarType "int2vector"),
->            ("tgargs", ScalarType "bytea")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
->            ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_ts_config"
->           [("cfgname", ScalarType "name"),
->            ("cfgnamespace", ScalarType "oid"), ("cfgowner", ScalarType "oid"),
->            ("cfgparser", ScalarType "oid")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
->            ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_ts_config_map"
->           [("mapcfg", ScalarType "oid"), ("maptokentype", ScalarType "int4"),
->            ("mapseqno", ScalarType "int4"), ("mapdict", ScalarType "oid")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_ts_dict"
->           [("dictname", ScalarType "name"),
->            ("dictnamespace", ScalarType "oid"),
->            ("dictowner", ScalarType "oid"),
->            ("dicttemplate", ScalarType "oid"),
->            ("dictinitoption", ScalarType "text")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
->            ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_ts_parser"
->           [("prsname", ScalarType "name"),
->            ("prsnamespace", ScalarType "oid"),
->            ("prsstart", ScalarType "regproc"),
->            ("prstoken", ScalarType "regproc"),
->            ("prsend", ScalarType "regproc"),
->            ("prsheadline", ScalarType "regproc"),
->            ("prslextype", ScalarType "regproc")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
->            ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_ts_template"
->           [("tmplname", ScalarType "name"),
->            ("tmplnamespace", ScalarType "oid"),
->            ("tmplinit", ScalarType "regproc"),
->            ("tmpllexize", ScalarType "regproc")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
->            ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_type"
->           [("typname", ScalarType "name"),
->            ("typnamespace", ScalarType "oid"), ("typowner", ScalarType "oid"),
->            ("typlen", ScalarType "int2"), ("typbyval", ScalarType "bool"),
->            ("typtype", ScalarType "char"), ("typcategory", ScalarType "char"),
->            ("typispreferred", ScalarType "bool"),
->            ("typisdefined", ScalarType "bool"),
->            ("typdelim", ScalarType "char"), ("typrelid", ScalarType "oid"),
->            ("typelem", ScalarType "oid"), ("typarray", ScalarType "oid"),
->            ("typinput", ScalarType "regproc"),
->            ("typoutput", ScalarType "regproc"),
->            ("typreceive", ScalarType "regproc"),
->            ("typsend", ScalarType "regproc"),
->            ("typmodin", ScalarType "regproc"),
->            ("typmodout", ScalarType "regproc"),
->            ("typanalyze", ScalarType "regproc"),
->            ("typalign", ScalarType "char"), ("typstorage", ScalarType "char"),
->            ("typnotnull", ScalarType "bool"),
->            ("typbasetype", ScalarType "oid"),
->            ("typtypmod", ScalarType "int4"), ("typndims", ScalarType "int4"),
->            ("typdefaultbin", ScalarType "text"),
->            ("typdefault", ScalarType "text")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
->            ("ctid", ScalarType "tid")],
->         CatCreateTable "pg_user_mapping"
->           [("umuser", ScalarType "oid"), ("umserver", ScalarType "oid"),
->            ("umoptions", ArrayType (ScalarType "text"))]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
->            ("ctid", ScalarType "tid")],
->         CatCreateTable "information_schema.sql_features"
->           [("feature_id", DomainType "information_schema.character_data"),
->            ("feature_name", DomainType "information_schema.character_data"),
->            ("sub_feature_id", DomainType "information_schema.character_data"),
->            ("sub_feature_name",
->             DomainType "information_schema.character_data"),
->            ("is_supported", DomainType "information_schema.character_data"),
->            ("is_verified_by", DomainType "information_schema.character_data"),
->            ("comments", DomainType "information_schema.character_data")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
->         CatCreateTable "information_schema.sql_implementation_info"
->           [("implementation_info_id",
->             DomainType "information_schema.character_data"),
->            ("implementation_info_name",
->             DomainType "information_schema.character_data"),
->            ("integer_value", DomainType "information_schema.cardinal_number"),
->            ("character_value",
->             DomainType "information_schema.character_data"),
->            ("comments", DomainType "information_schema.character_data")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
->         CatCreateTable "information_schema.sql_languages"
->           [("sql_language_source",
->             DomainType "information_schema.character_data"),
->            ("sql_language_year",
->             DomainType "information_schema.character_data"),
->            ("sql_language_conformance",
->             DomainType "information_schema.character_data"),
->            ("sql_language_integrity",
->             DomainType "information_schema.character_data"),
->            ("sql_language_implementation",
->             DomainType "information_schema.character_data"),
->            ("sql_language_binding_style",
->             DomainType "information_schema.character_data"),
->            ("sql_language_programming_language",
->             DomainType "information_schema.character_data")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
->         CatCreateTable "information_schema.sql_packages"
->           [("feature_id", DomainType "information_schema.character_data"),
->            ("feature_name", DomainType "information_schema.character_data"),
->            ("is_supported", DomainType "information_schema.character_data"),
->            ("is_verified_by", DomainType "information_schema.character_data"),
->            ("comments", DomainType "information_schema.character_data")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
->         CatCreateTable "information_schema.sql_parts"
->           [("feature_id", DomainType "information_schema.character_data"),
->            ("feature_name", DomainType "information_schema.character_data"),
->            ("is_supported", DomainType "information_schema.character_data"),
->            ("is_verified_by", DomainType "information_schema.character_data"),
->            ("comments", DomainType "information_schema.character_data")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
->         CatCreateTable "information_schema.sql_sizing"
->           [("sizing_id", DomainType "information_schema.cardinal_number"),
->            ("sizing_name", DomainType "information_schema.character_data"),
->            ("supported_value",
->             DomainType "information_schema.cardinal_number"),
->            ("comments", DomainType "information_schema.character_data")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
->         CatCreateTable "information_schema.sql_sizing_profiles"
->           [("sizing_id", DomainType "information_schema.cardinal_number"),
->            ("sizing_name", DomainType "information_schema.character_data"),
->            ("profile_id", DomainType "information_schema.character_data"),
->            ("required_value",
->             DomainType "information_schema.cardinal_number"),
->            ("comments", DomainType "information_schema.character_data")]
->           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
->            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
->            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
->         CatCreateView "information_schema._pg_foreign_data_wrappers"
->           [("oid", ScalarType "oid"), ("fdwowner", ScalarType "oid"),
->            ("fdwoptions", ArrayType (ScalarType "text")),
->            ("foreign_data_wrapper_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("foreign_data_wrapper_name",
->             DomainType "information_schema.sql_identifier"),
->            ("authorization_identifier",
->             DomainType "information_schema.sql_identifier"),
->            ("foreign_data_wrapper_language",
->             DomainType "information_schema.character_data")],
->         CatCreateView "information_schema._pg_foreign_servers"
->           [("oid", ScalarType "oid"),
->            ("srvoptions", ArrayType (ScalarType "text")),
->            ("foreign_server_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("foreign_server_name",
->             DomainType "information_schema.sql_identifier"),
->            ("foreign_data_wrapper_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("foreign_data_wrapper_name",
->             DomainType "information_schema.sql_identifier"),
->            ("foreign_server_type",
->             DomainType "information_schema.character_data"),
->            ("foreign_server_version",
->             DomainType "information_schema.character_data"),
->            ("authorization_identifier",
->             DomainType "information_schema.sql_identifier")],
->         CatCreateView "information_schema._pg_user_mappings"
->           [("oid", ScalarType "oid"),
->            ("umoptions", ArrayType (ScalarType "text")),
->            ("umuser", ScalarType "oid"),
->            ("authorization_identifier",
->             DomainType "information_schema.sql_identifier"),
->            ("foreign_server_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("foreign_server_name",
->             DomainType "information_schema.sql_identifier"),
->            ("srvowner", DomainType "information_schema.sql_identifier")],
->         CatCreateView
->           "information_schema.administrable_role_authorizations"
->           [("grantee", DomainType "information_schema.sql_identifier"),
->            ("role_name", DomainType "information_schema.sql_identifier"),
->            ("is_grantable", DomainType "information_schema.character_data")],
->         CatCreateView "information_schema.applicable_roles"
->           [("grantee", DomainType "information_schema.sql_identifier"),
->            ("role_name", DomainType "information_schema.sql_identifier"),
->            ("is_grantable", DomainType "information_schema.character_data")],
->         CatCreateView "information_schema.attributes"
->           [("udt_catalog", DomainType "information_schema.sql_identifier"),
->            ("udt_schema", DomainType "information_schema.sql_identifier"),
->            ("udt_name", DomainType "information_schema.sql_identifier"),
->            ("attribute_name", DomainType "information_schema.sql_identifier"),
->            ("ordinal_position",
->             DomainType "information_schema.cardinal_number"),
->            ("attribute_default",
->             DomainType "information_schema.character_data"),
->            ("is_nullable", DomainType "information_schema.character_data"),
->            ("data_type", DomainType "information_schema.character_data"),
->            ("character_maximum_length",
->             DomainType "information_schema.cardinal_number"),
->            ("character_octet_length",
->             DomainType "information_schema.cardinal_number"),
->            ("character_set_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("character_set_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("character_set_name",
->             DomainType "information_schema.sql_identifier"),
->            ("collation_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("collation_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("collation_name", DomainType "information_schema.sql_identifier"),
->            ("numeric_precision",
->             DomainType "information_schema.cardinal_number"),
->            ("numeric_precision_radix",
->             DomainType "information_schema.cardinal_number"),
->            ("numeric_scale", DomainType "information_schema.cardinal_number"),
->            ("datetime_precision",
->             DomainType "information_schema.cardinal_number"),
->            ("interval_type", DomainType "information_schema.character_data"),
->            ("interval_precision",
->             DomainType "information_schema.character_data"),
->            ("attribute_udt_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("attribute_udt_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("attribute_udt_name",
->             DomainType "information_schema.sql_identifier"),
->            ("scope_catalog", DomainType "information_schema.sql_identifier"),
->            ("scope_schema", DomainType "information_schema.sql_identifier"),
->            ("scope_name", DomainType "information_schema.sql_identifier"),
->            ("maximum_cardinality",
->             DomainType "information_schema.cardinal_number"),
->            ("dtd_identifier", DomainType "information_schema.sql_identifier"),
->            ("is_derived_reference_attribute",
->             DomainType "information_schema.character_data")],
->         CatCreateView "information_schema.check_constraint_routine_usage"
->           [("constraint_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("constraint_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("constraint_name",
->             DomainType "information_schema.sql_identifier"),
->            ("specific_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("specific_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("specific_name", DomainType "information_schema.sql_identifier")],
->         CatCreateView "information_schema.check_constraints"
->           [("constraint_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("constraint_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("constraint_name",
->             DomainType "information_schema.sql_identifier"),
->            ("check_clause", DomainType "information_schema.character_data")],
->         CatCreateView "information_schema.column_domain_usage"
->           [("domain_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("domain_schema", DomainType "information_schema.sql_identifier"),
->            ("domain_name", DomainType "information_schema.sql_identifier"),
->            ("table_catalog", DomainType "information_schema.sql_identifier"),
->            ("table_schema", DomainType "information_schema.sql_identifier"),
->            ("table_name", DomainType "information_schema.sql_identifier"),
->            ("column_name", DomainType "information_schema.sql_identifier")],
->         CatCreateView "information_schema.column_privileges"
->           [("grantor", DomainType "information_schema.sql_identifier"),
->            ("grantee", DomainType "information_schema.sql_identifier"),
->            ("table_catalog", DomainType "information_schema.sql_identifier"),
->            ("table_schema", DomainType "information_schema.sql_identifier"),
->            ("table_name", DomainType "information_schema.sql_identifier"),
->            ("column_name", DomainType "information_schema.sql_identifier"),
->            ("privilege_type", DomainType "information_schema.character_data"),
->            ("is_grantable", DomainType "information_schema.character_data")],
->         CatCreateView "information_schema.column_udt_usage"
->           [("udt_catalog", DomainType "information_schema.sql_identifier"),
->            ("udt_schema", DomainType "information_schema.sql_identifier"),
->            ("udt_name", DomainType "information_schema.sql_identifier"),
->            ("table_catalog", DomainType "information_schema.sql_identifier"),
->            ("table_schema", DomainType "information_schema.sql_identifier"),
->            ("table_name", DomainType "information_schema.sql_identifier"),
->            ("column_name", DomainType "information_schema.sql_identifier")],
->         CatCreateView "information_schema.columns"
->           [("table_catalog", DomainType "information_schema.sql_identifier"),
->            ("table_schema", DomainType "information_schema.sql_identifier"),
->            ("table_name", DomainType "information_schema.sql_identifier"),
->            ("column_name", DomainType "information_schema.sql_identifier"),
->            ("ordinal_position",
->             DomainType "information_schema.cardinal_number"),
->            ("column_default", DomainType "information_schema.character_data"),
->            ("is_nullable", DomainType "information_schema.character_data"),
->            ("data_type", DomainType "information_schema.character_data"),
->            ("character_maximum_length",
->             DomainType "information_schema.cardinal_number"),
->            ("character_octet_length",
->             DomainType "information_schema.cardinal_number"),
->            ("numeric_precision",
->             DomainType "information_schema.cardinal_number"),
->            ("numeric_precision_radix",
->             DomainType "information_schema.cardinal_number"),
->            ("numeric_scale", DomainType "information_schema.cardinal_number"),
->            ("datetime_precision",
->             DomainType "information_schema.cardinal_number"),
->            ("interval_type", DomainType "information_schema.character_data"),
->            ("interval_precision",
->             DomainType "information_schema.character_data"),
->            ("character_set_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("character_set_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("character_set_name",
->             DomainType "information_schema.sql_identifier"),
->            ("collation_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("collation_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("collation_name", DomainType "information_schema.sql_identifier"),
->            ("domain_catalog", DomainType "information_schema.sql_identifier"),
->            ("domain_schema", DomainType "information_schema.sql_identifier"),
->            ("domain_name", DomainType "information_schema.sql_identifier"),
->            ("udt_catalog", DomainType "information_schema.sql_identifier"),
->            ("udt_schema", DomainType "information_schema.sql_identifier"),
->            ("udt_name", DomainType "information_schema.sql_identifier"),
->            ("scope_catalog", DomainType "information_schema.sql_identifier"),
->            ("scope_schema", DomainType "information_schema.sql_identifier"),
->            ("scope_name", DomainType "information_schema.sql_identifier"),
->            ("maximum_cardinality",
->             DomainType "information_schema.cardinal_number"),
->            ("dtd_identifier", DomainType "information_schema.sql_identifier"),
->            ("is_self_referencing",
->             DomainType "information_schema.character_data"),
->            ("is_identity", DomainType "information_schema.character_data"),
->            ("identity_generation",
->             DomainType "information_schema.character_data"),
->            ("identity_start", DomainType "information_schema.character_data"),
->            ("identity_increment",
->             DomainType "information_schema.character_data"),
->            ("identity_maximum",
->             DomainType "information_schema.character_data"),
->            ("identity_minimum",
->             DomainType "information_schema.character_data"),
->            ("identity_cycle", DomainType "information_schema.character_data"),
->            ("is_generated", DomainType "information_schema.character_data"),
->            ("generation_expression",
->             DomainType "information_schema.character_data"),
->            ("is_updatable", DomainType "information_schema.character_data")],
->         CatCreateView "information_schema.constraint_column_usage"
->           [("table_catalog", DomainType "information_schema.sql_identifier"),
->            ("table_schema", DomainType "information_schema.sql_identifier"),
->            ("table_name", DomainType "information_schema.sql_identifier"),
->            ("column_name", DomainType "information_schema.sql_identifier"),
->            ("constraint_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("constraint_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("constraint_name",
->             DomainType "information_schema.sql_identifier")],
->         CatCreateView "information_schema.constraint_table_usage"
->           [("table_catalog", DomainType "information_schema.sql_identifier"),
->            ("table_schema", DomainType "information_schema.sql_identifier"),
->            ("table_name", DomainType "information_schema.sql_identifier"),
->            ("constraint_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("constraint_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("constraint_name",
->             DomainType "information_schema.sql_identifier")],
->         CatCreateView "information_schema.data_type_privileges"
->           [("object_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("object_schema", DomainType "information_schema.sql_identifier"),
->            ("object_name", DomainType "information_schema.sql_identifier"),
->            ("object_type", DomainType "information_schema.character_data"),
->            ("dtd_identifier",
->             DomainType "information_schema.sql_identifier")],
->         CatCreateView "information_schema.domain_constraints"
->           [("constraint_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("constraint_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("constraint_name",
->             DomainType "information_schema.sql_identifier"),
->            ("domain_catalog", DomainType "information_schema.sql_identifier"),
->            ("domain_schema", DomainType "information_schema.sql_identifier"),
->            ("domain_name", DomainType "information_schema.sql_identifier"),
->            ("is_deferrable", DomainType "information_schema.character_data"),
->            ("initially_deferred",
->             DomainType "information_schema.character_data")],
->         CatCreateView "information_schema.domain_udt_usage"
->           [("udt_catalog", DomainType "information_schema.sql_identifier"),
->            ("udt_schema", DomainType "information_schema.sql_identifier"),
->            ("udt_name", DomainType "information_schema.sql_identifier"),
->            ("domain_catalog", DomainType "information_schema.sql_identifier"),
->            ("domain_schema", DomainType "information_schema.sql_identifier"),
->            ("domain_name", DomainType "information_schema.sql_identifier")],
->         CatCreateView "information_schema.domains"
->           [("domain_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("domain_schema", DomainType "information_schema.sql_identifier"),
->            ("domain_name", DomainType "information_schema.sql_identifier"),
->            ("data_type", DomainType "information_schema.character_data"),
->            ("character_maximum_length",
->             DomainType "information_schema.cardinal_number"),
->            ("character_octet_length",
->             DomainType "information_schema.cardinal_number"),
->            ("character_set_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("character_set_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("character_set_name",
->             DomainType "information_schema.sql_identifier"),
->            ("collation_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("collation_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("collation_name", DomainType "information_schema.sql_identifier"),
->            ("numeric_precision",
->             DomainType "information_schema.cardinal_number"),
->            ("numeric_precision_radix",
->             DomainType "information_schema.cardinal_number"),
->            ("numeric_scale", DomainType "information_schema.cardinal_number"),
->            ("datetime_precision",
->             DomainType "information_schema.cardinal_number"),
->            ("interval_type", DomainType "information_schema.character_data"),
->            ("interval_precision",
->             DomainType "information_schema.character_data"),
->            ("domain_default", DomainType "information_schema.character_data"),
->            ("udt_catalog", DomainType "information_schema.sql_identifier"),
->            ("udt_schema", DomainType "information_schema.sql_identifier"),
->            ("udt_name", DomainType "information_schema.sql_identifier"),
->            ("scope_catalog", DomainType "information_schema.sql_identifier"),
->            ("scope_schema", DomainType "information_schema.sql_identifier"),
->            ("scope_name", DomainType "information_schema.sql_identifier"),
->            ("maximum_cardinality",
->             DomainType "information_schema.cardinal_number"),
->            ("dtd_identifier",
->             DomainType "information_schema.sql_identifier")],
->         CatCreateView "information_schema.element_types"
->           [("object_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("object_schema", DomainType "information_schema.sql_identifier"),
->            ("object_name", DomainType "information_schema.sql_identifier"),
->            ("object_type", DomainType "information_schema.character_data"),
->            ("collection_type_identifier",
->             DomainType "information_schema.sql_identifier"),
->            ("data_type", DomainType "information_schema.character_data"),
->            ("character_maximum_length",
->             DomainType "information_schema.cardinal_number"),
->            ("character_octet_length",
->             DomainType "information_schema.cardinal_number"),
->            ("character_set_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("character_set_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("character_set_name",
->             DomainType "information_schema.sql_identifier"),
->            ("collation_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("collation_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("collation_name", DomainType "information_schema.sql_identifier"),
->            ("numeric_precision",
->             DomainType "information_schema.cardinal_number"),
->            ("numeric_precision_radix",
->             DomainType "information_schema.cardinal_number"),
->            ("numeric_scale", DomainType "information_schema.cardinal_number"),
->            ("datetime_precision",
->             DomainType "information_schema.cardinal_number"),
->            ("interval_type", DomainType "information_schema.character_data"),
->            ("interval_precision",
->             DomainType "information_schema.character_data"),
->            ("domain_default", DomainType "information_schema.character_data"),
->            ("udt_catalog", DomainType "information_schema.sql_identifier"),
->            ("udt_schema", DomainType "information_schema.sql_identifier"),
->            ("udt_name", DomainType "information_schema.sql_identifier"),
->            ("scope_catalog", DomainType "information_schema.sql_identifier"),
->            ("scope_schema", DomainType "information_schema.sql_identifier"),
->            ("scope_name", DomainType "information_schema.sql_identifier"),
->            ("maximum_cardinality",
->             DomainType "information_schema.cardinal_number"),
->            ("dtd_identifier",
->             DomainType "information_schema.sql_identifier")],
->         CatCreateView "information_schema.enabled_roles"
->           [("role_name", DomainType "information_schema.sql_identifier")],
->         CatCreateView "information_schema.foreign_data_wrapper_options"
->           [("foreign_data_wrapper_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("foreign_data_wrapper_name",
->             DomainType "information_schema.sql_identifier"),
->            ("option_name", DomainType "information_schema.sql_identifier"),
->            ("option_value", DomainType "information_schema.character_data")],
->         CatCreateView "information_schema.foreign_data_wrappers"
->           [("foreign_data_wrapper_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("foreign_data_wrapper_name",
->             DomainType "information_schema.sql_identifier"),
->            ("authorization_identifier",
->             DomainType "information_schema.sql_identifier"),
->            ("library_name", DomainType "information_schema.character_data"),
->            ("foreign_data_wrapper_language",
->             DomainType "information_schema.character_data")],
->         CatCreateView "information_schema.foreign_server_options"
->           [("foreign_server_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("foreign_server_name",
->             DomainType "information_schema.sql_identifier"),
->            ("option_name", DomainType "information_schema.sql_identifier"),
->            ("option_value", DomainType "information_schema.character_data")],
->         CatCreateView "information_schema.foreign_servers"
->           [("foreign_server_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("foreign_server_name",
->             DomainType "information_schema.sql_identifier"),
->            ("foreign_data_wrapper_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("foreign_data_wrapper_name",
->             DomainType "information_schema.sql_identifier"),
->            ("foreign_server_type",
->             DomainType "information_schema.character_data"),
->            ("foreign_server_version",
->             DomainType "information_schema.character_data"),
->            ("authorization_identifier",
->             DomainType "information_schema.sql_identifier")],
->         CatCreateView "information_schema.information_schema_catalog_name"
->           [("catalog_name", DomainType "information_schema.sql_identifier")],
->         CatCreateView "information_schema.key_column_usage"
->           [("constraint_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("constraint_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("constraint_name",
->             DomainType "information_schema.sql_identifier"),
->            ("table_catalog", DomainType "information_schema.sql_identifier"),
->            ("table_schema", DomainType "information_schema.sql_identifier"),
->            ("table_name", DomainType "information_schema.sql_identifier"),
->            ("column_name", DomainType "information_schema.sql_identifier"),
->            ("ordinal_position",
->             DomainType "information_schema.cardinal_number"),
->            ("position_in_unique_constraint",
->             DomainType "information_schema.cardinal_number")],
->         CatCreateView "information_schema.parameters"
->           [("specific_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("specific_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("specific_name", DomainType "information_schema.sql_identifier"),
->            ("ordinal_position",
->             DomainType "information_schema.cardinal_number"),
->            ("parameter_mode", DomainType "information_schema.character_data"),
->            ("is_result", DomainType "information_schema.character_data"),
->            ("as_locator", DomainType "information_schema.character_data"),
->            ("parameter_name", DomainType "information_schema.sql_identifier"),
->            ("data_type", DomainType "information_schema.character_data"),
->            ("character_maximum_length",
->             DomainType "information_schema.cardinal_number"),
->            ("character_octet_length",
->             DomainType "information_schema.cardinal_number"),
->            ("character_set_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("character_set_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("character_set_name",
->             DomainType "information_schema.sql_identifier"),
->            ("collation_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("collation_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("collation_name", DomainType "information_schema.sql_identifier"),
->            ("numeric_precision",
->             DomainType "information_schema.cardinal_number"),
->            ("numeric_precision_radix",
->             DomainType "information_schema.cardinal_number"),
->            ("numeric_scale", DomainType "information_schema.cardinal_number"),
->            ("datetime_precision",
->             DomainType "information_schema.cardinal_number"),
->            ("interval_type", DomainType "information_schema.character_data"),
->            ("interval_precision",
->             DomainType "information_schema.character_data"),
->            ("udt_catalog", DomainType "information_schema.sql_identifier"),
->            ("udt_schema", DomainType "information_schema.sql_identifier"),
->            ("udt_name", DomainType "information_schema.sql_identifier"),
->            ("scope_catalog", DomainType "information_schema.sql_identifier"),
->            ("scope_schema", DomainType "information_schema.sql_identifier"),
->            ("scope_name", DomainType "information_schema.sql_identifier"),
->            ("maximum_cardinality",
->             DomainType "information_schema.cardinal_number"),
->            ("dtd_identifier",
->             DomainType "information_schema.sql_identifier")],
->         CatCreateView "pg_cursors"
->           [("name", ScalarType "text"), ("statement", ScalarType "text"),
->            ("is_holdable", ScalarType "bool"),
->            ("is_binary", ScalarType "bool"),
->            ("is_scrollable", ScalarType "bool"),
->            ("creation_time", ScalarType "timestamptz")],
->         CatCreateView "pg_group"
->           [("groname", ScalarType "name"), ("grosysid", ScalarType "oid"),
->            ("grolist", ArrayType (ScalarType "oid"))],
->         CatCreateView "pg_indexes"
->           [("schemaname", ScalarType "name"),
->            ("tablename", ScalarType "name"), ("indexname", ScalarType "name"),
->            ("tablespace", ScalarType "name"),
->            ("indexdef", ScalarType "text")],
->         CatCreateView "pg_locks"
->           [("locktype", ScalarType "text"), ("database", ScalarType "oid"),
->            ("relation", ScalarType "oid"), ("page", ScalarType "int4"),
->            ("tuple", ScalarType "int2"), ("virtualxid", ScalarType "text"),
->            ("transactionid", ScalarType "xid"), ("classid", ScalarType "oid"),
->            ("objid", ScalarType "oid"), ("objsubid", ScalarType "int2"),
->            ("virtualtransaction", ScalarType "text"),
->            ("pid", ScalarType "int4"), ("mode", ScalarType "text"),
->            ("granted", ScalarType "bool")],
->         CatCreateView "pg_prepared_statements"
->           [("name", ScalarType "text"), ("statement", ScalarType "text"),
->            ("prepare_time", ScalarType "timestamptz"),
->            ("parameter_types", ArrayType (ScalarType "regtype")),
->            ("from_sql", ScalarType "bool")],
->         CatCreateView "pg_prepared_xacts"
->           [("transaction", ScalarType "xid"), ("gid", ScalarType "text"),
->            ("prepared", ScalarType "timestamptz"),
->            ("owner", ScalarType "name"), ("database", ScalarType "name")],
->         CatCreateView "pg_roles"
->           [("rolname", ScalarType "name"), ("rolsuper", ScalarType "bool"),
->            ("rolinherit", ScalarType "bool"),
->            ("rolcreaterole", ScalarType "bool"),
->            ("rolcreatedb", ScalarType "bool"),
->            ("rolcatupdate", ScalarType "bool"),
->            ("rolcanlogin", ScalarType "bool"),
->            ("rolconnlimit", ScalarType "int4"),
->            ("rolpassword", ScalarType "text"),
->            ("rolvaliduntil", ScalarType "timestamptz"),
->            ("rolconfig", ArrayType (ScalarType "text")),
->            ("oid", ScalarType "oid")],
->         CatCreateView "pg_rules"
->           [("schemaname", ScalarType "name"),
->            ("tablename", ScalarType "name"), ("rulename", ScalarType "name"),
->            ("definition", ScalarType "text")],
->         CatCreateView "pg_settings"
->           [("name", ScalarType "text"), ("setting", ScalarType "text"),
->            ("unit", ScalarType "text"), ("category", ScalarType "text"),
->            ("short_desc", ScalarType "text"),
->            ("extra_desc", ScalarType "text"), ("context", ScalarType "text"),
->            ("vartype", ScalarType "text"), ("source", ScalarType "text"),
->            ("min_val", ScalarType "text"), ("max_val", ScalarType "text"),
->            ("enumvals", ArrayType (ScalarType "text")),
->            ("boot_val", ScalarType "text"), ("reset_val", ScalarType "text"),
->            ("sourcefile", ScalarType "text"),
->            ("sourceline", ScalarType "int4")],
->         CatCreateView "pg_shadow"
->           [("usename", ScalarType "name"), ("usesysid", ScalarType "oid"),
->            ("usecreatedb", ScalarType "bool"),
->            ("usesuper", ScalarType "bool"), ("usecatupd", ScalarType "bool"),
->            ("passwd", ScalarType "text"), ("valuntil", ScalarType "abstime"),
->            ("useconfig", ArrayType (ScalarType "text"))],
->         CatCreateView "pg_stat_activity"
->           [("datid", ScalarType "oid"), ("datname", ScalarType "name"),
->            ("procpid", ScalarType "int4"), ("usesysid", ScalarType "oid"),
->            ("usename", ScalarType "name"),
->            ("current_query", ScalarType "text"),
->            ("waiting", ScalarType "bool"),
->            ("xact_start", ScalarType "timestamptz"),
->            ("query_start", ScalarType "timestamptz"),
->            ("backend_start", ScalarType "timestamptz"),
->            ("client_addr", ScalarType "inet"),
->            ("client_port", ScalarType "int4")],
->         CatCreateView "pg_stat_all_indexes"
->           [("relid", ScalarType "oid"), ("indexrelid", ScalarType "oid"),
->            ("schemaname", ScalarType "name"), ("relname", ScalarType "name"),
->            ("indexrelname", ScalarType "name"),
->            ("idx_scan", ScalarType "int8"),
->            ("idx_tup_read", ScalarType "int8"),
->            ("idx_tup_fetch", ScalarType "int8")],
->         CatCreateView "pg_stat_all_tables"
->           [("relid", ScalarType "oid"), ("schemaname", ScalarType "name"),
->            ("relname", ScalarType "name"), ("seq_scan", ScalarType "int8"),
->            ("seq_tup_read", ScalarType "int8"),
->            ("idx_scan", ScalarType "int8"),
->            ("idx_tup_fetch", ScalarType "int8"),
->            ("n_tup_ins", ScalarType "int8"), ("n_tup_upd", ScalarType "int8"),
->            ("n_tup_del", ScalarType "int8"),
->            ("n_tup_hot_upd", ScalarType "int8"),
->            ("n_live_tup", ScalarType "int8"),
->            ("n_dead_tup", ScalarType "int8"),
->            ("last_vacuum", ScalarType "timestamptz"),
->            ("last_autovacuum", ScalarType "timestamptz"),
->            ("last_analyze", ScalarType "timestamptz"),
->            ("last_autoanalyze", ScalarType "timestamptz")],
->         CatCreateView "pg_stat_bgwriter"
->           [("checkpoints_timed", ScalarType "int8"),
->            ("checkpoints_req", ScalarType "int8"),
->            ("buffers_checkpoint", ScalarType "int8"),
->            ("buffers_clean", ScalarType "int8"),
->            ("maxwritten_clean", ScalarType "int8"),
->            ("buffers_backend", ScalarType "int8"),
->            ("buffers_alloc", ScalarType "int8")],
->         CatCreateView "pg_stat_database"
->           [("datid", ScalarType "oid"), ("datname", ScalarType "name"),
->            ("numbackends", ScalarType "int4"),
->            ("xact_commit", ScalarType "int8"),
->            ("xact_rollback", ScalarType "int8"),
->            ("blks_read", ScalarType "int8"), ("blks_hit", ScalarType "int8"),
->            ("tup_returned", ScalarType "int8"),
->            ("tup_fetched", ScalarType "int8"),
->            ("tup_inserted", ScalarType "int8"),
->            ("tup_updated", ScalarType "int8"),
->            ("tup_deleted", ScalarType "int8")],
->         CatCreateView "pg_stat_sys_indexes"
->           [("relid", ScalarType "oid"), ("indexrelid", ScalarType "oid"),
->            ("schemaname", ScalarType "name"), ("relname", ScalarType "name"),
->            ("indexrelname", ScalarType "name"),
->            ("idx_scan", ScalarType "int8"),
->            ("idx_tup_read", ScalarType "int8"),
->            ("idx_tup_fetch", ScalarType "int8")],
->         CatCreateView "pg_stat_sys_tables"
->           [("relid", ScalarType "oid"), ("schemaname", ScalarType "name"),
->            ("relname", ScalarType "name"), ("seq_scan", ScalarType "int8"),
->            ("seq_tup_read", ScalarType "int8"),
->            ("idx_scan", ScalarType "int8"),
->            ("idx_tup_fetch", ScalarType "int8"),
->            ("n_tup_ins", ScalarType "int8"), ("n_tup_upd", ScalarType "int8"),
->            ("n_tup_del", ScalarType "int8"),
->            ("n_tup_hot_upd", ScalarType "int8"),
->            ("n_live_tup", ScalarType "int8"),
->            ("n_dead_tup", ScalarType "int8"),
->            ("last_vacuum", ScalarType "timestamptz"),
->            ("last_autovacuum", ScalarType "timestamptz"),
->            ("last_analyze", ScalarType "timestamptz"),
->            ("last_autoanalyze", ScalarType "timestamptz")],
->         CatCreateView "pg_stat_user_functions"
->           [("funcid", ScalarType "oid"), ("schemaname", ScalarType "name"),
->            ("funcname", ScalarType "name"), ("calls", ScalarType "int8"),
->            ("total_time", ScalarType "int8"),
->            ("self_time", ScalarType "int8")],
->         CatCreateView "pg_stat_user_indexes"
->           [("relid", ScalarType "oid"), ("indexrelid", ScalarType "oid"),
->            ("schemaname", ScalarType "name"), ("relname", ScalarType "name"),
->            ("indexrelname", ScalarType "name"),
->            ("idx_scan", ScalarType "int8"),
->            ("idx_tup_read", ScalarType "int8"),
->            ("idx_tup_fetch", ScalarType "int8")],
->         CatCreateView "pg_stat_user_tables"
->           [("relid", ScalarType "oid"), ("schemaname", ScalarType "name"),
->            ("relname", ScalarType "name"), ("seq_scan", ScalarType "int8"),
->            ("seq_tup_read", ScalarType "int8"),
->            ("idx_scan", ScalarType "int8"),
->            ("idx_tup_fetch", ScalarType "int8"),
->            ("n_tup_ins", ScalarType "int8"), ("n_tup_upd", ScalarType "int8"),
->            ("n_tup_del", ScalarType "int8"),
->            ("n_tup_hot_upd", ScalarType "int8"),
->            ("n_live_tup", ScalarType "int8"),
->            ("n_dead_tup", ScalarType "int8"),
->            ("last_vacuum", ScalarType "timestamptz"),
->            ("last_autovacuum", ScalarType "timestamptz"),
->            ("last_analyze", ScalarType "timestamptz"),
->            ("last_autoanalyze", ScalarType "timestamptz")],
->         CatCreateView "pg_statio_all_indexes"
->           [("relid", ScalarType "oid"), ("indexrelid", ScalarType "oid"),
->            ("schemaname", ScalarType "name"), ("relname", ScalarType "name"),
->            ("indexrelname", ScalarType "name"),
->            ("idx_blks_read", ScalarType "int8"),
->            ("idx_blks_hit", ScalarType "int8")],
->         CatCreateView "pg_statio_all_sequences"
->           [("relid", ScalarType "oid"), ("schemaname", ScalarType "name"),
->            ("relname", ScalarType "name"), ("blks_read", ScalarType "int8"),
->            ("blks_hit", ScalarType "int8")],
->         CatCreateView "pg_statio_all_tables"
->           [("relid", ScalarType "oid"), ("schemaname", ScalarType "name"),
->            ("relname", ScalarType "name"),
->            ("heap_blks_read", ScalarType "int8"),
->            ("heap_blks_hit", ScalarType "int8"),
->            ("idx_blks_read", ScalarType "int8"),
->            ("idx_blks_hit", ScalarType "int8"),
->            ("toast_blks_read", ScalarType "int8"),
->            ("toast_blks_hit", ScalarType "int8"),
->            ("tidx_blks_read", ScalarType "int8"),
->            ("tidx_blks_hit", ScalarType "int8")],
->         CatCreateView "pg_statio_sys_indexes"
->           [("relid", ScalarType "oid"), ("indexrelid", ScalarType "oid"),
->            ("schemaname", ScalarType "name"), ("relname", ScalarType "name"),
->            ("indexrelname", ScalarType "name"),
->            ("idx_blks_read", ScalarType "int8"),
->            ("idx_blks_hit", ScalarType "int8")],
->         CatCreateView "pg_statio_sys_sequences"
->           [("relid", ScalarType "oid"), ("schemaname", ScalarType "name"),
->            ("relname", ScalarType "name"), ("blks_read", ScalarType "int8"),
->            ("blks_hit", ScalarType "int8")],
->         CatCreateView "pg_statio_sys_tables"
->           [("relid", ScalarType "oid"), ("schemaname", ScalarType "name"),
->            ("relname", ScalarType "name"),
->            ("heap_blks_read", ScalarType "int8"),
->            ("heap_blks_hit", ScalarType "int8"),
->            ("idx_blks_read", ScalarType "int8"),
->            ("idx_blks_hit", ScalarType "int8"),
->            ("toast_blks_read", ScalarType "int8"),
->            ("toast_blks_hit", ScalarType "int8"),
->            ("tidx_blks_read", ScalarType "int8"),
->            ("tidx_blks_hit", ScalarType "int8")],
->         CatCreateView "pg_statio_user_indexes"
->           [("relid", ScalarType "oid"), ("indexrelid", ScalarType "oid"),
->            ("schemaname", ScalarType "name"), ("relname", ScalarType "name"),
->            ("indexrelname", ScalarType "name"),
->            ("idx_blks_read", ScalarType "int8"),
->            ("idx_blks_hit", ScalarType "int8")],
->         CatCreateView "pg_statio_user_sequences"
->           [("relid", ScalarType "oid"), ("schemaname", ScalarType "name"),
->            ("relname", ScalarType "name"), ("blks_read", ScalarType "int8"),
->            ("blks_hit", ScalarType "int8")],
->         CatCreateView "pg_statio_user_tables"
->           [("relid", ScalarType "oid"), ("schemaname", ScalarType "name"),
->            ("relname", ScalarType "name"),
->            ("heap_blks_read", ScalarType "int8"),
->            ("heap_blks_hit", ScalarType "int8"),
->            ("idx_blks_read", ScalarType "int8"),
->            ("idx_blks_hit", ScalarType "int8"),
->            ("toast_blks_read", ScalarType "int8"),
->            ("toast_blks_hit", ScalarType "int8"),
->            ("tidx_blks_read", ScalarType "int8"),
->            ("tidx_blks_hit", ScalarType "int8")],
->         CatCreateView "pg_stats"
->           [("schemaname", ScalarType "name"),
->            ("tablename", ScalarType "name"), ("attname", ScalarType "name"),
->            ("null_frac", ScalarType "float4"),
->            ("avg_width", ScalarType "int4"),
->            ("n_distinct", ScalarType "float4"),
->            ("most_common_vals", Pseudo AnyArray),
->            ("most_common_freqs", ArrayType (ScalarType "float4")),
->            ("histogram_bounds", Pseudo AnyArray),
->            ("correlation", ScalarType "float4")],
->         CatCreateView "pg_tables"
->           [("schemaname", ScalarType "name"),
->            ("tablename", ScalarType "name"),
->            ("tableowner", ScalarType "name"),
->            ("tablespace", ScalarType "name"),
->            ("hasindexes", ScalarType "bool"), ("hasrules", ScalarType "bool"),
->            ("hastriggers", ScalarType "bool")],
->         CatCreateView "pg_timezone_abbrevs"
->           [("abbrev", ScalarType "text"),
->            ("utc_offset", ScalarType "interval"),
->            ("is_dst", ScalarType "bool")],
->         CatCreateView "pg_timezone_names"
->           [("name", ScalarType "text"), ("abbrev", ScalarType "text"),
->            ("utc_offset", ScalarType "interval"),
->            ("is_dst", ScalarType "bool")],
->         CatCreateView "pg_user"
->           [("usename", ScalarType "name"), ("usesysid", ScalarType "oid"),
->            ("usecreatedb", ScalarType "bool"),
->            ("usesuper", ScalarType "bool"), ("usecatupd", ScalarType "bool"),
->            ("passwd", ScalarType "text"), ("valuntil", ScalarType "abstime"),
->            ("useconfig", ArrayType (ScalarType "text"))],
->         CatCreateView "pg_user_mappings"
->           [("umid", ScalarType "oid"), ("srvid", ScalarType "oid"),
->            ("srvname", ScalarType "name"), ("umuser", ScalarType "oid"),
->            ("usename", ScalarType "name"),
->            ("umoptions", ArrayType (ScalarType "text"))],
->         CatCreateView "pg_views"
->           [("schemaname", ScalarType "name"),
->            ("viewname", ScalarType "name"), ("viewowner", ScalarType "name"),
->            ("definition", ScalarType "text")],
->         CatCreateView "information_schema.referential_constraints"
->           [("constraint_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("constraint_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("constraint_name",
->             DomainType "information_schema.sql_identifier"),
->            ("unique_constraint_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("unique_constraint_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("unique_constraint_name",
->             DomainType "information_schema.sql_identifier"),
->            ("match_option", DomainType "information_schema.character_data"),
->            ("update_rule", DomainType "information_schema.character_data"),
->            ("delete_rule", DomainType "information_schema.character_data")],
->         CatCreateView "information_schema.role_column_grants"
->           [("grantor", DomainType "information_schema.sql_identifier"),
->            ("grantee", DomainType "information_schema.sql_identifier"),
->            ("table_catalog", DomainType "information_schema.sql_identifier"),
->            ("table_schema", DomainType "information_schema.sql_identifier"),
->            ("table_name", DomainType "information_schema.sql_identifier"),
->            ("column_name", DomainType "information_schema.sql_identifier"),
->            ("privilege_type", DomainType "information_schema.character_data"),
->            ("is_grantable", DomainType "information_schema.character_data")],
->         CatCreateView "information_schema.role_routine_grants"
->           [("grantor", DomainType "information_schema.sql_identifier"),
->            ("grantee", DomainType "information_schema.sql_identifier"),
->            ("specific_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("specific_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("specific_name", DomainType "information_schema.sql_identifier"),
->            ("routine_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("routine_schema", DomainType "information_schema.sql_identifier"),
->            ("routine_name", DomainType "information_schema.sql_identifier"),
->            ("privilege_type", DomainType "information_schema.character_data"),
->            ("is_grantable", DomainType "information_schema.character_data")],
->         CatCreateView "information_schema.role_table_grants"
->           [("grantor", DomainType "information_schema.sql_identifier"),
->            ("grantee", DomainType "information_schema.sql_identifier"),
->            ("table_catalog", DomainType "information_schema.sql_identifier"),
->            ("table_schema", DomainType "information_schema.sql_identifier"),
->            ("table_name", DomainType "information_schema.sql_identifier"),
->            ("privilege_type", DomainType "information_schema.character_data"),
->            ("is_grantable", DomainType "information_schema.character_data"),
->            ("with_hierarchy",
->             DomainType "information_schema.character_data")],
->         CatCreateView "information_schema.role_usage_grants"
->           [("grantor", DomainType "information_schema.sql_identifier"),
->            ("grantee", DomainType "information_schema.sql_identifier"),
->            ("object_catalog", DomainType "information_schema.sql_identifier"),
->            ("object_schema", DomainType "information_schema.sql_identifier"),
->            ("object_name", DomainType "information_schema.sql_identifier"),
->            ("object_type", DomainType "information_schema.character_data"),
->            ("privilege_type", DomainType "information_schema.character_data"),
->            ("is_grantable", DomainType "information_schema.character_data")],
->         CatCreateView "information_schema.routine_privileges"
->           [("grantor", DomainType "information_schema.sql_identifier"),
->            ("grantee", DomainType "information_schema.sql_identifier"),
->            ("specific_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("specific_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("specific_name", DomainType "information_schema.sql_identifier"),
->            ("routine_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("routine_schema", DomainType "information_schema.sql_identifier"),
->            ("routine_name", DomainType "information_schema.sql_identifier"),
->            ("privilege_type", DomainType "information_schema.character_data"),
->            ("is_grantable", DomainType "information_schema.character_data")],
->         CatCreateView "information_schema.routines"
->           [("specific_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("specific_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("specific_name", DomainType "information_schema.sql_identifier"),
->            ("routine_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("routine_schema", DomainType "information_schema.sql_identifier"),
->            ("routine_name", DomainType "information_schema.sql_identifier"),
->            ("routine_type", DomainType "information_schema.character_data"),
->            ("module_catalog", DomainType "information_schema.sql_identifier"),
->            ("module_schema", DomainType "information_schema.sql_identifier"),
->            ("module_name", DomainType "information_schema.sql_identifier"),
->            ("udt_catalog", DomainType "information_schema.sql_identifier"),
->            ("udt_schema", DomainType "information_schema.sql_identifier"),
->            ("udt_name", DomainType "information_schema.sql_identifier"),
->            ("data_type", DomainType "information_schema.character_data"),
->            ("character_maximum_length",
->             DomainType "information_schema.cardinal_number"),
->            ("character_octet_length",
->             DomainType "information_schema.cardinal_number"),
->            ("character_set_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("character_set_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("character_set_name",
->             DomainType "information_schema.sql_identifier"),
->            ("collation_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("collation_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("collation_name", DomainType "information_schema.sql_identifier"),
->            ("numeric_precision",
->             DomainType "information_schema.cardinal_number"),
->            ("numeric_precision_radix",
->             DomainType "information_schema.cardinal_number"),
->            ("numeric_scale", DomainType "information_schema.cardinal_number"),
->            ("datetime_precision",
->             DomainType "information_schema.cardinal_number"),
->            ("interval_type", DomainType "information_schema.character_data"),
->            ("interval_precision",
->             DomainType "information_schema.character_data"),
->            ("type_udt_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("type_udt_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("type_udt_name", DomainType "information_schema.sql_identifier"),
->            ("scope_catalog", DomainType "information_schema.sql_identifier"),
->            ("scope_schema", DomainType "information_schema.sql_identifier"),
->            ("scope_name", DomainType "information_schema.sql_identifier"),
->            ("maximum_cardinality",
->             DomainType "information_schema.cardinal_number"),
->            ("dtd_identifier", DomainType "information_schema.sql_identifier"),
->            ("routine_body", DomainType "information_schema.character_data"),
->            ("routine_definition",
->             DomainType "information_schema.character_data"),
->            ("external_name", DomainType "information_schema.character_data"),
->            ("external_language",
->             DomainType "information_schema.character_data"),
->            ("parameter_style",
->             DomainType "information_schema.character_data"),
->            ("is_deterministic",
->             DomainType "information_schema.character_data"),
->            ("sql_data_access",
->             DomainType "information_schema.character_data"),
->            ("is_null_call", DomainType "information_schema.character_data"),
->            ("sql_path", DomainType "information_schema.character_data"),
->            ("schema_level_routine",
->             DomainType "information_schema.character_data"),
->            ("max_dynamic_result_sets",
->             DomainType "information_schema.cardinal_number"),
->            ("is_user_defined_cast",
->             DomainType "information_schema.character_data"),
->            ("is_implicitly_invocable",
->             DomainType "information_schema.character_data"),
->            ("security_type", DomainType "information_schema.character_data"),
->            ("to_sql_specific_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("to_sql_specific_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("to_sql_specific_name",
->             DomainType "information_schema.sql_identifier"),
->            ("as_locator", DomainType "information_schema.character_data"),
->            ("created", DomainType "information_schema.time_stamp"),
->            ("last_altered", DomainType "information_schema.time_stamp"),
->            ("new_savepoint_level",
->             DomainType "information_schema.character_data"),
->            ("is_udt_dependent",
->             DomainType "information_schema.character_data"),
->            ("result_cast_from_data_type",
->             DomainType "information_schema.character_data"),
->            ("result_cast_as_locator",
->             DomainType "information_schema.character_data"),
->            ("result_cast_char_max_length",
->             DomainType "information_schema.cardinal_number"),
->            ("result_cast_char_octet_length",
->             DomainType "information_schema.cardinal_number"),
->            ("result_cast_char_set_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("result_cast_char_set_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("result_cast_character_set_name",
->             DomainType "information_schema.sql_identifier"),
->            ("result_cast_collation_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("result_cast_collation_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("result_cast_collation_name",
->             DomainType "information_schema.sql_identifier"),
->            ("result_cast_numeric_precision",
->             DomainType "information_schema.cardinal_number"),
->            ("result_cast_numeric_precision_radix",
->             DomainType "information_schema.cardinal_number"),
->            ("result_cast_numeric_scale",
->             DomainType "information_schema.cardinal_number"),
->            ("result_cast_datetime_precision",
->             DomainType "information_schema.cardinal_number"),
->            ("result_cast_interval_type",
->             DomainType "information_schema.character_data"),
->            ("result_cast_interval_precision",
->             DomainType "information_schema.character_data"),
->            ("result_cast_type_udt_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("result_cast_type_udt_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("result_cast_type_udt_name",
->             DomainType "information_schema.sql_identifier"),
->            ("result_cast_scope_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("result_cast_scope_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("result_cast_scope_name",
->             DomainType "information_schema.sql_identifier"),
->            ("result_cast_maximum_cardinality",
->             DomainType "information_schema.cardinal_number"),
->            ("result_cast_dtd_identifier",
->             DomainType "information_schema.sql_identifier")],
->         CatCreateView "information_schema.schemata"
->           [("catalog_name", DomainType "information_schema.sql_identifier"),
->            ("schema_name", DomainType "information_schema.sql_identifier"),
->            ("schema_owner", DomainType "information_schema.sql_identifier"),
->            ("default_character_set_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("default_character_set_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("default_character_set_name",
->             DomainType "information_schema.sql_identifier"),
->            ("sql_path", DomainType "information_schema.character_data")],
->         CatCreateView "information_schema.sequences"
->           [("sequence_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("sequence_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("sequence_name", DomainType "information_schema.sql_identifier"),
->            ("data_type", DomainType "information_schema.character_data"),
->            ("numeric_precision",
->             DomainType "information_schema.cardinal_number"),
->            ("numeric_precision_radix",
->             DomainType "information_schema.cardinal_number"),
->            ("numeric_scale", DomainType "information_schema.cardinal_number"),
->            ("maximum_value", DomainType "information_schema.cardinal_number"),
->            ("minimum_value", DomainType "information_schema.cardinal_number"),
->            ("increment", DomainType "information_schema.cardinal_number"),
->            ("cycle_option", DomainType "information_schema.character_data")],
->         CatCreateView "information_schema.table_constraints"
->           [("constraint_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("constraint_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("constraint_name",
->             DomainType "information_schema.sql_identifier"),
->            ("table_catalog", DomainType "information_schema.sql_identifier"),
->            ("table_schema", DomainType "information_schema.sql_identifier"),
->            ("table_name", DomainType "information_schema.sql_identifier"),
->            ("constraint_type",
->             DomainType "information_schema.character_data"),
->            ("is_deferrable", DomainType "information_schema.character_data"),
->            ("initially_deferred",
->             DomainType "information_schema.character_data")],
->         CatCreateView "information_schema.table_privileges"
->           [("grantor", DomainType "information_schema.sql_identifier"),
->            ("grantee", DomainType "information_schema.sql_identifier"),
->            ("table_catalog", DomainType "information_schema.sql_identifier"),
->            ("table_schema", DomainType "information_schema.sql_identifier"),
->            ("table_name", DomainType "information_schema.sql_identifier"),
->            ("privilege_type", DomainType "information_schema.character_data"),
->            ("is_grantable", DomainType "information_schema.character_data"),
->            ("with_hierarchy",
->             DomainType "information_schema.character_data")],
->         CatCreateView "information_schema.tables"
->           [("table_catalog", DomainType "information_schema.sql_identifier"),
->            ("table_schema", DomainType "information_schema.sql_identifier"),
->            ("table_name", DomainType "information_schema.sql_identifier"),
->            ("table_type", DomainType "information_schema.character_data"),
->            ("self_referencing_column_name",
->             DomainType "information_schema.sql_identifier"),
->            ("reference_generation",
->             DomainType "information_schema.character_data"),
->            ("user_defined_type_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("user_defined_type_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("user_defined_type_name",
->             DomainType "information_schema.sql_identifier"),
->            ("is_insertable_into",
->             DomainType "information_schema.character_data"),
->            ("is_typed", DomainType "information_schema.character_data"),
->            ("commit_action", DomainType "information_schema.character_data")],
->         CatCreateView "information_schema.triggered_update_columns"
->           [("trigger_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("trigger_schema", DomainType "information_schema.sql_identifier"),
->            ("trigger_name", DomainType "information_schema.sql_identifier"),
->            ("event_object_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("event_object_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("event_object_table",
->             DomainType "information_schema.sql_identifier"),
->            ("event_object_column",
->             DomainType "information_schema.sql_identifier")],
->         CatCreateView "information_schema.triggers"
->           [("trigger_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("trigger_schema", DomainType "information_schema.sql_identifier"),
->            ("trigger_name", DomainType "information_schema.sql_identifier"),
->            ("event_manipulation",
->             DomainType "information_schema.character_data"),
->            ("event_object_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("event_object_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("event_object_table",
->             DomainType "information_schema.sql_identifier"),
->            ("action_order", DomainType "information_schema.cardinal_number"),
->            ("action_condition",
->             DomainType "information_schema.character_data"),
->            ("action_statement",
->             DomainType "information_schema.character_data"),
->            ("action_orientation",
->             DomainType "information_schema.character_data"),
->            ("condition_timing",
->             DomainType "information_schema.character_data"),
->            ("condition_reference_old_table",
->             DomainType "information_schema.sql_identifier"),
->            ("condition_reference_new_table",
->             DomainType "information_schema.sql_identifier"),
->            ("condition_reference_old_row",
->             DomainType "information_schema.sql_identifier"),
->            ("condition_reference_new_row",
->             DomainType "information_schema.sql_identifier"),
->            ("created", DomainType "information_schema.time_stamp")],
->         CatCreateView "information_schema.usage_privileges"
->           [("grantor", DomainType "information_schema.sql_identifier"),
->            ("grantee", DomainType "information_schema.sql_identifier"),
->            ("object_catalog", DomainType "information_schema.sql_identifier"),
->            ("object_schema", DomainType "information_schema.sql_identifier"),
->            ("object_name", DomainType "information_schema.sql_identifier"),
->            ("object_type", DomainType "information_schema.character_data"),
->            ("privilege_type", DomainType "information_schema.character_data"),
->            ("is_grantable", DomainType "information_schema.character_data")],
->         CatCreateView "information_schema.user_mapping_options"
->           [("authorization_identifier",
->             DomainType "information_schema.sql_identifier"),
->            ("foreign_server_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("foreign_server_name",
->             DomainType "information_schema.sql_identifier"),
->            ("option_name", DomainType "information_schema.sql_identifier"),
->            ("option_value", DomainType "information_schema.character_data")],
->         CatCreateView "information_schema.user_mappings"
->           [("authorization_identifier",
->             DomainType "information_schema.sql_identifier"),
->            ("foreign_server_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("foreign_server_name",
->             DomainType "information_schema.sql_identifier")],
->         CatCreateView "information_schema.view_column_usage"
->           [("view_catalog", DomainType "information_schema.sql_identifier"),
->            ("view_schema", DomainType "information_schema.sql_identifier"),
->            ("view_name", DomainType "information_schema.sql_identifier"),
->            ("table_catalog", DomainType "information_schema.sql_identifier"),
->            ("table_schema", DomainType "information_schema.sql_identifier"),
->            ("table_name", DomainType "information_schema.sql_identifier"),
->            ("column_name", DomainType "information_schema.sql_identifier")],
->         CatCreateView "information_schema.view_routine_usage"
->           [("table_catalog", DomainType "information_schema.sql_identifier"),
->            ("table_schema", DomainType "information_schema.sql_identifier"),
->            ("table_name", DomainType "information_schema.sql_identifier"),
->            ("specific_catalog",
->             DomainType "information_schema.sql_identifier"),
->            ("specific_schema",
->             DomainType "information_schema.sql_identifier"),
->            ("specific_name", DomainType "information_schema.sql_identifier")],
->         CatCreateView "information_schema.view_table_usage"
->           [("view_catalog", DomainType "information_schema.sql_identifier"),
->            ("view_schema", DomainType "information_schema.sql_identifier"),
->            ("view_name", DomainType "information_schema.sql_identifier"),
->            ("table_catalog", DomainType "information_schema.sql_identifier"),
->            ("table_schema", DomainType "information_schema.sql_identifier"),
->            ("table_name", DomainType "information_schema.sql_identifier")],
->         CatCreateView "information_schema.views"
->           [("table_catalog", DomainType "information_schema.sql_identifier"),
->            ("table_schema", DomainType "information_schema.sql_identifier"),
->            ("table_name", DomainType "information_schema.sql_identifier"),
->            ("view_definition",
->             DomainType "information_schema.character_data"),
->            ("check_option", DomainType "information_schema.character_data"),
->            ("is_updatable", DomainType "information_schema.character_data"),
->            ("is_insertable_into",
->             DomainType "information_schema.character_data")]]
-
diff --git a/src/Database/HsSqlPpp/AstInternals/TypeChecking/ErrorUtils.lhs b/src/Database/HsSqlPpp/AstInternals/TypeChecking/ErrorUtils.lhs
deleted file mode 100644
--- a/src/Database/HsSqlPpp/AstInternals/TypeChecking/ErrorUtils.lhs
+++ /dev/null
@@ -1,30 +0,0 @@
-
-This file contains a bunch of small low level utilities to help with
-type checking.
-
-> module Database.HsSqlPpp.AstInternals.TypeChecking.ErrorUtils
->     where
->
-> import Database.HsSqlPpp.AstInternals.TypeType
-> import Debug.Trace
-
-> type E a = Either [TypeError] a
-> type Et = E Type
->
-> lmt :: Maybe a -> E a
-> lmt = maybe (Left []) Right
->
-> tes :: E a -> [TypeError]
-> tes = either id (const [])
->
-> etmt :: E a -> Maybe a
-> etmt = either (const Nothing) Just
->
-
-> liftList :: [(a,Maybe b)] -> Maybe [(a,b)]
-> liftList is = sequence $ flip map is $ \(a,b) -> case b of
->                                                    Just b' -> Just (a,b')
->                                                    Nothing -> Nothing
-
-> showIt :: Show a => String -> a -> a
-> showIt m a = trace (m ++ " " ++ show a) a
diff --git a/src/Database/HsSqlPpp/AstInternals/TypeChecking/LocalBindings.lhs b/src/Database/HsSqlPpp/AstInternals/TypeChecking/LocalBindings.lhs
deleted file mode 100644
--- a/src/Database/HsSqlPpp/AstInternals/TypeChecking/LocalBindings.lhs
+++ /dev/null
@@ -1,20 +0,0 @@
-
-Forwarder for the interface to LocalBindingsInternal used by the rest
-of the system.
-
-> module Database.HsSqlPpp.AstInternals.TypeChecking.LocalBindings
->     (
->      LocalBindingsUpdate(..)
->     ,LocalBindings
->     ,emptyBindings
->     ,lbUpdate
->     ,lbLookupID
->     ,lbLookupIDInType
->     ,ppLocalBindings
->     ,createLocalBindings
->     ,getUnqualifiedBindings
->     ,joinBindings
->     ,lookupLocalBinding
->     ) where
->
-> import Database.HsSqlPpp.AstInternals.TypeChecking.LocalBindingsInternal
diff --git a/src/Database/HsSqlPpp/AstInternals/TypeChecking/LocalBindingsInternal.lhs b/src/Database/HsSqlPpp/AstInternals/TypeChecking/LocalBindingsInternal.lhs
deleted file mode 100644
--- a/src/Database/HsSqlPpp/AstInternals/TypeChecking/LocalBindingsInternal.lhs
+++ /dev/null
@@ -1,740 +0,0 @@
-
-This module contains the code to manage local identifier bindings
-during the type checking process. This is used for e.g. looking up the
-types of parameter and variable references in plpgsql functions, and
-for looking up the types of identifiers in select expressions.
-
-This module exposes the internals of the localbindings datatype for
-testing.
-
-The lookups to support are a single identifier, or to give a star
-expansion.
-
-
-Some notes on lookups
-all lookups are case insensitive
-start by searching the head of the lookup update list and working down
-the code here handles resolving the types of join columns when they
-are not the same, and the update routine returns error if the join columns are not compatible
-the code here handles expanding record types so that the components can be looked up
-
-The local bindings is arranged as a stack. To append to this stack,
-you use the LocalBindingsUpdate type. This is designed to be as easy as
-possible for clients to use, so as much logic as possible is pushed
-into the innards of this module, in particular most of the logic for
-working with joins is in here.
-
-The basic idea of the stack is at each level, there is a list of
-qualified and unqualified names and types, to look up individual
-ids. Some of the lookups map to ambiguous identifier errors. Also at
-each level is a list of star expansions, one for each correlation name
-in scope, and one for an unqualified star.
-
-> {-# LANGUAGE ScopedTypeVariables,TupleSections #-}
->
-> module Database.HsSqlPpp.AstInternals.TypeChecking.LocalBindingsInternal
->     (
->      LocalBindingsUpdate(..)
->     ,LocalBindings(..)
->     ,Source
->     ,FullId
->     ,SimpleId
->     ,IDLookup
->     -- ,StarExpand
->     ,LocalBindingsLookup(..)
->     ,emptyBindings
->     ,lbUpdate
->     -- ,lbExpandStar
->     ,lbLookupID
->     ,lbLookupIDInType
->     --,lbUpdateDot
->     ,ppLocalBindings
->     ,ppLbls
->     ,createLocalBindings
->     ,getUnqualifiedBindings
->     ,joinBindings
->     ,lookupLocalBinding
->     ) where
->
-> --import Control.Monad as M
-> --import Control.Applicative
-> --import Debug.Trace
-> import Data.List
-> --import Data.Maybe
-> import Data.Char
-> --import Data.Either
-> --import qualified Data.Map as M
->
-> import Database.HsSqlPpp.AstInternals.TypeType
-> --import Database.HsSqlPpp.Utils.Utils
-> import Database.HsSqlPpp.AstInternals.Catalog.CatalogInternal
-> --import Database.HsSqlPpp.AstInternals.TypeChecking.TypeConversion
-> import Database.HsSqlPpp.AstInternals.TypeChecking.ErrorUtils
->
-
-
-
-> data LocalBindings = LocalBindingsError
->                    | LocalBindings [((String,String),Maybe Type)]
-
-> createLocalBindings :: Maybe [(String,[(String,Maybe Type)])] -> LocalBindings
-> createLocalBindings i =
->   maybe LocalBindingsError mb i
->   where
->     mb b = LocalBindings
->             $ flip concatMap b $ \(qn,cs) -> flip map cs $ \(c,t) -> ((qn,c), t)
-
-> getUnqualifiedBindings :: LocalBindings -> [(String,Maybe Type)]
-> getUnqualifiedBindings (LocalBindings ls) =
->   map unwrap ls
->   where
->     unwrap ((_,n),t) = (n,t)
-> getUnqualifiedBindings LocalBindingsError = []
-
-> joinBindings :: LocalBindings -> LocalBindings -> LocalBindings
-> joinBindings (LocalBindings a) (LocalBindings b) = LocalBindings $ a ++ b
-> joinBindings LocalBindingsError _ = LocalBindingsError
-> joinBindings _ LocalBindingsError = LocalBindingsError
-
-> lookupLocalBinding :: LocalBindings -> String -> String -> E (Maybe Type)
-> lookupLocalBinding LocalBindingsError _ _ = Right Nothing
-> lookupLocalBinding (LocalBindings lb) q i =
->   case lookup (q,i) lb of
->     Just t -> Right t
->     Nothing -> if (q == "") || any (==q) (map (fst . fst) lb)
->                then Left [UnrecognisedIdentifier i]
->                else Left [UnrecognisedCorrelationName q]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
----------------------------------------------
-
-
-
-The data type to represent a set of local bindings in scope. The list
-of updates used to create the local bindings is saved for debugging/
-information.
-
-> {-data LocalBindings = LocalBindings [LocalBindingsUpdate]
->                                    [LocalBindingsLookup]
->                      deriving Show-}
-
-Each layer of the local bindings stack is
-a map from (correlation name, id name) to source,correlation name, id
-name, type tuple, or a type error, used e.g. to represent ambigious
-ids, etc.;
-and a map from correlation name to a list of these tuples to handle
-star expansions.
-
-Missing correlation names are represented by an empty string for the
-correlation name.
-
-> type Source = String
->
-> type FullId = (Source,[String],Type) -- source,fully qualified name components,type
-> type SimpleId = (String,Type)
-> type IDLookup = ([String], E FullId)
-> --type StarExpand = E [FullId] --the order of the [FullId] part is important
->
-> data LocalBindingsLookup = LocalBindingsLookup [IDLookup]
->                            deriving (Eq,Show)
-
-This is the local bindings update that users of this module use.
-
-> data LocalBindingsUpdate = LBIds {source :: Source
->                                  ,correlationName :: Maybe String
->                                  ,lbids :: [SimpleId]}
->                          | LBTref {source :: Source
->                                   ,talias :: String
->                                   ,lbids :: [SimpleId]
->                                   ,lbsysids :: [SimpleId]}
->                          | LBJoinTref {source :: Source
->                                       ,jtref1 :: LocalBindingsUpdate
->                                       ,jtref2 :: LocalBindingsUpdate
->                                       ,joinIds :: Either () [String] -- left () represents natural join
->                                                            -- right [] represents no join ids
->                                       ,jalias :: Maybe String}
->                            deriving Show
->
-> emptyBindings :: LocalBindings
-> emptyBindings = LocalBindings [] -- undefined --LocalBindings [] []
-
-================================================================================
-
-> ppLocalBindings :: LocalBindings -> String
-> ppLocalBindings = error "ppLocalBindings" -- (LocalBindings lbus lbls) =
->   -- "LocalBindings\n" ++ doList show lbus ++ doList ppLbls lbls-}
->
-> ppLbls :: LocalBindingsLookup -> String
-> ppLbls = error "ppLbls" {- (LocalBindingsLookup is) =
->        "LocalBindingsLookup\n" ++ doList show is -}
->
-> --doList :: (a -> String) -> [a] -> String
-> --doList m l = "[\n" ++ intercalate "\n," (map m l) ++ "\n]\n"
-
-================================================================================
-
-> lbUpdate :: Catalog -> LocalBindingsUpdate -> LocalBindings -> E LocalBindings
-> lbUpdate _ _ lb = return lb {- cat u1 (LocalBindings us s) = do
->   ids <- updateStuff cat u1
->   return $ LocalBindings (u1 : us) (LocalBindingsLookup ids : s)-}
-
-
-
-> --updateStuff :: Catalog -> LocalBindingsUpdate -> E [IDLookup]
-
-> --updateStuff _ _ = error "updateStuff"
-
-LBIds doesn't support any star expansion, and doesn't support
-accessing the whole set of ids as a composite via cn
-
-> {-updateStuff _ (LBIds src cn ids) =
->     return (unQuals ++ quals)
->     where
->       unQuals = map (\(n,t) -> ([n], Right (src,maybe [n] (: [n]) cn, t))) ids
->       quals = maybe [] (\cn' -> map (\(n,t) -> ([cn',n], Right (src,[cn',n], t))) ids) cn
-
-tref - used for a non join table reference, supports accessing public
-fields under the alias name as a composite, and also supports system
-id lookups. The star expansions are all the non system ids qualified and unqualified
-
-> updateStuff _ (LBTref src al ids sids) =
->     -- comp has to come after unquals because an unqualified reference which could refer
->     -- to a column or the composite resolves as the column
->     return (unQuals ++ quals ++ [comp])
->            -- ,[("",Right pids),(al,Right pids)])
->     where
->       allIds = ids ++ sids
->       unQuals = map (\(n,t) -> ([n], Right (src,[al,n], t))) allIds
->       quals = map (\(n,t) -> ([al,n], Right (src,[al,n], t))) allIds
->       comp = ([al], Right (src, [al], CompositeType ids))
->       pids = map (\(n,t) -> (src,[al,n],t)) ids
-
-
-LBJoinTref {source :: Source
-            ,jtref1 :: LocalBindingsUpdate
-            ,jtref2 :: LocalBindingsUpdate
-            ,joinIds :: Either () [String] -- left () represents natural join
-                  -- right [] represents no join ids
-            ,jalias :: Maybe String}
-
-> {-updateStuff cat (LBJoinTref _src u1 u2 jnames' _al) = do
-
-How to get the lbs for a join:
-
-First get the info for the two sub trefs:
-
->   ids1 <- updateStuff cat u1
->   ids2 <- updateStuff cat u2
-
-split these apart so we have the unqualified lookups and star expands
-separately
-
->   let (uids1,qids1) = splitLkps ids1
->       (uids2,qids2) = splitLkps ids2
-
-We need some information: the names and types of the join ids, and the
-names of any remaining ambiguous identifiers:
-
->   let jnames :: [String]
->       jnames = case jnames' of
->                          Right ns -> ns
->                          Left () -> intersect (map fst uids1)
->                                               (map fst uids2)
->   --todo: resolve these properly
->   let jids = flip map jnames $ \i -> (i,fromJust $ lookup [i] ids1)
-
-
-First: get the names of the join ids: this is the explicit list in the
-case of a using join, or the commonly named fields in a natural
-join. We get the commonly named fields from the unqualified star
-expansions so we don't include system attributes in a natural join.
-
-Then check: make sure explicit join id list is in both trefs, and
-resolve the types of the join ids.
-
-If there is no alias:
-
-work out the lookups: the qualified lookups stay the same (doesn't
-properly deal with the same correlation names coming from 2 trefs at
-the moment).
-
-get the list of duplicate ids: uses the same code as getting the
-natural join id list, - there will be none if this is a natural
-join. Otherwise, get the list of common ids and remove any using ids
-from this list. TODO?: system attributes can't be referenced through a
-join unqualified?
-
-The unqualified lookups: start with the join ids and types, then add
-all the ids from each subtref except the ones which match the
-duplicate ids. Add these dups which now lookup to left ambiguous
-reference.
-
-work out the star expansion: the qualified star expansions stay the
-same
-
-for the unqualified star expansion: similar to lookups. Start with the
-join ids, but then add all the non join ids from each table - so we
-might have more than one column with the same name.
-
-If there is an alias:
-
-do the same as above for the unqualified ids/starexpand, add these
-again under the given alias, and don't pass through qualified lookups
-or star expands.
-
-
->   {-let plainIds1 = pl ids1
->       plainIds2 = pl ids2
->   let jnames :: [String]
->       jnames = case jids of
->                          Right ns -> ns
->                          Left () -> intersect (map fst plainIds1) (map fst plainIds2)
->   -- make the lookups
->       isJ :: IDLookup -> Bool
->       isJ (ii,_) = case ii of
->                        [i] | i `elem` jnames -> True
->                        _ -> False
->       nj :: [IDLookup] -> [IDLookup]
->       nj = filter (not . isJ)
->       joinLkps = filter isJ ids1
->       nonJoinLkps1 = nj ids1
->       nonJoinLkps2 = nj ids2-}
->   {-let jids1 :: [(String,E FullId)]
->       jids1 = flip map jnames $ \i -> (i,fromJust $ lookup i ids1)
->       rj :: [(String,E FullId)] -> [(String,E FullId)]
->       rj = filter $ \e -> fst e `notElem` jnames
->       ids :: [(String,E FullId)]
->       ids = jids1 ++ rj ids1 ++ rj ids2-}
->   --make the star expansion
->   --se1' <- se1
->   --se2' <- se2
->   {-let (us1',qs1) = splitSe se1'
->       (us2',qs2) = splitSe se2'
->   us1 <- us1'
->   us2 <- us2'-}
->   {-    rj1 :: [FullId] -> [FullId]
->       rj1 = filter $ \(_,n,_t) -> last n `notElem` jnames
->       se = map snd jids1 ++ map return (rj1 se1) ++ map return (rj1 se2)
->   return (ids, sequence se)-}
->   --let x = joinLkps ++ nonJoinLkps1 ++ nonJoinLkps2
->   --trace ("join stuff: " ++ doList show x) $ return ()
->   return (ids1 ++ ids1, se1 ++ se2) --(joinLkps ++ nonJoinLkps1 ++ nonJoinLkps2, ("", Right (us1 ++ us2)) : qs1 ++ qs2)
->   where
->     {-splitSe :: [(String,StarExpand)] -> (StarExpand,[(String,StarExpand)])
->     splitSe se = (uq, nuq)
->                  where
->                    uq = maybe [] snd $ find isUq se
->                    nuq = filter (not . isUq) se
->                    isUq (Right (a,_)) = a == ""-}
->     splitLkps :: [([String], E FullId)]
->               -> ([(String, E FullId)],[([String], E FullId)])
->     splitLkps = partitionEithers . (map $ \x -> case x of
->                                                       ([n],t) -> Left (n,t)
->                                                       z -> Right z)-} -}
-
-================================================================================
-
-> {-lbExpandStar :: LocalBindings -> String -> E [FullId]
-> lbExpandStar (LocalBindings _ (LocalBindingsLookup _ x : _)) c =
->   maybe (case c of
->            "" -> Left [BadStarExpand]
->            y -> Left [UnrecognisedCorrelationName y])
->            id $ lookup c x
-> lbExpandStar _ _ = Left [BadStarExpand]-}
-
-================================================================================
-
-> lbLookupID :: LocalBindings -> [String] -> E FullId
-> lbLookupID  = error "lbLookupID" {-(LocalBindings _ lbl) i =
->     let ls :: [[([String],E FullId)]]
->         ls = map getLbIdl lbl
->     in lkp1 ls $ map mtl i
->     where
->       lkp1 :: [[IDLookup]] -> [String] -> E FullId
->       lkp1 (l:ls) i1 = fromMaybe (lkp1 ls i1) (lookup i1 l)
->       lkp1 [] _ = if corMatch
->                   then Left [UnrecognisedIdentifier (intercalate "." i)]
->                   else Left [UnrecognisedCorrelationName (head i)]
->       getLbIdl (LocalBindingsLookup x ) = x
->       corMatch = case i of
->                    [q,_] -> q `elem` cors
->                    _ -> True
->       cors :: [String]
->       cors = let ls = map getLbIdl lbl
->              in catMaybes $ concatMap (map getQ) ls
->       getQ :: ([String], E FullId) -> Maybe String
->       getQ ([q,_], _) = Just q
->       getQ _ = Nothing -}
-
-
-> lbLookupIDInType :: Catalog -> LocalBindings -> Type -> String -> E FullId
-> lbLookupIDInType = error "lbLookupIDInType" {-cat _ ty i = do
->   t <- lmt $ getNamedCompositeTypes ty
->   maybe (Left [UnrecognisedIdentifier i]) (fmap Right ("",[i],)) $ lookup i t
->  where
->    getNamedCompositeTypes :: Type -> Maybe [(String,Type)]
->    getNamedCompositeTypes (NamedCompositeType n) =
->         Just $ either (const []) id $ catCompositePublicAttrs cat [] n
->    getNamedCompositeTypes (CompositeType t) = Just t
->    getNamedCompositeTypes (PgRecord (Just t)) = getNamedCompositeTypes t
->    getNamedCompositeTypes _ = Nothing -}
-
-================================================================================
-
- > lbUpdateDot :: Catalog -> String -> LocalBindings -> E LocalBindings
- > lbUpdateDot cat i lb = do
- >     (_,_,c) <- lbLookupID lb i
- >     f <- lmt $ expandComposite cat True c
- >     lbUpdate cat (LBIds "dot qual" Nothing f) emptyBindings
-
->     {-f <- lmt $ expandComposite cat True c
->     let u1 = (LBIds "dot qual" Nothing f)
->     (ids,_) <- updateStuff cat u1
->     pf <- lmt $ expandComposite cat False c
->     let se = Right $ map (\(n,t) -> ("dot qual", [i,n], t)) pf
->     return $ LocalBindings [u1] [LocalBindingsLookup ids se]-}
-
-(Source, [String], Type)'
-           against inferred type `(String, Type)'
-
- > expandComposite :: Catalog -> Bool -> Type -> Maybe [(String,Type)]
- > expandComposite cat b (SetOfType t) = expandComposite cat b t
- > expandComposite cat b (PgRecord (Just t)) = expandComposite cat b t
- > expandComposite _ _ (CompositeType fs) = Just fs
- > expandComposite cat b (NamedCompositeType n) = etmt $ (if b
- >                                                        then catCompositeAttrs
- >                                                        else catCompositePublicAttrs) cat [] n
- > expandComposite _ _ _ = Nothing
-
-
-================================================================================
-
-> --mtl :: String -> String
-> --mtl = map toLower
-
-
-
-
-
-
-------------------------------------------------------------
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-wrapper for the proper lookupid function, this is for backwards
-compatibility with the old lookup code
-
-> {-lbLookupID :: LocalBindings
->            -> String -- identifier name
->            -> E Type
-> lbLookupID lb ci = let (cor,i) = splitIdentifier ci
->                    in fmap extractType $ lbLookupID1 lb cor i
->                    where
->                      extractType (_,_,_,t) = t
->                      splitIdentifier s = let (a,b) = span (/= '.') s
->                                          in if b == ""
->                                             then ("", a)
->                                             else (a,tail b)
->
-> lbLookupID1 :: LocalBindings
->            -> String -- correlation name
->            -> String -- identifier name
->            -> E FullId -- type error or source, corr, type
-> lbLookupID1 (LocalBindings _ lkps) cor' i' =
->   --trace ("lookup: " ++ showID cor' i'
->   --       ++ "in " ++ concatMap ppLbls lkps) $
->   -- hack for triggers
->   case cor of
->     "new" | isTrigRec -> Right ("", "new", i, UnknownType)
->     "old" | isTrigRec -> Right ("", "old", i, UnknownType)
->     _ -> lkId lkps
->   where
->     isTrigRec = case lbLookupID1 (LocalBindings undefined lkps) "" cor of
->                   Right (_,_,_,Pseudo TriggerRecord) -> True
->                   _ -> False
->     cor = mtl cor'
->     i = mtl i'
->     lkId ((LocalBindingsLookup idmap _):ls) =
->       case lookup (cor,i) idmap of
->         Just s -> s
->         Nothing -> if cor /= "" && any ((==cor) . fst . fst) idmap
->                    then Left [UnrecognisedIdentifier $ showID cor i']
->                    else lkId ls
->     lkId [] = if cor' == "" --todo: need to throw unrecognised identifier, if the correlation name isn't "", a id isn't found, and there are other ids with that correlation name
->               then Left [UnrecognisedIdentifier $ showID cor i']
->               else Left [UnrecognisedCorrelationName cor']
-
-================================================================================
-
-wrapped for the proper expand star routine, for compatibility with the
-old implementation of local bindings
-
-> lbExpandStar :: LocalBindings -> String -> E [SimpleId]
-> lbExpandStar lb cor =
->   fmap stripAll $ lbExpandStar1 lb cor
->   where
->     strip (_,_,n,t) = (n,t)
->     stripAll = map strip
->
-> lbExpandStar1 :: LocalBindings -> String -> E [FullId]
-> lbExpandStar1 (LocalBindings _ lkps) cor' =
->   exSt lkps
->   where
->     cor = mtl cor'
->     exSt ((LocalBindingsLookup _ lst):ls) =
->         case lookup cor lst of
->           Just s -> s
->           Nothing -> exSt ls
->     exSt [] = Left [UnrecognisedCorrelationName cor]
-
-================================================================================
-
-This is where constructing the local bindings lookup stacks is done
-
-> lbUpdate :: Catalog -> LocalBindingsUpdate -> LocalBindings -> E LocalBindings
-> lbUpdate cat lbu' (LocalBindings lbus lkps) = do
->    lbl <- makeStack cat lbu
->    lbl1 <- expandComposites cat lbl
->    --trace ("update: " ++ ppLbls lbl1) $ return ()
->    return $ LocalBindings (lbu':lbus) (lbl1:lkps)
->    where
->      lbu = lowerise lbu'
->      -- make correlation names and id names case insensitive
->      -- by making them all lowercase
->      lowerise (LBIds src ids) =
->        LBIds src (mtll ids)
->      lowerise (LBJoinIds t1 t2 ji a) =
->        LBJoinIds (lowerise t1) (lowerise t2) (fmap mtll1 ji) (mtl a)
->      lowerise (LBParallel lbu1 lbu2) =
->        LBParallel (lowerise lbu1) (lowerise lbu2)
->      mtll = map (\(n,t) -> (mtl n, t))
->      mtll1 = map (\l -> mtl l)
->
-> makeStack :: Catalog -> LocalBindingsUpdate -> E LocalBindingsLookup
-> makeStack _ (LBIds src ids) =
->   Right $ LocalBindingsLookup doIds doStar
->   where
->     doIds :: [((String,String)
->               ,E FullId)]
->     doIds = -- add unqualified if cor isn't empty string
->             map (makeLookup "")
->                    (case cor of
->                             "" -> []
->                             _ -> map addDetails ids ++ map addDetails iids)
->             ++ map (makeLookup cor) (map addDetails ids ++ map addDetails iids)
->             where
->               makeLookup c1 (s,_,n,t)= ((c1,n), Right (s,cor,n,t))
->     doStar :: [(String, E [FullId])]
->     doStar = case cor of
->                       "" -> []
->                       _ -> [("",Right $ map addDetails ids)]
->              ++ [(cor,Right $ map addDetails ids)]
->     addDetails (n,t) = (src,cor,n,t)
->
-> makeStack cat (LBJoinIds t1 t2 jns a) = do
->   --first get the stacks from t1 and t2
->   --combine the elements of these filtering out the join ids
->   --
->   (LocalBindingsLookup i1 s1) <- makeStack cat t1
->   (LocalBindingsLookup i2 s2) <- makeStack cat t2
->   -- get the names and types of the join columns
->   let jns' = case jns of
->              Left () -> -- natural join, so we have to work out the names
->                         -- by looking at the common attributes
->                         -- we do this by getting the star expansion
->                         -- with no correlation name, and then finding
->                         -- the ids which appear in both lists
->                         -- (so this ignores internal ids)
->                  let ic1 :: [FullId]
->                      ic1 = fromRight [] $ maybe (Right []) id $ lookup "" s1
->                      ic2 = fromRight [] $ maybe (Right []) id $ lookup "" s2
->                      third (_,_,n,_) = n
->                      ii1 :: [String]
->                      ii1 = map third ic1
->                      ii2 = map third ic2
->                  in intersect ii1 ii2
->              Right x -> x
->       -- first prepare for the id lookups
->       -- remove the join ids from the id lookups
->       isJid ((_,n),_) = (n `elem` jns')
->       removeJids = filter (not . isJid)
->       i1' = removeJids i1
->       i2' = removeJids i2
->   jids <- M.sequence $ joinIDTypes i1 i2 jns'
->   {-trace ("joinids: " ++ show jids
->          ++ "\ni1 " ++ show i1
->          ++ "\ni2 " ++ show i2
->          ++ "\ni1' " ++ show i1'
->          ++ "\ni2' " ++ show i2'
->         ) $ return ()-}
->   let jidsLk :: [IDLookup]
->       jidsLk = if null i1 || null i2
->                then [] --error?
->                else let (_,Right (sc1,c1,_,_)) = head i1
->                         (_,Right (sc2,c2,_,_)) = head i2
->                     in flip concatMap jids $ \(n,t) -> [(("",n), Right (sc1,c1,n,t))
->                                                        ,((c1,n), Right (sc1,c1,n,t))
->                                                        ,((c2,n), Right (sc2,c2,n,t))
->                                                        ]
->       --jidsF :: [FullId]
->       --jidsF = rights $ map snd jidsLk
->       newIdLookups = (jidsLk ++ (combineAddAmbiguousErrors i1' i2'))
->       -- now do the star expansions
->       -- for each correlation name, remove any ids which match a join id
->       -- then prepend the join ids to that list
->       se = combineStarExpansions s1 s2 -- don't know if this is quite right
->       removeJids1 :: StarLookup -> StarLookup
->       removeJids1 (k,ids) = (k, fmap (filter (\(_,_,n,_) -> n `notElem` jns')) ids)
->       prependJids :: StarLookup -> StarLookup
->       prependJids (c, lkps) = case lkps of
->                                 Left _ -> (c,lkps)
->                                 Right r | null r -> (c,lkps)
->                                 Right r -> let (s,c1,_,_) = head r
->                                                ids = map (\(n,t) -> (s,c1,n,t)) jids
->                                            in (c, fmap (ids++) lkps)
->       newStarExpansion = map (prependJids . removeJids1) se
->       -- if we have an alias then we just want unqualified ids, then
->       -- the same ids with a t3 alias for both ids and star expansion
->       -- with all the correlation names replaced with the alias
->   if a == ""
->     then return $ LocalBindingsLookup newIdLookups newStarExpansion
->     else return $ LocalBindingsLookup (aliasIds newIdLookups) (aliasExps newStarExpansion)
->   where
->     aliasIds :: [IDLookup] -> [IDLookup]
->     aliasIds lkps = let trimmed = filter (\((c,_),_) -> c == "") lkps
->                         aliased = map (\(c,i) -> (c, fmap replaceCName i)) trimmed
->                     in aliased ++ map (\((_,n),i) -> ((a,n),i)) aliased
->     aliasExps :: [StarLookup] -> [StarLookup]
->     aliasExps lkps = let is = fromMaybe (error "localbindingsinternal.makestack : fromJust") $
->                               lookup "" lkps
->                          aliased = fmap (map replaceCName) is
->                      in [("",aliased), (a, aliased)]
->     replaceCName (s,_,n,t) = (s,a,n,t)
->     joinIDTypes :: [IDLookup] -> [IDLookup] -> [String] -> [E (String,Type)]
->     joinIDTypes i1 i2 = map (joinIDType i1 i2)
->     joinIDType :: [IDLookup] -> [IDLookup] -> String -> E (String,Type)
->     joinIDType i1 i2 s = do
->       (_,_,_,ty1) <- fromMaybe (Left [MissingJoinAttribute]) $
->                      lookup ("",s) i1
->       (_,_,_,ty2) <- fromMaybe (Left [MissingJoinAttribute]) $
->                      lookup ("",s) i2
->       ty <- resolveResultSetType cat [ty1,ty2]
->       return (s,ty)
->
-> makeStack cat (LBParallel u1 u2) = do
->   -- get the two stacks,
->   -- for any keys that appear in both respective lookups, replace with ambigious error
->   -- and concatenate the lot
->   (LocalBindingsLookup i1 s1) <- makeStack cat u1
->   (LocalBindingsLookup i2 s2) <- makeStack cat u2
->   return $ LocalBindingsLookup (combineAddAmbiguousErrors i1 i2) $ combineStarExpansions s1 s2
->
-> combineStarExpansions :: [StarLookup] -> [StarLookup] -> [StarLookup]
-> combineStarExpansions s1 s2 =
->   let p :: [(String, [(String, E [FullId])])]
->       p = npartition fst (s1 ++ s2)
->   in flip map p $ \(a,b) -> (a,concat <$> M.sequence (map snd b))
->
-> combineAddAmbiguousErrors :: [IDLookup] -> [IDLookup] -> [IDLookup]
-> combineAddAmbiguousErrors i1 i2 =
->   let commonIds = intersect (map fst i1) (map fst i2)
->       removeCommonIds = filter (\a -> fst a `notElem` commonIds)
->       fi1 = removeCommonIds i1
->       fi2 = removeCommonIds i2
->       errors = map (\(c,n) -> ((c,n),Left [AmbiguousIdentifier $ showID c n])) commonIds
->   in fi1 ++ fi2 ++ errors
-
-===============================================================================
-
-> mtl :: String -> String
-> mtl = map toLower
->
-> showID :: String -> String -> String
-> showID cor i = if cor == "" then i else cor ++ "." ++ i
-
-================================================================================
-
-expand composites
-
-slightly dodgy - run through all the unqualified ids in the idlookups, and if any
-have a composite type, add each element of that composite under the
-correlation name of the idlookup itself, and add a star expansion for
-that name also. This pretends that using a correlation name, composite
-name and id name as a three part id isn't possible
-
-> expandComposites :: Catalog -> LocalBindingsLookup -> E LocalBindingsLookup
-> expandComposites cat (LocalBindingsLookup idlkp stlkp) = do
->   let unqids = filter (\((a,_),_) -> a == "") idlkp
->       strip = map snd unqids
->       getComposites = filter (\(_,_,_,t) -> isCt t) $ rights strip
->   comps <- mapM compExp getComposites
->   let sts = map toStarLookup comps
->   Right (LocalBindingsLookup (idlkp ++ (concat comps)) (stlkp ++ sts))
->   where
->     isCt (SetOfType t) = isCompositeType t
->     isCt t = isCompositeType t
->     getCompFields :: Type -> E [(String,Type)]
->     getCompFields (SetOfType t) = getCompFields t
->     getCompFields (PgRecord Nothing) = Right []
->     getCompFields (PgRecord (Just t)) = getCompFields t
->     getCompFields (CompositeType f) = return f
->     getCompFields (NamedCompositeType s) = catCompositePublicAttrs cat [] s
->     getCompFields (AnonymousRecordType _) = Right [] -- ??
->     getCompFields _ = Right []
->     compExp :: FullId -> E [IDLookup]
->     compExp (s,_,n,t) = do
->       f <- getCompFields t
->       return $ flip map f $ \(n1,t1) -> ((n,n1),Right (s,n,n1,t1))
->     toStarLookup :: [IDLookup] -> StarLookup
->     toStarLookup ids =
->       let fids::[FullId]
->           fids = rights $ map snd ids
->           (_,c,_,_) = if null fids then (undefined,"ERROR",undefined,undefined) else head fids
->       in (c,Right fids)-}
diff --git a/src/Database/HsSqlPpp/AstInternals/TypeChecking/TypeConversion.lhs b/src/Database/HsSqlPpp/AstInternals/TypeChecking/TypeConversion.lhs
deleted file mode 100644
--- a/src/Database/HsSqlPpp/AstInternals/TypeChecking/TypeConversion.lhs
+++ /dev/null
@@ -1,668 +0,0 @@
-
-
-This file contains the functions for resolving types and
-function/operator resolution. See the pg manual chapter 10:
-
-http://www.postgresql.org/docs/8.4/interactive/typeconv.html
-
-This code is really spaghettified.
-
-findCallMatch - pass in a name and a list of arguments, and it returns
-the matching function. (pg manual 10.2,10.3)
-
-resolveResultSetType - pass in a set of types, and it tries to find
-the common type they can all be cast to. (pg manual 10.5)
-
-checkAssignmentValid - pass in source type and target type, returns
-                typelist[] if ok, otherwise error, pg manual 10.4
-                Value Storage
-
-> {-# LANGUAGE PatternGuards #-}
-> module Database.HsSqlPpp.AstInternals.TypeChecking.TypeConversion (
->                        findCallMatch
->                       ,resolveResultSetType
->                       ,checkAssignmentValid
->                       ,checkAssignmentsValid
->                       ) where
->
-> import Data.Maybe
-> import Data.List
-> import Data.Either
-> --import Debug.Trace
-> import Data.Char
->
-> import Database.HsSqlPpp.AstInternals.TypeType
-> import Database.HsSqlPpp.AstInternals.Catalog.CatalogInternal
-> import Database.HsSqlPpp.Utils.Utils
-
- > traceIt :: Show a => String -> a -> a
- > traceIt s t = trace (s ++ ": " ++ show t) t
-
-= findCallMatch
-
-~~~~
-
-findCallMatch - partially implements the type conversion rules for
-finding an operator or function match given a name and list of
-arguments with partial or fully specified types
-
-TODO:, qualifiers
-namespaces
-function style casts not in catalog
-variadic args
-default args
-domains -> base type
-what about aggregates and window functions?
-
-Algo:
-
-cands = all fns with matching names
-        and same number of args
-
-if exact match on types in this list, use it
-  (if binary operator being matched, and one arg is typed and one is
-  unknown, also match an operator by assuming the unknown is the same
-  as the typed arg)
-
-best match part:
-
-filter cands with args which don't exactly match input args, and input
-args cannot be converted by an implicit cast. unknowns count as
-matching anything
-if one left: use it
-
-filter for preferred types:
-
-for each cand, count each arg at each position which needs conversion,
-and the cand type is a preferred type at that position.
-if there are cands with count>0, keep only cands with the max count,
-if one return it
-if there are no cands with count>0, keep them all
-
-check unknowns:
-if any input args are unknown, and any cand accepts string at that
-position, fix that arg's category as string, otherwise if all cands
-accept same category at that position, fix that input args as that
-category.
-if we still have unknowns, then fail
-
-discard cands which don't match the new input arg/category list
-
-for each categorised input arg, if any cand accepts preferred type at
-that position, get rid of cands which don't accept preferred type at
-that position
-
-if one left: use
-else fail
-
-polymorphic matching:
-want to create a set of matches to insert into the cast pairs list
-so:
-
-find all matches on name, num args and have polymorphic parameters
-
-for each one, check the polymorphic categories - eliminate fns that
-have params in wrong category - array, non array, enum.
-work out the base types for the polymorphic args at each spot based on
-the args passed - so each arg is unchanged except arrays which have
-the array part stripped off
-
-now we have a list of types to match against the polymorphic params,
-use resolveResultSetType to see if we can produce a match, if so,
-create a new prototype which is the same as the polymorphic function
-but with this matching arg swapped in, work out the casts and add it
-into cand cast pairs, after exact match has been run.
-
-
-findCallMatch is a bit of a mess
-
-todos:
-
-rewrite this to try to make it a bit clearer
-
-find some way to draw a data flow diagram of the code easily
-
-add a logging facility so the function can explain what has happened
-at each state, so you can provide a detailed explanation e.g. if the
-code can't find an operator match to see what it has tried to match
-against.
-
-~~~~
-
-> type ProtArgCast = (FunctionPrototype, [ArgCastFlavour])
-
->       {-
->         between, greatest and least are treated as syntactic sugar so we
->         delegate the function lookups to the <=/>= operators.
->         the row comparison should be more general than this, since it supports
->         any operator satisfying some properties
-> -}
-> findCallMatch :: Catalog -> String -> [Type] ->  Either [TypeError] FunctionPrototype
-> findCallMatch cat fnName' argsType =
->     --trace ("typecheckfncall " ++ fnName' ++ show argsType) $
->     --dependsOnRTpe argsType $
->       case fnName of
->               "count" -> -- not quite sure how this is suppose to work,
->                          -- the counts in the pg catalog accept either
->                          -- no args, or one arg of type any, but you can call
->                          -- count with multiple arguments?
->                          return ("count", argsType, typeBigInt, False)
->               "!between" | as@[_,_,_] <- argsType -> do
->                     -- not sure if this is correct - use the result set resolution
->                     -- to make the argument types compatible
->                     -- then just check there is a >=, <= returning a pair
->                     -- of somethings which can be anded
->                     t <- resolveResultSetType cat as
->                     f1 <- lookupReturnType ">=" [t,t]
->                     f2 <- lookupReturnType "<=" [t,t]
->                     _ <- lookupFn "!and" [f1,f2]
->                     return ("!between", [t,t,t], typeBool, False)
->               "greatest" -> do
->                     (_,a,t,x) <- lookupFn fnName argsType
->                     _ <- lookupFn ">=" [t,t]
->                     return ("greatest",a,t,x)
->               "least" -> do
->                     (_,a,t,x) <- lookupFn fnName argsType
->                     _ <- lookupFn "<=" [t,t]
->                     return ("greatest",a,t,x)
->               "!rowctor" -> return ("!rowCtor", argsType, AnonymousRecordType argsType, False)
->                     -- special case the row comparison ops
->                     -- this needs to be fixed: we want to match
->                     -- any implicit casts to functions on composite types
->                     -- first, then we can use the anonymous record type on
->                     -- any composite
->               "." | [_,b] <- argsType -> Right (".", argsType, b, False)
->               _ | fnName `elem` ["=", "<>", "<=", ">=", "<", ">"]
->                          && length argsType == 2
->                          && all isCompositeOrSetOfCompositeType argsType,
->                          Just a1 <- matchCompTypes argsType ->
->                          -- && compositesCompatible cat (head argsType) (head $ tail argsType) ->
->                              return (fnName, a1, typeBool, False)
->               --checked for all special cases, so run general case now
->               s -> lookupFn s argsType
->     where
->       lookupReturnType :: String -> [Type] -> Either [TypeError] Type
->       lookupReturnType s1 args = fmap (\(_,_,r,_) -> r) $ lookupFn s1 args
->       lookupFn :: String -> [Type] -> Either [TypeError] FunctionPrototype
->       lookupFn s1 = findCallMatch1 cat
->                              (if s1 == "u-" then "-" else s1)
->       fnName = map toLower fnName'
->       -- help the type inference for rowCtors. pretty unfinished. If we compare
->       -- two compatible row constructors, then replace any unknown types with the
->       -- pair type
->       matchCompTypes :: [Type] -> Maybe [Type]
->       matchCompTypes [a@(AnonymousRecordType as),b@(AnonymousRecordType bs)] =
->         if not (compositesCompatible cat a b)
->         then Nothing
->         else let (nt1,nt2) = unzip $ map (\(t,t1) -> case (t,t1) of
->                                          (UnknownType, u) -> (u,u)
->                                          (u, UnknownType) -> (u,u)
->                                          _ -> (t,t1)) $ zip as bs
->              in Just [AnonymousRecordType nt1,AnonymousRecordType nt2]
->       matchCompTypes [a,b] =
->         if not (compositesCompatible cat a b)
->         then Nothing
->         else Just [a,b]
->       matchCompTypes _ = Nothing
-
-
->
-> findCallMatch1 :: Catalog -> String -> [Type] ->  Either [TypeError] FunctionPrototype
-> findCallMatch1 cat f inArgs =
->     returnIfOnne [
->        exactMatch
->       ,binOp1UnknownMatch
->       ,polymorpicExactMatches
->       ,reachable
->       ,mostExactMatches
->       ,filteredForPreferred
->       ,unknownMatchesByCat]
->       [NoMatchingOperator f inArgs]
->     where
->       -- basic lists which roughly mirror algo
->       -- get the possibly matching candidates
->       initialCandList :: [FunctionPrototype]
->       initialCandList = filter (\(_,candArgs,_,_) ->
->                                   length candArgs == length inArgs) $
->                                map expandVariadic $ catLookupFns cat f
->
->       expandVariadic fp@(fn,a,r,v) =
->         if v
->           then case last a of
->                  ArrayType t -> (fn, na,r,v)
->                                 where na = init a ++ replicate (length inArgs - length a + 1) t
->                  _ -> fp --should be error
->           else fp
->
->       -- record what casts are needed for each candidate
->       castPairs :: [[ArgCastFlavour]]
->       castPairs = map (listCastPairs . getFnArgs) initialCandList
->
->       candCastPairs :: [ProtArgCast]
->       candCastPairs = {-traceIt "candCastPairs" $-} zip initialCandList castPairs
->
->       -- see if we have an exact match
->       exactMatch :: [ProtArgCast]
->       exactMatch = filterCandCastPairs (all (==ExactMatch)) candCastPairs
->
->       -- implement the one known, one unknown resolution for binary operators
->       binOp1UnknownMatch :: [ProtArgCast]
->       binOp1UnknownMatch = getBinOp1UnknownMatch candCastPairs
->
->       --collect possible polymorphic matches
->       polymorphicMatches :: [ProtArgCast]
->       polymorphicMatches = filterPolymorphics candCastPairs
->
->       polymorpicExactMatches :: [ProtArgCast]
->       polymorpicExactMatches = filterCandCastPairs (all (==ExactMatch)) polymorphicMatches
->
->       -- eliminate candidates for which the inargs cannot be casted to
->       reachable :: [ProtArgCast]
->       reachable = mergePolys (filterCandCastPairs (none (==CannotCast)) candCastPairs)
->                     polymorphicMatches
->
->       mostExactMatches :: [ProtArgCast]
->       mostExactMatches =
->         let inArgsBase = map (replaceWithBase cat) inArgs
->             exactCounts :: [Int]
->             exactCounts =
->               map ((length
->                       . filter (\(a1,a2) -> a1==replaceWithBase cat a2)
->                       . zip inArgsBase)
->                 . (\((_,a,_,_),_) -> a)) reachable
->             pairs = zip reachable exactCounts
->             maxm = maximum exactCounts
->         in case () of
->              _ | null reachable -> []
->                | maxm > 0 -> map fst $ filter (\(_,b) -> b == maxm) pairs
->                | otherwise -> []
->
->       -- keep the cands with the most casts to preferred types
->       preferredTypesCounts = countPreferredTypeCasts reachable
->       keepCounts = maximum preferredTypesCounts
->       itemCountPairs :: [(ProtArgCast,Int)]
->       itemCountPairs = zip reachable preferredTypesCounts
->       filteredForPreferred :: [ProtArgCast]
->       filteredForPreferred = map fst $ filter (\(_,i) -> i == keepCounts) itemCountPairs
->
->       -- collect the inArg type categories to do unknown inArg resolution
->       argCats :: [Either () String]
->       argCats = getCastCategoriesForUnknowns filteredForPreferred
->       unknownMatchesByCat :: [ProtArgCast]
->       unknownMatchesByCat = getCandCatMatches filteredForPreferred argCats
->
->       -------------
->
->       listCastPairs :: [Type] -> [ArgCastFlavour]
->       listCastPairs l = listCastPairs' inArgs l
->                         where
->                           listCastPairs' :: [Type] -> [Type] -> [ArgCastFlavour]
->                           listCastPairs' (ia:ias) (ca:cas) =
->                               (case () of
->                                  _ | ia == ca -> ExactMatch
->                                    | castableFromTo cat ImplicitCastContext ia ca ->
->                                        if forceRight (catPreferredType cat ca)
->                                          then ImplicitToPreferred
->                                          else ImplicitToNonPreferred
->                                    | otherwise -> CannotCast
->                               ) : listCastPairs' ias cas
->                           listCastPairs' [] [] = []
->                           listCastPairs' _ _ = error "internal error: mismatched num args in implicit cast algorithm"
->
->
->       getBinOp1UnknownMatch :: [ProtArgCast] -> [ProtArgCast]
->       getBinOp1UnknownMatch cands =
->           if not (isOperatorName f &&
->                   length inArgs == 2 &&
->                   count (==UnknownType) inArgs == 1)
->             then []
->             else let newInArgs =
->                          replicate 2 (if head inArgs == UnknownType
->                                         then inArgs !! 1
->                                         else head inArgs)
->                  in filter (\((_,a,_,_),_) -> a == newInArgs) cands
->
->       filterPolymorphics :: [ProtArgCast] -> [ProtArgCast]
->       filterPolymorphics cl =
->           let ms :: [ProtArgCast]
->               ms = filter canMatch polys
->               polyTypes :: [Maybe Type]
->               polyTypes = map resolvePolyType ms
->               polyTypePairs :: [(Maybe Type, ProtArgCast)]
->               polyTypePairs = zip polyTypes ms
->               keepPolyTypePairs :: [(Type, ProtArgCast)]
->               keepPolyTypePairs =
->                 mapMaybe (\(t,p) -> case t of
->                                            Nothing -> Nothing
->                                            Just t' -> Just (t',p))
->                               polyTypePairs
->               finalRows = map (\(t,p) -> instantiatePolyType p t)
->                               keepPolyTypePairs
->               --create the new cast lists
->               cps :: [[ArgCastFlavour]]
->               cps = map (listCastPairs . getFnArgs . fst) finalRows
->           in zip (map fst finalRows) cps
->           where
->             polys :: [ProtArgCast]
->             polys = filter (\((_,a,_,_),_) -> any (`elem`
->                                               -- bit hacky
->                                              [Pseudo Any
->                                              ,Pseudo AnyArray
->                                              ,Pseudo AnyElement
->                                              ,Pseudo AnyEnum
->                                              ,Pseudo AnyNonArray]) a) cl
->             canMatch :: ProtArgCast -> Bool
->             canMatch pac =
->                let ((_,fnArgs,_,_),_) = pac
->                in canMatch' inArgs fnArgs
->                where
->                  canMatch' [] [] = True
->                  canMatch' (ia:ias) (pa:pas) =
->                    case pa of
->                      Pseudo Any -> nextMatch
->                      Pseudo AnyArray -> isArrayType ia && nextMatch
->                      Pseudo AnyElement -> nextMatch
->                      Pseudo AnyEnum -> False
->                      Pseudo AnyNonArray -> if isArrayType ia
->                                              then False
->                                              else nextMatch
->                      _ -> True
->                    where
->                      nextMatch = canMatch' ias pas
->                  canMatch' _ _ = error "internal error: mismatched lists in canMatch'"
->             resolvePolyType :: ProtArgCast -> Maybe Type
->             resolvePolyType ((_,fnArgs,_,_),_) =
->                 {-trace ("\nresolving " ++ show fnArgs ++ " against " ++ show inArgs ++ "\n") $-}
->                 let argPairs = zip inArgs fnArgs
->                     typeList :: [Type]
->                     typeList = catMaybes $ flip map argPairs
->                                  $ \(ia,fa) -> case fa of
->                                                   Pseudo Any -> if isArrayType ia
->                                                                 then eitherToMaybe $ unwrapArray ia
->                                                                 else Just ia
->                                                   Pseudo AnyArray -> eitherToMaybe $ unwrapArray ia
->                                                   Pseudo AnyElement -> if isArrayType ia
->                                                                        then eitherToMaybe $ unwrapArray ia
->                                                                        else Just ia
->                                                   Pseudo AnyEnum -> Nothing
->                                                   Pseudo AnyNonArray -> Just ia
->                                                   _ -> Nothing
->                 in {-trace ("\nresolve types: " ++ show typeList ++ "\n") $-}
->                    case resolveResultSetType cat typeList of
->                      Left _ -> Nothing
->                      Right t -> Just t
->             instantiatePolyType :: ProtArgCast -> Type -> ProtArgCast
->             instantiatePolyType pac t =
->               let ((fn,a,r,v),_) = pac
->                   instArgs = swapPolys t a
->                   p1 = (fn, instArgs, swapPoly t r,v)
->               in let x = (p1,listCastPairs instArgs)
->                  in {-trace ("\nfixed:" ++ show x ++ "\n")-} x
->               where
->                 swapPolys :: Type -> [Type] -> [Type]
->                 swapPolys = map . swapPoly
->                 swapPoly :: Type -> Type -> Type
->                 swapPoly pit at =
->                   case at of
->                     Pseudo Any -> if isArrayType at
->                                     then ArrayType pit
->                                     else pit
->                     Pseudo AnyArray -> ArrayType pit
->                     Pseudo AnyElement -> if isArrayType at
->                                            then ArrayType pit
->                                            else pit
->                     Pseudo AnyEnum -> pit
->                     Pseudo AnyNonArray -> pit
->                     SetOfType (Pseudo AnyElement) -> if isArrayType at
->                                                      then SetOfType (ArrayType pit)
->                                                      else SetOfType pit
->                     _ -> at
->       --merge in the instantiated poly functions, with a twist:
->       -- if we already have the exact same set of args in the non poly list
->       -- as a poly, then don't include that poly
->       mergePolys :: [ProtArgCast] -> [ProtArgCast] -> [ProtArgCast]
->       mergePolys orig polys =
->           let origArgs = map (\((_,a,_,_),_) -> a) orig
->               filteredPolys = filter (\((_,a,_,_),_) -> a `notElem` origArgs) polys
->           in orig ++ filteredPolys
->
->       countPreferredTypeCasts :: [ProtArgCast] -> [Int]
->       countPreferredTypeCasts =
->           map (\(_,cp) -> count (==ImplicitToPreferred) cp)
->
->       -- Left () is used for inArgs which aren't unknown,
->       --                      and for unknowns which we don't have a
->       --                      unique category
->       -- Right s -> s is the single letter category at
->       --                           that position
->       getCastCategoriesForUnknowns :: [ProtArgCast] -> [Either () String]
->       getCastCategoriesForUnknowns cands =
->           filterArgN 0
->           where
->             candArgLists :: [[Type]]
->             candArgLists = map (\((_,a,_,_), _) -> a) cands
->             filterArgN :: Int -> [Either () String]
->             filterArgN n =
->                 if n == length inArgs
->                   then []
->                   else let targType = inArgs !! n
->                        in ((if targType /= UnknownType
->                               then Left ()
->                               else getCandsCatAt n) : filterArgN (n+1))
->                 where
->                   getCandsCatAt :: Int -> Either () String
->                   getCandsCatAt n' =
->                       let typesAtN = map (!!n') candArgLists
->                           catsAtN = map (forceRight . catTypeCategory cat) typesAtN
->                       in case () of
->                            --if any are string choose string
->                            _ | any (== "S") catsAtN -> Right "S"
->                              -- if all are same cat choose that
->                              | all (== head catsAtN) catsAtN -> Right $ head catsAtN
->                              -- otherwise no match, this will be
->                              -- picked up as complete failure to match
->                              -- later on
->                              | otherwise -> Left ()
->
->       getCandCatMatches :: [ProtArgCast] -> [Either () String] -> [ProtArgCast]
->       getCandCatMatches candsA cats = getMatches candsA 0
->          where
->            getMatches :: [ProtArgCast] -> Int -> [ProtArgCast]
->            getMatches cands n =
->                case () of
->                  _ | n == length inArgs -> cands
->                    | (inArgs !! n) /= UnknownType -> getMatches cands (n + 1)
->                    | otherwise ->
->                        let catMatches :: [ProtArgCast]
->                            catMatches = filter (\c -> Right (getCatForArgN n c) ==
->                                                      (cats !! n)) cands
->                            prefMatches :: [ProtArgCast]
->                            prefMatches = filter (forceRight . catPreferredType cat .
->                                                    getTypeForArgN n) catMatches
->                            keepMatches :: [ProtArgCast]
->                            keepMatches = if length prefMatches > 0
->                                            then prefMatches
->                                            else catMatches
->                        in getMatches keepMatches (n + 1)
->            getTypeForArgN :: Int -> ProtArgCast -> Type
->            getTypeForArgN n ((_,a,_,_),_) = a !! n
->            getCatForArgN :: Int -> ProtArgCast -> String
->            getCatForArgN n = forceRight . catTypeCategory cat . getTypeForArgN n
->
->       -- utils
->       -- filter a candidate/cast flavours pair by a predicate on each
->       -- individual cast flavour
->       filterCandCastPairs :: ([ArgCastFlavour] -> Bool)
->                           -> [ProtArgCast]
->                           -> [ProtArgCast]
->       filterCandCastPairs predi = filter (\(_,cp) -> predi cp)
->
->       getFnArgs :: FunctionPrototype -> [Type]
->       getFnArgs (_,a,_,_) = a
->       returnIfOnne [] e = Left e
->       returnIfOnne (l:ls) e = if length l == 1
->                               then Right $ getHeadFn l
->                               else returnIfOnne ls e
->
->       getHeadFn :: [ProtArgCast] -> FunctionPrototype
->       getHeadFn l =  let ((hdFn, _):_) = l
->                      in hdFn
->       none p = not . any p
->       count p = length . filter p
->
-> data ArgCastFlavour = ExactMatch
->                     | CannotCast
->                     | ImplicitToPreferred
->                     | ImplicitToNonPreferred
->                       deriving (Eq,Show)
->
-
-~~~~
-resolveResultSetType -
-partially implement the typing of results sets where the types aren't
-all the same and not unknown
-used in union,except,intersect columns, case, array ctor, values, greatest and least
-
-algo:
-if all inputs are same and not unknown -> that type
-replace domains with base types
-if all inputs are unknown then text
-if the non unknown types aren't all in same category then fail
-choose first input type that is a preferred type if there is one
-choose last non unknown type that has implicit casts from all preceding inputs
-check all can convert to selected type else fail
-
-code is not as much of a mess as findCallMatch
-~~~~
-
-> resolveResultSetType :: Catalog -> [Type] -> Either [TypeError] Type
-> resolveResultSetType cat inArgs = do
->   errorWhen (null inArgs) [TypelessEmptyArray]
->   returnWhen allSameType (head inArgs) $ do
->   returnWhen allSameBaseType (head inArgsBase) $ do
->   --returnWhen allUnknown (UnknownType) $ do
->   errorWhen (not allSameCat) [IncompatibleTypeSet inArgs]
->   returnWhen (isJust targetType &&
->               allConvertibleToFrom (fromMaybe (error "TypeConversion.resolveresultsettype 1: fromJust") targetType) inArgs)
->               (fromMaybe (error "TypeConversion.resolveresultsettype 2: fromJust") targetType) $ do
->   Left [IncompatibleTypeSet inArgs]
->   where
->      allSameType = all (== head inArgs) inArgs -- &&
->                      --head inArgs /= UnknownType
->      allSameBaseType = all (== head inArgsBase) inArgsBase &&
->                      head inArgsBase /= UnknownType
->      inArgsBase = map (replaceWithBase cat) inArgs
->      --allUnknown = all (==UnknownType) inArgsBase
->      allSameCat = let firstCat = catTypeCategory cat (head knownTypes)
->                   in all (\t -> catTypeCategory cat t == firstCat)
->                          knownTypes
->      targetType = case catMaybes [firstPreferred, lastAllConvertibleTo] of
->                     [] -> Nothing
->                     (x:_) -> Just x
->      firstPreferred = find (forceRight . catPreferredType cat) knownTypes
->      lastAllConvertibleTo = firstAllConvertibleTo (reverse knownTypes)
->      firstAllConvertibleTo (x:xs) = if allConvertibleToFrom x xs
->                                       then Just x
->                                       else firstAllConvertibleTo xs
->      firstAllConvertibleTo [] = Nothing
->      knownTypes = filter (/=UnknownType) inArgsBase
->      allConvertibleToFrom = all . flip (castableFromTo cat ImplicitCastContext)
-
-todo:
-cast empty array, where else can an empty array work?
-
-================================================================================
-
-= checkAssignmentValue
-
-> checkAssignmentValid :: Catalog -> Type -> Type -> Either [TypeError] ()
-> checkAssignmentValid cat from to =
->     if castableFromTo cat AssignmentCastContext from to
->     then Right ()
->     else Left [IncompatibleTypes to from]
->
-> compositesCompatible :: Catalog -> Type -> Type -> Bool
-> compositesCompatible cat =
->     castableFromTo cat ImplicitCastContext
-
-> checkAssignmentsValid :: Catalog -> [Type] -> [Type] -> Either [TypeError] ()
-> checkAssignmentsValid cat from to = do
->     -- special case for assigning to composite
->     let f = case to of
->                    [t] | isCompositeType t -> [AnonymousRecordType from]
->                    _ -> from
->     errorWhen (length f /= length to)
->               [WrongNumberOfColumns]
->     let ls = concat $ lefts $ zipWith (checkAssignmentValid cat) f to
->     errorWhen (not (null ls)) ls
-
-
-================================================================================
-
-= castable function
-
-wrapper around the catalog to add a bunch of extra valid casts
-
-> castableFromTo :: Catalog -> CastContext -> Type -> Type -> Bool
-> castableFromTo cat cc from to =
->   --trace ("check cast " ++ show from ++ "->" ++ show to) $
->   -- put this here to avoid having to write it everywhere else
->   from == to
->   -- unknown can be implicitly cast to anything (is this completely true?)
->   || from == UnknownType
->   --hack?
->   || to == UnknownType
->   -- check base types of domains
->   || ((isDomainType from || isDomainType to)
->       && castableFromTo cat cc (replaceWithBase cat from)
->                                (replaceWithBase cat to))
->   -- check the casts listed in the catalog
->   || forceRight (catCast cat cc from to)
->   -- implicitcast => assignment cast
->   || (cc == AssignmentCastContext
->       && forceRight (catCast cat ImplicitCastContext from to))
->   -- can assign composite to record
->   || (cc == AssignmentCastContext
->       && isCompOrSetoOfComp from
->       && case to of
->            PgRecord _ -> True
->            _ -> False)
->   -- check unboxing: wrapped single attribute
->   || recurseTransFrom (unboxedSingleType from)
->   || recurseTransTo (unboxedSingleType to)
->   -- check unboxing: wrapped composite
->   || recurseTransFrom (unboxedSetOfType from)
->   || recurseTransTo (unboxedSetOfType to)
->   -- check composites compatible by comparing attribute types
->   || case (getCompositeTypes from
->           ,getCompositeTypes to) of
->        -- zip almost does the right thing here, needs a bit of tweaking
->        (Just ft, Just tt) | length ft == length tt -> all (uncurry $ castableFromTo cat cc) $ zip ft tt
->        _ -> False
->   where
->
->     getCompositeTypes (NamedCompositeType n) =
->         Just $ map snd $ fromRight [] $ catCompositePublicAttrs cat [] n
->     getCompositeTypes (CompositeType t) = Just $ map snd t
->     getCompositeTypes (AnonymousRecordType t) = Just t
->     getCompositeTypes (PgRecord Nothing) = Nothing
->     getCompositeTypes (PgRecord (Just t)) = getCompositeTypes t
->     getCompositeTypes _ = Nothing
->
->     isCompOrSetoOfComp (SetOfType c) = isCompositeType c
->     isCompOrSetoOfComp c = isCompositeType c
->
->     unboxedSingleType (SetOfType (CompositeType [(_,t)])) = Just t
->     unboxedSingleType (PgRecord (Just t)) = unboxedSingleType t
->     unboxedSingleType _ = Nothing
->
->     unboxedSetOfType (SetOfType a) = Just a
->     unboxedSetOfType (PgRecord (Just t)) = unboxedSetOfType t
->     unboxedSetOfType _ = Nothing
->
->     recurseTransFrom = maybe False (flip (castableFromTo cat cc) to)
->     recurseTransTo = maybe False (castableFromTo cat cc from)
->
-> replaceWithBase :: Catalog -> Type -> Type
-> replaceWithBase cat t@(DomainType _) = forceRight $ catDomainBaseType cat t
-> replaceWithBase _ t = t
diff --git a/src/Database/HsSqlPpp/AstInternals/TypeChecking/Utils.lhs b/src/Database/HsSqlPpp/AstInternals/TypeChecking/Utils.lhs
deleted file mode 100644
--- a/src/Database/HsSqlPpp/AstInternals/TypeChecking/Utils.lhs
+++ /dev/null
@@ -1,127 +0,0 @@
-
-For extra utility functions to help with asts
-
-> module Database.HsSqlPpp.AstInternals.TypeChecking.Utils
->     (addExplicitCasts
->     ,canonicalizeTypeNames) where
-
-> import Data.Data
-> import Database.HsSqlPpp.AstInternals.AstInternal
-> import Data.Generics.PlateData
-> import Database.HsSqlPpp.AstInternals.AstAnnotation
-> import Database.HsSqlPpp.AstInternals.TypeType
-> import Control.Monad
-
-
-
-> -- | Run through a typechecked tree and add in explicit casts where
-> -- implicit casts are used to typecheck. Does function and operator
-> -- calls, case result expressions, and string, integer and float
-> -- literals at the moment, todo: union, array, greatest, least
-> addExplicitCasts :: Data a => a -> a
-> addExplicitCasts =
->   refix . tr . canonicalizeTypeNames
->   where
->     tr = transformBi $ \x -> case x of
->            FunCall a f as | Just p <- getProtoATys a
->                           , Just ats <- getTys as
->                           , p /= ats
->              -> FunCall a f $ zipWith3 addCastIfNeeded p ats as
->            Case a cs els | (Just f) <- doCase a cs els -> f
->            CaseSimple a v cs els | (Just f) <- doCaseSimple a v cs els -> f
->            i@(NumberLit a _) | Just t <- infType a -> castToT t i
->            i@(StringLit a _) | Just t <- infType a -> castToT t i
->            x1 -> x1
->     -- need to put the type annotation in the created cast to allow
->     -- adding explicit casts to continue up the tree
->     castToT t e = Cast ea {atype = Just t,infType = Just t} e $ typeName 1 t
->     getProtoATys :: Annotation -> Maybe [Type]
->     getProtoATys a = let p = fnProt a
->                      in flip fmap p $ \(_,t,_,_) -> t
->     getTys :: [ScalarExpr] -> Maybe [Type]
->     getTys = mapM $ atype . getAnnotation
->     addCastIfNeeded :: Type -> Type -> ScalarExpr -> ScalarExpr
->     addCastIfNeeded nt ot e =
->       if ot == nt
->       then e
->       else Cast ea e $ typeName 2 nt
->     -- not sure how to avoid inserting a cast for a literal which is
->     -- already being cast when using transformBi, so run through and
->     -- remove the suplerfluous casts in a second sweep
->     -- spot them when there is a cast of a cast of a literal
->     -- and the type of the inner cast is the same as the type of the literal
->     -- not sure if this pass can cause other problems
->     refix = transformBi $ \x -> case x of
->               Cast ca (Cast _ l t) t1 | isLiteral l
->                                       , Just lt <- infType $ getAnnotation l
->                                       , t == typeName 3 lt
->                 -> Cast ca l t1
->               x1 -> x1
->     isLiteral (NumberLit _ _) = True
->     isLiteral (StringLit _ _) = True
->     isLiteral _ = False
-
-
-> typeName :: Int -> Type -> TypeName
-> typeName _ (ScalarType t) = SimpleTypeName ea t
-> typeName i e = error $ "don't know how to convert " ++ show e ++ " to typename " ++ show i
-
-> ea :: Annotation
-> ea = emptyAnnotation
-
-> doCase :: Annotation -> [([ScalarExpr],ScalarExpr)] -> Maybe ScalarExpr -> Maybe ScalarExpr
-> doCase a whths els = do
->   (whths',els') <- doCaseStuff a whths els
->   return $ Case a whths' els'
-
-> doCaseSimple :: Annotation -> ScalarExpr -> [([ScalarExpr],ScalarExpr)] -> Maybe ScalarExpr -> Maybe ScalarExpr
-> doCaseSimple a v whths els = do
->   (whths',els') <- doCaseStuff a whths els
->   return $ CaseSimple a v whths' els'
-
-> doCaseStuff :: Annotation -> [([ScalarExpr],ScalarExpr)] -> Maybe ScalarExpr -> Maybe ([([ScalarExpr],ScalarExpr)],Maybe ScalarExpr)
-> doCaseStuff a whths els = do
->   --trace (show $ atype a) $ return ()
->   expectedType <- atype a
->   --trace (show $ map (atype . getAnnotation . snd) whths) $ return ()
->   thenTypes <- mapM (atype . getAnnotation . snd) whths
->   --trace (show els) $ return ()
->   thenAndElseTypes <- case els of
->                         Nothing -> return thenTypes
->                         Just els' -> fmap (:thenTypes) $ atype $ getAnnotation els'
->   --trace ("checking cast: " ++ show expectedType ++ " " ++ show thenAndElseTypes)
->   when (all (==expectedType) thenAndElseTypes) Nothing
->   return (map (fixWhTh expectedType) whths
->          ,castElse expectedType)
->   where
->     castElse et = case els of
->                     Nothing -> Nothing
->                     Just els' | Just t' <- atype $ getAnnotation els
->                               , t' /= et
->                       -> Just (Cast ea els' $ typeName 4 et)
->                               | otherwise -> els
->     fixWhTh :: Type -> ([ScalarExpr],ScalarExpr) -> ([ScalarExpr],ScalarExpr)
->     fixWhTh et (whs,th) | Just t' <- atype $ getAnnotation th
->                         , t' /= et = (whs, Cast ea th $ typeName 5 et)
->                         | otherwise = (whs,th)
-
-> -- bit crap, this function is called canonicalizeTypeNames
-> -- and it uses a function called canonicalizeTypeName
-
-> -- | Convert all the typenames in the ast to canonical form
-> -- e.g. int -> int4
-> canonicalizeTypeNames :: Data a => a -> a
-> canonicalizeTypeNames = fixTypes . fixTypeNames
->   where
->     fixTypes =
->       transformBi $ \x -> case x of
->         ScalarType t -> ScalarType $ ct t
->         x1 -> x1
->     fixTypeNames =
->       transformBi $ \x -> case x of
->         SimpleTypeName a t -> SimpleTypeName a $ ct t
->         PrecTypeName a t i -> PrecTypeName a (ct t) i
->         Prec2TypeName a t i0 i1 -> Prec2TypeName a (ct t) i0 i1
->         x1 -> x1
->     ct = canonicalizeTypeName
-
diff --git a/src/Database/HsSqlPpp/AstInternals/TypeType.lhs b/src/Database/HsSqlPpp/AstInternals/TypeType.lhs
deleted file mode 100644
--- a/src/Database/HsSqlPpp/AstInternals/TypeType.lhs
+++ /dev/null
@@ -1,421 +0,0 @@
-
-This file contains the data type Type. It is kept separate so we can
-compile the types and function information from the database
-separately to AstInternal.ag.
-
-Types overview:
-
-Regular types: scalarType, arrayType, composite type, domaintype
-we can use these anywhere.
-
-~~~~
-semi first class types: row, unknownstringlit (called unknown in pg) -
-these can be used in some places, but not others, in particular an
-expression can have this type or select can have a row with these
-type, but a view can't have a column with this type (so a select can
-be valid on it's own but not as a view. Not sure if Row types can be
-variables, unknownstringlit definitely can't. (Update, seems a view
-can have a column with type unknown.)
-
-pseudo types - mirror pg pseudo types
-Internal, LanguageHandler, Opaque probably won't ever be properly supported
-Not sure exactly what Any is, can't use it in functions like the other any types?
- - update: seems that Any is like AnyElement, but multiple Anys don't
-   have to have the same type.
-AnyElement, AnyArray, AnyEnum, AnyNonArray - used to implement polymorphic functions,
-  can only be used in these functions as params, return type (and local vars?).
-Cstring - treated as variant of text?
-record -dynamically typed, depends where it is used, i think is used
-for type inference in function return types (so you don't have to
-write the correct type, the compiler fills it in), and as a dynamically
-typed variable in functions, where it can take any composite typed
-value.
-void is used for functions which return nothing
-trigger is a tag to say a function is used in triggers, used as a
-return type only
-typecheckfailed is used to represent the type of anything which the code
-is currently unable to type check, this usage should disappear at some
-point, and then it will only represent code which doesn't type check
-because of a mistake.
-
-The Type type identifies the type of a node, but doesn't necessarily
-describe the type.
-
-Typing relational valued expressions:
-use SetOfType combined with composite type for now, see if it works
-out. If not, will have to add another type.
-~~~~
-
-> {-# LANGUAGE FlexibleInstances,DeriveDataTypeable #-}
->
-> module Database.HsSqlPpp.AstInternals.TypeType where
->
-> import Control.Monad.Trans.Error
-> --import Control.Monad.Error
->
-> import Data.Data
-> import Data.Generics.PlateData
-> import Data.Char
-
-> data Type = ScalarType String
->           | ArrayType Type
->           | SetOfType Type
->             --three variations, choose better name for rowctor
->             --refer to composite type in catalog
->           | NamedCompositeType String
->             --refer to composite type either in catalog or one generated on fly
->           | CompositeType [(String,Type)]
->             --refer to anonymous composite type: the fields have no names
->             --these three types are equality and assign compatible if the fields
->             --are ignoring the names, so the fields have to be in the same order.
->           | AnonymousRecordType [Type] -- was rowctor
->           | PgRecord (Maybe Type) -- can only hold namedcomposite, composite or anonymousrecord
->           | DomainType String
->           | EnumType String
->           | Pseudo PseudoType
->           | UnknownType -- represents a string literal
->                              -- token whose type isn't yet
->                              -- determined
->             deriving (Eq,Show,Ord,Typeable,Data)
->
-> data PseudoType = Any
->                 | AnyArray
->                 | AnyElement
->                 | AnyEnum
->                 | AnyNonArray
->                 | Cstring
->                 | Record
->                 | TriggerRecord
->                 | Trigger
->                 | Void
->                 | Internal
->                 | LanguageHandler
->                 | Opaque
->                   deriving (Eq,Show,Ord,Typeable,Data)
-
-this list will need reviewing, probably refactor to a completely
-different set of infos, also will want to add more information to
-these, and to provide a way of converting into a user friendly
-string. It is intended for this code to produce highly useful errors
-later on down the line.
-
->                    -- mostly expected,got
-> data TypeError = WrongTypes Type [Type]
->                | UnknownTypeError Type
->                | UnknownTypeName String
->                | NoMatchingOperator String [Type]
->                | TypelessEmptyArray
->                | IncompatibleTypeSet [Type]
->                | IncompatibleTypes Type Type
->                | ValuesListsMustBeSameLength
->                | NoRowsGivenForValues
->                | UnrecognisedIdentifier String
->                | UnrecognisedRelation String
->                | UnrecognisedCorrelationName String
->                | BadStarExpand
->                | AmbiguousIdentifier String
->                | ContextError String
->                | MissingJoinAttribute
->                | ExpressionMustBeBool
->                | WrongNumberOfColumns
->                | ExpectedDomainType Type
->                | DomainDefNotFound Type
->                | BadCatalogUpdate String
->                | TypeAlreadyExists Type
->                | AnyAllError String
->                | InternalError String
->                | FromToTypesNotSame Type Type
->                | WrongNumberOfAliasCols Int Int
->                 --shoved in to humour the Either Monad
->                | MiscError String
->                  deriving (Eq,Show,Ord,Typeable,Data)
->
-
- > instance Error ([TypeError]) where
- >   noMsg = [MiscError "Unknown error"]
- >   strMsg str = [MiscError str]
-
-> instance ErrorList TypeError where
->    listMsg s = [MiscError s]
-
-
-=== canonical type name support
-
-Introduce some aliases to protect client code if/when the ast
-canonical names are changed:
-
-> typeSmallInt,typeBigInt,typeInt,typeNumeric,typeFloat4,
->   typeFloat8,typeVarChar,typeChar,typeBool,typeDate,
->   typeInterval :: Type
-> typeSmallInt = ScalarType "int2"
-> typeBigInt = ScalarType "int8"
-> typeInt = ScalarType "int4"
-> typeNumeric = ScalarType "numeric"
-> typeFloat4 = ScalarType "float4"
-> typeFloat8 = ScalarType "float8"
-> typeVarChar = ScalarType "varchar"
-> typeChar = ScalarType "char"
-> typeBool = ScalarType "bool"
-> typeDate = ScalarType "date"
-> typeInterval = ScalarType "interval"
-
-this converts the name of a type to its canonical name:
-try to follow the names that pg uses in a dump
-this converts the name of a type to its canonical name:
-try to follow the names that pg uses in a dump
-
-> canonicalizeTypeName :: String -> String
-> canonicalizeTypeName s' =
->   case () of
->                   _ | s `elem` smallIntNames -> "int2"
->                     | s `elem` intNames -> "int4"
->                     | s `elem` bigIntNames -> "int8"
->                     | s `elem` numericNames -> "numeric"
->                     | s `elem` float4Names -> "float4"
->                     | s `elem` float8Names -> "float8"
->                     | s `elem` varcharNames -> "varchar"
->                     | s `elem` charNames -> "char"
->                     | s `elem` boolNames -> "bool"
->                     | otherwise -> s
->   where
->       smallIntNames = ["int2", "smallint"]
->       intNames = ["int4", "integer", "int", "serial"]
->       bigIntNames = ["int8", "bigint"]
->       numericNames = ["numeric", "decimal"]
->       float4Names = ["real", "float4"]
->       float8Names = ["double precision", "float"]
->       varcharNames = ["character varying", "varchar"]
->       charNames = ["character", "char"]
->       boolNames = ["boolean", "bool"]
->       s = map toLower s'
->
-> canonicalizeTypes :: Data a => a -> a
-> canonicalizeTypes =
->   transformBi $ \x ->
->       case x of
->         ScalarType s -> ScalarType $ canonicalizeTypeName s
->         x1 -> x1
-
-random notes on pg types:
-
-~~~~
-
-== domains:
-the point of domains is you can't put constraints on types, but you
-can wrap a type up in a domain and put a constraint on it there.
-
-== literals/selectors
-
-source strings are parsed as unknown type: they can be implicitly cast
-to almost any type in the right context.
-
-rows ctors can also be implicitly cast to any composite type matching
-the elements (now sure how exactly are they matched? - number of
-elements, type compatibility of elements, just by context?).
-
-string literals are not checked for valid syntax currently, but this
-will probably change so we can type check string literals statically.
-Postgres defers all checking to runtime, because it has to cope with
-custom data types. This code will allow adding a grammar checker for
-each type so you can optionally check the string lits statically.
-
-== notes on type checking types
-
-=== basic type checking
-Currently can lookup type names against a default template1 list of
-types, or against the current list in a database (which is read before
-processing and sql code).
-
-todo: collect type names from current source file to check against
-A lot of the infrastructure to do this is already in place. We also
-need to do this for all other definitions, etc.
-
-=== Type aliases
-
-Some types in postgresql have multiple names. I think this is
-hardcoded in the pg parser.
-
-For the canonical name in this code, we use the name given in the
-postgresql pg_type catalog relvar.
-
-TODO: Change the ast canonical names: where there is a choice, prefer
-the sql standard name, where there are multiple sql standard names,
-choose the most concise or common one, so the ast will use different
-canonical names to postgresql.
-
-planned ast canonical names:
-numbers:
-int2, int4/integer, int8 -> smallint, int, bigint
-numeric, decimal -> numeric
-float(1) to float(24), real -> float(24)
-float, float(25) to float(53), double precision -> float
-serial, serial4 -> int
-bigserial, serial8 -> bigint
-character varying(n), varchar(n)-> varchar(n)
-character(n), char(n) -> char(n)
-
-TODO:
-
-what about PrecTypeName? - need to fix the ast and parser (found out
-these are called type modifiers in pg)
-
-also, what can setof be applied to - don't know if it can apply to an
-array or setof type
-
-array types have to match an exact array type in the catalog, so we
-can't create an arbitrary array of any type. Not sure if this is
-handled quite correctly in this code.
-
-~~~~
-
---------------------------------------------------------------------------------
-
-utilities for working with Types
-
-These may indicate that the haskell type system isn't being used very well.
-
-> isArrayType :: Type -> Bool
-> isArrayType (ArrayType _) = True
-> isArrayType _ = False
->
-> isDomainType :: Type -> Bool
-> isDomainType (DomainType _) = True
-> isDomainType _ = False
->
-> isCompositeType :: Type -> Bool
-> isCompositeType (CompositeType _) = True
-> isCompositeType (NamedCompositeType _) = True
-> isCompositeType (AnonymousRecordType _) = True
-> isCompositeType (PgRecord _) = True
-> isCompositeType _ = False
->
-> isCompositeOrSetOfCompositeType :: Type -> Bool
-> isCompositeOrSetOfCompositeType (SetOfType a) = isCompositeType a
-> isCompositeOrSetOfCompositeType a = isCompositeType a
->
-> unwrapArray :: Type -> Either [TypeError] Type
-> unwrapArray (ArrayType t) = Right t
-> unwrapArray x = Left [InternalError $ "can't get types from non array " ++ show x]
->
-> unwrapSetOfWhenComposite :: Type -> Either [TypeError] Type
-> unwrapSetOfWhenComposite (SetOfType a@(CompositeType _)) = Right a
-> unwrapSetOfWhenComposite x = Left [InternalError $ "tried to unwrapSetOfWhenComposite on " ++ show x]
->
-> unwrapSetOfComposite :: Type -> Either [TypeError]  [(String,Type)]
-> unwrapSetOfComposite (SetOfType (CompositeType a)) = Right a
-> unwrapSetOfComposite x = Left [InternalError $ "tried to unwrapSetOfComposite on " ++ show x]
->
-> unwrapSetOf :: Type -> Either [TypeError] Type
-> unwrapSetOf (SetOfType a) = Right a
-> unwrapSetOf x = Left [InternalError $ "tried to unwrapSetOf on " ++ show x]
->
-> unwrapComposite :: Type -> Either [TypeError] [(String,Type)]
-> unwrapComposite (CompositeType a) = Right a
-> unwrapComposite x = Left [InternalError $ "cannot unwrapComposite on " ++ show x]
->
-> consComposite :: (String,Type) -> Type -> Either [TypeError] Type
-> consComposite l (CompositeType a) = Right $ CompositeType (l:a)
-> consComposite a b = Left [InternalError $ "called consComposite on " ++ show (a,b)]
->
-> unwrapRowCtor :: Type -> Either [TypeError] [Type]
-> unwrapRowCtor (AnonymousRecordType a) = Right a
-> unwrapRowCtor x = Left [InternalError $ "cannot unwrapRowCtor on " ++ show x]
-
---------------------------------------------------------------------------------
-
-~~~~
-new plan for types:
-
-The type annotations attached to nodes will be either typecheckfailed 'type'
-this will allow chaining type check failed more robustly. Type errors don't change.
-
-the sql type type will be changed so we can track the different
-contexts where different sql types can be used, split to use different
-sets of types so we can use the haskell type system to enforce these
-contexts.
-
-rename type to sqltype, too confusing otherwise
-new set of sqltypes: (these aren't in one haskell type anymore)
-scalar type - corresponds to sqltypes in pg which aren't one of the
-  other types (no easy way to define this)
-array type
-setof type : can be applied to scalar, domain, ... but not all types
-composite types are changed:
-namedcomposite string
-composite [(string,type)] -> what types can appear in the attribute list?
-anonymousrecord [type] -> what types can appear here? -> this
-represents a row expression type, which can be returned in select
-expressions (but not as a column in a view), and is used in other places
-domaintype : what types are allowable as the base type?
-pseudo types: these are used for arguments and return values for function prototypes only
-any*, record - just means pg infers the return type which will be a composite type (namedcomposite, composite or anonymousrecord), trigger: just a tag, void: just a tag, any*: polymorphic functions, ignore cstring, internal, language handler and opaque.
-issue: a variable declaration can be a polymorphic type in a polymorphic function, but we can't use the other pseudo types so need to split these
-a variable declared as type record IS NOT the same thing as the pseudo record type, I've finally worked out.
-so our plpgsqlrecordtype is plpgsqlrecordtype (Nothing|one of the three composite types)
-
-typechecking polymorphic functions: will have to relax the type
-checking to some degree. want to check against each usage of the
-polymorphic function in the source, so substitute in the actual types
-and check the function.
-
-contexts:
-function prototypes: args and return type
-function calls: args and return
-variable declaration in plpgsql
-attribute in a select expression
-attribute in a view (less permissive than a select expression), also create table as?
-attribute in a table, type (is this the same list as for composite and anonymous records? - can nest anonymous records)
-base type for domain
-cast expression
-insert: targetatts are same set of types as attributes in a table
-update: targets can be attr types or anonymous records of attr types for rowset style assign (x,y) = selectexp
-assignment statement: type on left same set as type in a for, types in select into, etc?
-return statement
-return query statement
-expressions in a raise statement
-expressions in execute, anything else?
-types used inside select expression checking:
-  selectlist, trefs, groupby, orderby, limit, offset, where, having
-expressions:
-what can an identifiers type be?
-what can the type of an Expression node be?
-  scalar: integerlit,floatlit
-  stringlit: what can an unknown resolve to (not quite everything)
-  booleanlit: scalar
-  nulllit: same as stringlit?
-  positionalarg: any type that a function arg can have
-  cast: any type you can cast to
-  identifier: ?
-  case, casesimple: any type in the rhs expressions, what are these?
-  exists: scalar
-  funcall: any type a function return type can have
-  inpredicate: scalar
-  windowfn: ?
-  liftoperator: booleans only?
-
-problem: can't get types using gettypeannotation function and support
-different valid combinations of types
-
-
-new notes
-type contexts - these all have different possible types
-function return type
-function parameter type
-OLD & NEW
-declared variable
-attribute in create table
-attribute create type
-column in select expression
-column in view
-column in insert
-item in set in update: includes row type with contained types restricted
-placeholder
-id lookups in local bindings
-typenames??
-
-create list of each type for each context
-create wrapper types which convert from other types to either
-  typeerror type for bad type for context
-
-~~~~
-
diff --git a/src/Database/HsSqlPpp/Catalog.lhs b/src/Database/HsSqlPpp/Catalog.lhs
--- a/src/Database/HsSqlPpp/Catalog.lhs
+++ b/src/Database/HsSqlPpp/Catalog.lhs
@@ -55,5 +55,5 @@
 >     ,isOperatorName
 >     ) where
 >
-> import Database.HsSqlPpp.AstInternals.Catalog.CatalogInternal
-> import Database.HsSqlPpp.AstInternals.Catalog.DefaultTemplate1Catalog
+> import Database.HsSqlPpp.Internals.Catalog.CatalogInternal
+> import Database.HsSqlPpp.Internals.Catalog.DefaultTemplate1Catalog
diff --git a/src/Database/HsSqlPpp/Internals/AnnotationUtils.lhs b/src/Database/HsSqlPpp/Internals/AnnotationUtils.lhs
new file mode 100644
--- /dev/null
+++ b/src/Database/HsSqlPpp/Internals/AnnotationUtils.lhs
@@ -0,0 +1,28 @@
+
+This module contains some utilities and generic code for working with
+asts and annotations which depend on the ast types.
+
+> {-# LANGUAGE ScopedTypeVariables #-}
+>
+> module Database.HsSqlPpp.Internals.AnnotationUtils
+>     (
+>      getStatementAnnotations
+>     ,resetAnnotations
+>     ) where
+>
+> import Data.Data
+> import Data.Generics.Uniplate.Data
+>
+> import Database.HsSqlPpp.Internals.AstInternal
+> import Database.HsSqlPpp.Internals.AstAnnotation
+>
+> -- | Run through the ast and return all the annotations attached to
+> --   a Statement node.
+> getStatementAnnotations :: Data a => a -> [Annotation]
+> getStatementAnnotations st =
+>     [getAnnotation s | (s::Statement) <- universeBi st]
+
+> -- | Set all the annotations in a tree to be 'emptyAnnotation'.
+> resetAnnotations :: Data a => a -> a
+> resetAnnotations =
+>     updateAnnotations (const emptyAnnotation)
diff --git a/src/Database/HsSqlPpp/Internals/AstAnnotation.lhs b/src/Database/HsSqlPpp/Internals/AstAnnotation.lhs
new file mode 100644
--- /dev/null
+++ b/src/Database/HsSqlPpp/Internals/AstAnnotation.lhs
@@ -0,0 +1,193 @@
+
+The annotation data types and utilities for working with them.
+
+Annotations are used to store source positions, types, errors,
+warnings, catalog deltas, information, and other stuff a client might
+want to use when looking at an ast. Internal annotations which are
+used in the type-checking/ annotation process use the attribute
+grammar code and aren't exposed.
+
+> {-# LANGUAGE DeriveDataTypeable,ScopedTypeVariables  #-}
+>
+> module Database.HsSqlPpp.Internals.AstAnnotation
+>     (
+>      Annotation(..)
+>     ,SourcePosition
+>     ,StatementType
+>     ,getAnnotation
+>     ,updateAnnotations
+>     ,getAnnotations
+>     ,emptyAnnotation
+>     ,getTypeAnnotation
+>     ,updateAnnotation
+>     ) where
+>
+> import Data.Generics
+> ---import Control.Arrow
+> import Data.Generics.Uniplate.Data
+> --import Debug.Trace
+>
+> import Database.HsSqlPpp.Internals.TypeType
+> import Database.HsSqlPpp.Internals.Catalog.CatalogInternal
+> --import Database.HsSqlPpp.Utils.Utils
+>
+> -- | Represents a source file position, usually set by the parser.
+> type SourcePosition = (String,Int,Int)
+> -- | Statement type is used for getting type information for a parameterized statement.
+> type StatementType = ([Type],[(String,Type)])
+
+> -- | Annotation type - one of these is attached to most of the
+> -- data types used in the ast.
+> data Annotation = Annotation { -- | source position for this node
+>                               asrc :: Maybe SourcePosition
+>                                -- | type of the node, 'Nothing' if the tree hasn't been typechecked or if a type error prevents determining the type
+>                              ,atype :: Maybe Type
+>                                -- | any type errors
+>                              ,errs :: [TypeError]
+>                                -- | 'statement type' - used for getting the in and out types of a parameterized statement
+>                              ,stType :: Maybe StatementType
+>                                -- | any catalog updates that a ddl statement produces
+>                              ,catUpd :: [CatalogUpdate]
+>                                -- | the matched function prototype for a funcall
+>                              ,fnProt :: Maybe FunctionPrototype
+>                                -- | 'inferred' type - fake type inference used for getting the type of ? placeholders in parameterized statements
+>                              ,infType :: Maybe Type}
+>                   deriving (Eq, Show,Typeable,Data)
+>
+> -- | An annotation value with no information.
+> emptyAnnotation :: Annotation
+> emptyAnnotation = Annotation Nothing Nothing [] Nothing [] Nothing Nothing
+
+> -- | get the annotation for the root element of the tree passed
+> getAnnotation :: Data a => a -> Annotation
+> getAnnotation = head . childrenBi
+
+> -- | get all the annotations from a tree
+> getAnnotations :: Data a => a -> [Annotation]
+> getAnnotations = universeBi -- st --[x | x <- universeBi st]
+
+> -- | update all the annotations in a tree
+> updateAnnotations :: Data a => (Annotation -> Annotation) -> a -> a
+> updateAnnotations = transformBi
+
+> getTypeAnnotation :: Data a => a -> Maybe Type
+> getTypeAnnotation = atype . getAnnotation
+
+
+
+
+
+Use syb/uniplate to pull annotation values from an ast.
+
+I like to cut and paste code from the internet which I don't
+understand, then keep changing it till it compiles and passes the tests.
+
+> {- -- | run through the ast, and pull the type annotation from each
+> -- of the top level items.
+> getTypeAnnotation :: (Show a, Data a) => a -> Type
+> getTypeAnnotation st =
+>     typeAnnot $ getTopLevelAnnotation st
+>     where
+>       typeAnnot :: Annotation -> Type
+>       typeAnnot (x:xs) = case x of
+>                                 TypeAnnotation t -> t
+>                                 _ -> typeAnnot xs
+>       typeAnnot [] = TypeCheckFailed -- error "couldn't find type annotation"
+>
+> -- | Run through the ast given and return a list of statementtypes
+> -- from the top level items.
+> getTopLevelInfos :: Data a => [a] -> [Maybe StatementType]
+> getTopLevelInfos = map (getSIAnnotation . getTopLevelAnnotation)
+>
+> getTopLevelCatUpdates ::  Data a => [a] -> [[CatalogUpdate]]
+> getTopLevelCatUpdates = map (getEuAnnotation . getTopLevelAnnotation)
+>
+
+> -- | runs through the ast given and returns a list of all the type errors
+> -- in the ast. Recurses into all ast nodes to find type errors.
+> -- This is the function to use to see if an ast has passed the type checking process.
+> -- Returns a Maybe SourcePos and the list of type errors for each node which has one or
+> -- more type errors.
+> getTypeErrors :: (Data a) => a -> [(Maybe AnnotationElement,[TypeError])]
+> getTypeErrors sts =
+>     filter (\(_,te) -> not $ null te) $ map (gtsp &&& gte) $ getAnnotations sts
+>     where
+>       gte (a:as) = case a of
+>                     TypeErrorA e -> e:gte as
+>                     _ -> gte as
+>       gte _ = []
+>       gtsp (a:as) = case a of
+>                     s@(SourcePos _ _ _) -> Just s
+>                     _ -> gtsp as
+>       gtsp _ = Nothing
+
+~~~~
+question:
+if a node has no source position e.g. the all in select all or select
+   distinct may correspond to a token or may be synthesized as the
+   default if neither all or distinct is present. Should this have the
+   source position of where the token would have appeared, should it
+   inherit it from its parent, should there be a separate ctor to
+   represent a fake node with no source position?
+
+~~~~
+
+hack job, often not interested in the source positions when testing
+the asts produced, so this function will reset all the source
+positions to empty ("", 0, 0) so we can compare them for equality, etc.
+without having to get the positions correct.
+
+> -}
+
+ > -- | strip all the annotations from a tree. E.g. can be used to compare
+ > -- two asts are the same, ignoring any source position annotation differences.
+ > stripAnnotations :: Data a => a -> a
+ > stripAnnotations = filterAnnotations (const False)
+ >
+
+ > filterAnnotations :: Data a => (Annotation -> Bool) -> a -> a
+ > filterAnnotations f = transformBi (filter f)
+
+>
+> -- | Update the first annotation in a tree using the function supplied
+> updateAnnotation :: Data a => (Annotation -> Annotation) -> a -> a
+> updateAnnotation f = gmapT (mkT f)
+>
+
+
+ >   case gmapQ (mkQ [] f) a of
+ >     an:_ -> an
+ >     [] -> []
+ >   where
+ >     f :: Annotation -> Annotation
+ >     f = id
+ >
+
+ >
+ > getAnnotations :: Data a => a -> [Annotation]
+ > getAnnotations = listifyWholeLists (\(_::Annotation) -> True)
+ >
+
+> {-getSIAnnotation :: Annotation -> Maybe StatementType
+> getSIAnnotation (x:xs) = case x of
+>                                 StatementTypeA t -> Just t
+>                                 _ -> getSIAnnotation xs
+> getSIAnnotation []  = Nothing
+>
+> getEuAnnotation :: Annotation -> [CatalogUpdate]
+> getEuAnnotation (x:xs) = case x of
+>                                 CatUpdates t -> t
+>                                 _ -> getEuAnnotation xs
+> getEuAnnotation [] = []-}
+
+-------------------------------------------------------------------------------
+
+utils
+
+ > listifyWholeLists :: Typeable b => ([b] -> Bool) -> GenericQ [[b]]
+ > listifyWholeLists blp = flip (synthesize id (.) (mkQ id (\bl _ -> if blp bl then (bl:) else id))) []
+
+this might need to be maybe and change head?
+
+ > getTopLevelAnnotation :: Data a => a -> Annotation
+ > getTopLevelAnnotation st = head $ childrenBi st
diff --git a/src/Database/HsSqlPpp/Internals/AstAnti.hs b/src/Database/HsSqlPpp/Internals/AstAnti.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/HsSqlPpp/Internals/AstAnti.hs
@@ -0,0 +1,967 @@
+{-
+This file is autogenerated, to generate: load this file (MakeAntiNodes.lhs)
+into ghci and run:
+nwriteAntiNodes
+n\nThe path might need tweaking.
+n-}
+{-# LANGUAGE DeriveDataTypeable #-}
+module Database.HsSqlPpp.Internals.AstAnti
+       (convertStatements, convertScalarExpr, attributeDef, queryExpr,
+        Statement(..), QueryExpr(..), WithQuery(..), FnBody(..),
+        TableRef(..), TableAlias(..), JoinExpr(..), JoinType(..),
+        SelectList(..), SelectItem(..), CopySource(..), AttributeDef(..),
+        RowConstraint(..), AlterTableAction(..), Constraint(..),
+        TypeAttributeDef(..), ParamDef(..), VarDef(..), RaiseType(..),
+        CombineType(..), Volatility(..), Language(..), TypeName(..),
+        DropType(..), Cascade(..), Direction(..), Distinct(..),
+        Natural(..), IfExists(..), Replace(..), RestartIdentity(..),
+        ScalarExpr(..), SQIdentifier(..), IntervalField(..),
+        ExtractField(..), FrameClause(..), InList(..), LiftFlavour(..),
+        TriggerWhen(..), TriggerEvent(..), TriggerFire(..), SetValue(..),
+        WithQueryList, StatementList, ScalarExprListStatementListPairList,
+        ScalarExprListStatementListPair, ScalarExprList, ParamDefList,
+        AttributeDefList, ConstraintList, TypeAttributeDefList,
+        TypeNameList, StringTypeNameListPair, StringTypeNameListPairList,
+        ScalarExprStatementListPairList,
+        CaseScalarExprListScalarExprPairList, MaybeScalarExpr,
+        TableRefList, ScalarExprListList, SelectItemList, OnExpr,
+        RowConstraintList, VarDefList, ScalarExprStatementListPair,
+        CaseScalarExprListScalarExprPair, ScalarExprDirectionPair,
+        ScalarExprDirectionPairList, MaybeBoolExpr, MaybeSelectList,
+        AlterTableActionList)
+       where
+import Data.Data
+import Database.HsSqlPpp.Internals.AstAnnotation
+import qualified Database.HsSqlPpp.Internals.AstInternal as A
+ 
+convertStatements :: [Statement] -> [A.Statement]
+convertStatements = statementList
+ 
+convertScalarExpr :: ScalarExpr -> A.ScalarExpr
+convertScalarExpr = scalarExpr
+ 
+data JoinType = Inner
+              | LeftOuter
+              | RightOuter
+              | FullOuter
+              | Cross
+              deriving (Show, Eq, Typeable, Data)
+ 
+data CopySource = CopyFilename String
+                | Stdin
+                deriving (Show, Eq, Typeable, Data)
+ 
+data SetValue = SetStr Annotation String
+              | SetId Annotation String
+              | SetNum Annotation Double
+              deriving (Show, Eq, Typeable, Data)
+ 
+data TriggerWhen = TriggerBefore
+                 | TriggerAfter
+                 deriving (Show, Eq, Typeable, Data)
+ 
+data TriggerEvent = TInsert
+                  | TUpdate
+                  | TDelete
+                  | AntiTriggerEvent String
+                  deriving (Show, Eq, Typeable, Data)
+ 
+data TriggerFire = EachRow
+                 | EachStatement
+                 deriving (Show, Eq, Typeable, Data)
+ 
+data RaiseType = RNotice
+               | RException
+               | RError
+               deriving (Show, Eq, Typeable, Data)
+ 
+data CombineType = Except
+                 | Union
+                 | Intersect
+                 | UnionAll
+                 deriving (Show, Eq, Typeable, Data)
+ 
+data Volatility = Volatile
+                | Stable
+                | Immutable
+                deriving (Show, Eq, Typeable, Data)
+ 
+data Language = Sql
+              | Plpgsql
+              deriving (Show, Eq, Typeable, Data)
+ 
+data DropType = Table
+              | Domain
+              | View
+              | Type
+              deriving (Show, Eq, Typeable, Data)
+ 
+data Cascade = Cascade
+             | Restrict
+             deriving (Show, Eq, Typeable, Data)
+ 
+data Direction = Asc
+               | Desc
+               deriving (Show, Eq, Typeable, Data)
+ 
+data Distinct = Distinct
+              | Dupes
+              deriving (Show, Eq, Typeable, Data)
+ 
+data Natural = Natural
+             | Unnatural
+             deriving (Show, Eq, Typeable, Data)
+ 
+data IfExists = Require
+              | IfExists
+              deriving (Show, Eq, Typeable, Data)
+ 
+data Replace = Replace
+             | NoReplace
+             deriving (Show, Eq, Typeable, Data)
+ 
+data RestartIdentity = RestartIdentity
+                     | ContinueIdentity
+                     deriving (Show, Eq, Typeable, Data)
+ 
+data LiftFlavour = LiftAny
+                 | LiftAll
+                 deriving (Show, Eq, Typeable, Data)
+ 
+data IntervalField = IntervalYear
+                   | IntervalMonth
+                   | IntervalDay
+                   | IntervalHour
+                   | IntervalMinute
+                   | IntervalSecond
+                   | IntervalYearToMonth
+                   | IntervalDayToHour
+                   | IntervalDayToMinute
+                   | IntervalDayToSecond
+                   | IntervalHourToMinute
+                   | IntervalHourToSecond
+                   | IntervalMinuteToSecond
+                   deriving (Show, Eq, Typeable, Data)
+ 
+data ExtractField = ExtractCentury
+                  | ExtractDay
+                  | ExtractDecade
+                  | ExtractDow
+                  | ExtractDoy
+                  | ExtractEpoch
+                  | ExtractHour
+                  | ExtractIsodow
+                  | ExtractIsoyear
+                  | ExtractMicroseconds
+                  | ExtractMillennium
+                  | ExtractMilliseconds
+                  | ExtractMinute
+                  | ExtractMonth
+                  | ExtractQuarter
+                  | ExtractSecond
+                  | ExtractTimezone
+                  | ExtractTimezoneHour
+                  | ExtractTimezoneMinute
+                  | ExtractWeek
+                  | ExtractYear
+                  deriving (Show, Eq, Typeable, Data)
+ 
+data FrameClause = FrameUnboundedPreceding
+                 | FrameUnboundedFull
+                 | FrameRowsUnboundedPreceding
+                 deriving (Show, Eq, Typeable, Data)
+ 
+data AlterTableAction = AddConstraint Annotation Constraint
+                      | AlterColumnDefault Annotation String ScalarExpr
+                      deriving (Data, Eq, Show, Typeable)
+ 
+data AttributeDef = AttributeDef Annotation String TypeName
+                                 MaybeScalarExpr RowConstraintList
+                  deriving (Data, Eq, Show, Typeable)
+ 
+data Constraint = CheckConstraint Annotation String ScalarExpr
+                | PrimaryKeyConstraint Annotation String [String]
+                | ReferenceConstraint Annotation String [String] String [String]
+                                      Cascade Cascade
+                | UniqueConstraint Annotation String [String]
+                deriving (Data, Eq, Show, Typeable)
+ 
+data FnBody = PlpgsqlFnBody Annotation Statement
+            | SqlFnBody Annotation StatementList
+            deriving (Data, Eq, Show, Typeable)
+ 
+data InList = InList Annotation ScalarExprList
+            | InQueryExpr Annotation QueryExpr
+            deriving (Data, Eq, Show, Typeable)
+ 
+data JoinExpr = JoinOn Annotation ScalarExpr
+              | JoinUsing Annotation [String]
+              deriving (Data, Eq, Show, Typeable)
+ 
+data ParamDef = ParamDef Annotation String TypeName
+              | ParamDefTp Annotation TypeName
+              deriving (Data, Eq, Show, Typeable)
+ 
+data QueryExpr = CombineQueryExpr Annotation CombineType QueryExpr
+                                  QueryExpr
+               | Select Annotation Distinct SelectList TableRefList MaybeBoolExpr
+                        ScalarExprList MaybeBoolExpr ScalarExprDirectionPairList
+                        MaybeScalarExpr MaybeScalarExpr
+               | Values Annotation ScalarExprListList
+               | WithQueryExpr Annotation WithQueryList QueryExpr
+               deriving (Data, Eq, Show, Typeable)
+ 
+data RowConstraint = NotNullConstraint Annotation String
+                   | NullConstraint Annotation String
+                   | RowCheckConstraint Annotation String ScalarExpr
+                   | RowPrimaryKeyConstraint Annotation String
+                   | RowReferenceConstraint Annotation String String (Maybe String)
+                                            Cascade Cascade
+                   | RowUniqueConstraint Annotation String
+                   deriving (Data, Eq, Show, Typeable)
+ 
+data SQIdentifier = SQIdentifier Annotation [String]
+                  deriving (Data, Eq, Show, Typeable)
+ 
+data ScalarExpr = BooleanLit Annotation Bool
+                | Case Annotation CaseScalarExprListScalarExprPairList
+                       MaybeScalarExpr
+                | CaseSimple Annotation ScalarExpr
+                             CaseScalarExprListScalarExprPairList MaybeScalarExpr
+                | Cast Annotation ScalarExpr TypeName
+                | Exists Annotation QueryExpr
+                | Extract Annotation ExtractField ScalarExpr
+                | FunCall Annotation String ScalarExprList
+                | Identifier Annotation String
+                | InPredicate Annotation ScalarExpr Bool InList
+                | Interval Annotation String IntervalField (Maybe Int)
+                | LiftOperator Annotation String LiftFlavour ScalarExprList
+                | NullLit Annotation
+                | NumberLit Annotation String
+                | Placeholder Annotation
+                | PositionalArg Annotation Integer
+                | QIdentifier Annotation ScalarExpr String
+                | ScalarSubQuery Annotation QueryExpr
+                | StringLit Annotation String
+                | TypedStringLit Annotation TypeName String
+                | WindowFn Annotation ScalarExpr ScalarExprList ScalarExprList
+                           Direction FrameClause
+                | AntiScalarExpr String
+                deriving (Data, Eq, Show, Typeable)
+ 
+data SelectItem = SelExp Annotation ScalarExpr
+                | SelectItem Annotation ScalarExpr String
+                deriving (Data, Eq, Show, Typeable)
+ 
+data SelectList = SelectList Annotation SelectItemList
+                deriving (Data, Eq, Show, Typeable)
+ 
+data Statement = AlterSequence Annotation String SQIdentifier
+               | AlterTable Annotation String AlterTableActionList
+               | Assignment Annotation ScalarExpr ScalarExpr
+               | Block Annotation (Maybe String) VarDefList StatementList
+               | CaseStatement Annotation ScalarExprListStatementListPairList
+                               StatementList
+               | CaseStatementSimple Annotation ScalarExpr
+                                     ScalarExprListStatementListPairList StatementList
+               | ContinueStatement Annotation (Maybe String)
+               | Copy Annotation String [String] CopySource
+               | CopyData Annotation String
+               | CreateDomain Annotation String TypeName String MaybeBoolExpr
+               | CreateFunction Annotation String ParamDefList TypeName Replace
+                                Language FnBody Volatility
+               | CreateLanguage Annotation String
+               | CreateSequence Annotation String Integer Integer Integer Integer
+                                Integer
+               | CreateTable Annotation String AttributeDefList ConstraintList
+               | CreateTableAs Annotation String QueryExpr
+               | CreateTrigger Annotation String TriggerWhen [TriggerEvent] String
+                               TriggerFire String ScalarExprList
+               | CreateType Annotation String TypeAttributeDefList
+               | CreateView Annotation String (Maybe [String]) QueryExpr
+               | Delete Annotation SQIdentifier TableRefList MaybeBoolExpr
+                        MaybeSelectList
+               | DropFunction Annotation IfExists StringTypeNameListPairList
+                              Cascade
+               | DropSomething Annotation DropType IfExists [String] Cascade
+               | Execute Annotation ScalarExpr
+               | ExitStatement Annotation (Maybe String)
+               | ForIntegerStatement Annotation (Maybe String) ScalarExpr
+                                     ScalarExpr ScalarExpr StatementList
+               | ForQueryStatement Annotation (Maybe String) ScalarExpr QueryExpr
+                                   StatementList
+               | If Annotation ScalarExprStatementListPairList StatementList
+               | Insert Annotation SQIdentifier [String] QueryExpr MaybeSelectList
+               | Into Annotation Bool ScalarExprList Statement
+               | LoopStatement Annotation (Maybe String) StatementList
+               | Notify Annotation String
+               | NullStatement Annotation
+               | Perform Annotation ScalarExpr
+               | QueryStatement Annotation QueryExpr
+               | Raise Annotation RaiseType String ScalarExprList
+               | Return Annotation MaybeScalarExpr
+               | ReturnNext Annotation ScalarExpr
+               | ReturnQuery Annotation QueryExpr
+               | Set Annotation String [SetValue]
+               | Truncate Annotation [String] RestartIdentity Cascade
+               | Update Annotation SQIdentifier ScalarExprList TableRefList
+                        MaybeBoolExpr MaybeSelectList
+               | WhileStatement Annotation (Maybe String) ScalarExpr StatementList
+               | AntiStatement String
+               deriving (Data, Eq, Show, Typeable)
+ 
+data TableAlias = FullAlias Annotation String [String]
+                | NoAlias Annotation
+                | TableAlias Annotation String
+                deriving (Data, Eq, Show, Typeable)
+ 
+data TableRef = FunTref Annotation ScalarExpr TableAlias
+              | JoinTref Annotation TableRef Natural JoinType TableRef OnExpr
+                         TableAlias
+              | SubTref Annotation QueryExpr TableAlias
+              | Tref Annotation SQIdentifier TableAlias
+              deriving (Data, Eq, Show, Typeable)
+ 
+data TypeAttributeDef = TypeAttDef Annotation String TypeName
+                      deriving (Data, Eq, Show, Typeable)
+ 
+data TypeName = ArrayTypeName Annotation TypeName
+              | Prec2TypeName Annotation String Integer Integer
+              | PrecTypeName Annotation String Integer
+              | SetOfTypeName Annotation TypeName
+              | SimpleTypeName Annotation String
+              deriving (Data, Eq, Show, Typeable)
+ 
+data VarDef = ParamAlias Annotation String Integer
+            | VarAlias Annotation String String
+            | VarDef Annotation String TypeName (Maybe ScalarExpr)
+            deriving (Data, Eq, Show, Typeable)
+ 
+data WithQuery = WithQuery Annotation String (Maybe [String])
+                           QueryExpr
+               deriving (Data, Eq, Show, Typeable)
+ 
+type AlterTableActionList = [AlterTableAction]
+ 
+type AttributeDefList = [AttributeDef]
+ 
+type CaseScalarExprListScalarExprPair =
+     (ScalarExprList, ScalarExpr)
+ 
+type CaseScalarExprListScalarExprPairList =
+     [CaseScalarExprListScalarExprPair]
+ 
+type ConstraintList = [Constraint]
+ 
+type MaybeBoolExpr = Maybe ScalarExpr
+ 
+type MaybeScalarExpr = Maybe ScalarExpr
+ 
+type MaybeSelectList = Maybe SelectList
+ 
+type OnExpr = Maybe JoinExpr
+ 
+type ParamDefList = [ParamDef]
+ 
+type RowConstraintList = [RowConstraint]
+ 
+type ScalarExprDirectionPair = (ScalarExpr, Direction)
+ 
+type ScalarExprDirectionPairList = [ScalarExprDirectionPair]
+ 
+type ScalarExprList = [ScalarExpr]
+ 
+type ScalarExprListList = [ScalarExprList]
+ 
+type ScalarExprListStatementListPair =
+     (ScalarExprList, StatementList)
+ 
+type ScalarExprListStatementListPairList =
+     [ScalarExprListStatementListPair]
+ 
+type ScalarExprStatementListPair = (ScalarExpr, StatementList)
+ 
+type ScalarExprStatementListPairList =
+     [ScalarExprStatementListPair]
+ 
+type SelectItemList = [SelectItem]
+ 
+type StatementList = [Statement]
+ 
+type StringTypeNameListPair = (String, TypeNameList)
+ 
+type StringTypeNameListPairList = [StringTypeNameListPair]
+ 
+type TableRefList = [TableRef]
+ 
+type TypeAttributeDefList = [TypeAttributeDef]
+ 
+type TypeNameList = [TypeName]
+ 
+type VarDefList = [VarDef]
+ 
+type WithQueryList = [WithQuery]
+ 
+joinType :: JoinType -> A.JoinType
+joinType x
+  = case x of
+        Inner -> A.Inner
+        LeftOuter -> A.LeftOuter
+        RightOuter -> A.RightOuter
+        FullOuter -> A.FullOuter
+        Cross -> A.Cross
+ 
+copySource :: CopySource -> A.CopySource
+copySource x
+  = case x of
+        CopyFilename a1 -> A.CopyFilename a1
+        Stdin -> A.Stdin
+ 
+setValue :: SetValue -> A.SetValue
+setValue x
+  = case x of
+        SetStr a1 a2 -> A.SetStr a1 a2
+        SetId a1 a2 -> A.SetId a1 a2
+        SetNum a1 a2 -> A.SetNum a1 a2
+ 
+triggerWhen :: TriggerWhen -> A.TriggerWhen
+triggerWhen x
+  = case x of
+        TriggerBefore -> A.TriggerBefore
+        TriggerAfter -> A.TriggerAfter
+ 
+triggerEvent :: TriggerEvent -> A.TriggerEvent
+triggerEvent x
+  = case x of
+        TInsert -> A.TInsert
+        TUpdate -> A.TUpdate
+        TDelete -> A.TDelete
+        AntiTriggerEvent _ -> error "can't convert anti triggerEvent"
+ 
+triggerFire :: TriggerFire -> A.TriggerFire
+triggerFire x
+  = case x of
+        EachRow -> A.EachRow
+        EachStatement -> A.EachStatement
+ 
+raiseType :: RaiseType -> A.RaiseType
+raiseType x
+  = case x of
+        RNotice -> A.RNotice
+        RException -> A.RException
+        RError -> A.RError
+ 
+combineType :: CombineType -> A.CombineType
+combineType x
+  = case x of
+        Except -> A.Except
+        Union -> A.Union
+        Intersect -> A.Intersect
+        UnionAll -> A.UnionAll
+ 
+volatility :: Volatility -> A.Volatility
+volatility x
+  = case x of
+        Volatile -> A.Volatile
+        Stable -> A.Stable
+        Immutable -> A.Immutable
+ 
+language :: Language -> A.Language
+language x
+  = case x of
+        Sql -> A.Sql
+        Plpgsql -> A.Plpgsql
+ 
+dropType :: DropType -> A.DropType
+dropType x
+  = case x of
+        Table -> A.Table
+        Domain -> A.Domain
+        View -> A.View
+        Type -> A.Type
+ 
+cascade :: Cascade -> A.Cascade
+cascade x
+  = case x of
+        Cascade -> A.Cascade
+        Restrict -> A.Restrict
+ 
+direction :: Direction -> A.Direction
+direction x
+  = case x of
+        Asc -> A.Asc
+        Desc -> A.Desc
+ 
+distinct :: Distinct -> A.Distinct
+distinct x
+  = case x of
+        Distinct -> A.Distinct
+        Dupes -> A.Dupes
+ 
+natural :: Natural -> A.Natural
+natural x
+  = case x of
+        Natural -> A.Natural
+        Unnatural -> A.Unnatural
+ 
+ifExists :: IfExists -> A.IfExists
+ifExists x
+  = case x of
+        Require -> A.Require
+        IfExists -> A.IfExists
+ 
+replace :: Replace -> A.Replace
+replace x
+  = case x of
+        Replace -> A.Replace
+        NoReplace -> A.NoReplace
+ 
+restartIdentity :: RestartIdentity -> A.RestartIdentity
+restartIdentity x
+  = case x of
+        RestartIdentity -> A.RestartIdentity
+        ContinueIdentity -> A.ContinueIdentity
+ 
+liftFlavour :: LiftFlavour -> A.LiftFlavour
+liftFlavour x
+  = case x of
+        LiftAny -> A.LiftAny
+        LiftAll -> A.LiftAll
+ 
+intervalField :: IntervalField -> A.IntervalField
+intervalField x
+  = case x of
+        IntervalYear -> A.IntervalYear
+        IntervalMonth -> A.IntervalMonth
+        IntervalDay -> A.IntervalDay
+        IntervalHour -> A.IntervalHour
+        IntervalMinute -> A.IntervalMinute
+        IntervalSecond -> A.IntervalSecond
+        IntervalYearToMonth -> A.IntervalYearToMonth
+        IntervalDayToHour -> A.IntervalDayToHour
+        IntervalDayToMinute -> A.IntervalDayToMinute
+        IntervalDayToSecond -> A.IntervalDayToSecond
+        IntervalHourToMinute -> A.IntervalHourToMinute
+        IntervalHourToSecond -> A.IntervalHourToSecond
+        IntervalMinuteToSecond -> A.IntervalMinuteToSecond
+ 
+extractField :: ExtractField -> A.ExtractField
+extractField x
+  = case x of
+        ExtractCentury -> A.ExtractCentury
+        ExtractDay -> A.ExtractDay
+        ExtractDecade -> A.ExtractDecade
+        ExtractDow -> A.ExtractDow
+        ExtractDoy -> A.ExtractDoy
+        ExtractEpoch -> A.ExtractEpoch
+        ExtractHour -> A.ExtractHour
+        ExtractIsodow -> A.ExtractIsodow
+        ExtractIsoyear -> A.ExtractIsoyear
+        ExtractMicroseconds -> A.ExtractMicroseconds
+        ExtractMillennium -> A.ExtractMillennium
+        ExtractMilliseconds -> A.ExtractMilliseconds
+        ExtractMinute -> A.ExtractMinute
+        ExtractMonth -> A.ExtractMonth
+        ExtractQuarter -> A.ExtractQuarter
+        ExtractSecond -> A.ExtractSecond
+        ExtractTimezone -> A.ExtractTimezone
+        ExtractTimezoneHour -> A.ExtractTimezoneHour
+        ExtractTimezoneMinute -> A.ExtractTimezoneMinute
+        ExtractWeek -> A.ExtractWeek
+        ExtractYear -> A.ExtractYear
+ 
+frameClause :: FrameClause -> A.FrameClause
+frameClause x
+  = case x of
+        FrameUnboundedPreceding -> A.FrameUnboundedPreceding
+        FrameUnboundedFull -> A.FrameUnboundedFull
+        FrameRowsUnboundedPreceding -> A.FrameRowsUnboundedPreceding
+ 
+alterTableAction :: AlterTableAction -> A.AlterTableAction
+alterTableAction x
+  = case x of
+        AddConstraint a1 a2 -> A.AddConstraint a1 (constraint a2)
+        AlterColumnDefault a1 a2 a3 -> A.AlterColumnDefault a1 a2
+                                         (scalarExpr a3)
+ 
+attributeDef :: AttributeDef -> A.AttributeDef
+attributeDef x
+  = case x of
+        AttributeDef a1 a2 a3 a4 a5 -> A.AttributeDef a1 a2 (typeName a3)
+                                         (maybeScalarExpr a4)
+                                         (rowConstraintList a5)
+ 
+constraint :: Constraint -> A.Constraint
+constraint x
+  = case x of
+        CheckConstraint a1 a2 a3 -> A.CheckConstraint a1 a2 (scalarExpr a3)
+        PrimaryKeyConstraint a1 a2 a3 -> A.PrimaryKeyConstraint a1 a2 a3
+        ReferenceConstraint a1 a2 a3 a4 a5 a6 a7 -> A.ReferenceConstraint
+                                                      a1
+                                                      a2
+                                                      a3
+                                                      a4
+                                                      a5
+                                                      (cascade a6)
+                                                      (cascade a7)
+        UniqueConstraint a1 a2 a3 -> A.UniqueConstraint a1 a2 a3
+ 
+fnBody :: FnBody -> A.FnBody
+fnBody x
+  = case x of
+        PlpgsqlFnBody a1 a2 -> A.PlpgsqlFnBody a1 (statement a2)
+        SqlFnBody a1 a2 -> A.SqlFnBody a1 (statementList a2)
+ 
+inList :: InList -> A.InList
+inList x
+  = case x of
+        InList a1 a2 -> A.InList a1 (scalarExprList a2)
+        InQueryExpr a1 a2 -> A.InQueryExpr a1 (queryExpr a2)
+ 
+joinExpr :: JoinExpr -> A.JoinExpr
+joinExpr x
+  = case x of
+        JoinOn a1 a2 -> A.JoinOn a1 (scalarExpr a2)
+        JoinUsing a1 a2 -> A.JoinUsing a1 a2
+ 
+paramDef :: ParamDef -> A.ParamDef
+paramDef x
+  = case x of
+        ParamDef a1 a2 a3 -> A.ParamDef a1 a2 (typeName a3)
+        ParamDefTp a1 a2 -> A.ParamDefTp a1 (typeName a2)
+ 
+queryExpr :: QueryExpr -> A.QueryExpr
+queryExpr x
+  = case x of
+        CombineQueryExpr a1 a2 a3 a4 -> A.CombineQueryExpr a1
+                                          (combineType a2)
+                                          (queryExpr a3)
+                                          (queryExpr a4)
+        Select a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 -> A.Select a1 (distinct a2)
+                                                   (selectList a3)
+                                                   (tableRefList a4)
+                                                   (maybeBoolExpr a5)
+                                                   (scalarExprList a6)
+                                                   (maybeBoolExpr a7)
+                                                   (scalarExprDirectionPairList a8)
+                                                   (maybeScalarExpr a9)
+                                                   (maybeScalarExpr a10)
+        Values a1 a2 -> A.Values a1 (scalarExprListList a2)
+        WithQueryExpr a1 a2 a3 -> A.WithQueryExpr a1 (withQueryList a2)
+                                    (queryExpr a3)
+ 
+rowConstraint :: RowConstraint -> A.RowConstraint
+rowConstraint x
+  = case x of
+        NotNullConstraint a1 a2 -> A.NotNullConstraint a1 a2
+        NullConstraint a1 a2 -> A.NullConstraint a1 a2
+        RowCheckConstraint a1 a2 a3 -> A.RowCheckConstraint a1 a2
+                                         (scalarExpr a3)
+        RowPrimaryKeyConstraint a1 a2 -> A.RowPrimaryKeyConstraint a1 a2
+        RowReferenceConstraint a1 a2 a3 a4 a5
+          a6 -> A.RowReferenceConstraint a1 a2 a3 a4 (cascade a5)
+                  (cascade a6)
+        RowUniqueConstraint a1 a2 -> A.RowUniqueConstraint a1 a2
+ 
+sQIdentifier :: SQIdentifier -> A.SQIdentifier
+sQIdentifier x
+  = case x of
+        SQIdentifier a1 a2 -> A.SQIdentifier a1 a2
+ 
+scalarExpr :: ScalarExpr -> A.ScalarExpr
+scalarExpr x
+  = case x of
+        BooleanLit a1 a2 -> A.BooleanLit a1 a2
+        Case a1 a2 a3 -> A.Case a1
+                           (caseScalarExprListScalarExprPairList a2)
+                           (maybeScalarExpr a3)
+        CaseSimple a1 a2 a3 a4 -> A.CaseSimple a1 (scalarExpr a2)
+                                    (caseScalarExprListScalarExprPairList a3)
+                                    (maybeScalarExpr a4)
+        Cast a1 a2 a3 -> A.Cast a1 (scalarExpr a2) (typeName a3)
+        Exists a1 a2 -> A.Exists a1 (queryExpr a2)
+        Extract a1 a2 a3 -> A.Extract a1 (extractField a2) (scalarExpr a3)
+        FunCall a1 a2 a3 -> A.FunCall a1 a2 (scalarExprList a3)
+        Identifier a1 a2 -> A.Identifier a1 a2
+        InPredicate a1 a2 a3 a4 -> A.InPredicate a1 (scalarExpr a2) a3
+                                     (inList a4)
+        Interval a1 a2 a3 a4 -> A.Interval a1 a2 (intervalField a3) a4
+        LiftOperator a1 a2 a3 a4 -> A.LiftOperator a1 a2 (liftFlavour a3)
+                                      (scalarExprList a4)
+        NullLit a1 -> A.NullLit a1
+        NumberLit a1 a2 -> A.NumberLit a1 a2
+        Placeholder a1 -> A.Placeholder a1
+        PositionalArg a1 a2 -> A.PositionalArg a1 a2
+        QIdentifier a1 a2 a3 -> A.QIdentifier a1 (scalarExpr a2) a3
+        ScalarSubQuery a1 a2 -> A.ScalarSubQuery a1 (queryExpr a2)
+        StringLit a1 a2 -> A.StringLit a1 a2
+        TypedStringLit a1 a2 a3 -> A.TypedStringLit a1 (typeName a2) a3
+        WindowFn a1 a2 a3 a4 a5 a6 -> A.WindowFn a1 (scalarExpr a2)
+                                        (scalarExprList a3)
+                                        (scalarExprList a4)
+                                        (direction a5)
+                                        (frameClause a6)
+        AntiScalarExpr _ -> error "can't convert anti scalarExpr"
+ 
+selectItem :: SelectItem -> A.SelectItem
+selectItem x
+  = case x of
+        SelExp a1 a2 -> A.SelExp a1 (scalarExpr a2)
+        SelectItem a1 a2 a3 -> A.SelectItem a1 (scalarExpr a2) a3
+ 
+selectList :: SelectList -> A.SelectList
+selectList x
+  = case x of
+        SelectList a1 a2 -> A.SelectList a1 (selectItemList a2)
+ 
+statement :: Statement -> A.Statement
+statement x
+  = case x of
+        AlterSequence a1 a2 a3 -> A.AlterSequence a1 a2 (sQIdentifier a3)
+        AlterTable a1 a2 a3 -> A.AlterTable a1 a2 (alterTableActionList a3)
+        Assignment a1 a2 a3 -> A.Assignment a1 (scalarExpr a2)
+                                 (scalarExpr a3)
+        Block a1 a2 a3 a4 -> A.Block a1 a2 (varDefList a3)
+                               (statementList a4)
+        CaseStatement a1 a2 a3 -> A.CaseStatement a1
+                                    (scalarExprListStatementListPairList a2)
+                                    (statementList a3)
+        CaseStatementSimple a1 a2 a3 a4 -> A.CaseStatementSimple a1
+                                             (scalarExpr a2)
+                                             (scalarExprListStatementListPairList a3)
+                                             (statementList a4)
+        ContinueStatement a1 a2 -> A.ContinueStatement a1 a2
+        Copy a1 a2 a3 a4 -> A.Copy a1 a2 a3 (copySource a4)
+        CopyData a1 a2 -> A.CopyData a1 a2
+        CreateDomain a1 a2 a3 a4 a5 -> A.CreateDomain a1 a2 (typeName a3)
+                                         a4
+                                         (maybeBoolExpr a5)
+        CreateFunction a1 a2 a3 a4 a5 a6 a7 a8 -> A.CreateFunction a1 a2
+                                                    (paramDefList a3)
+                                                    (typeName a4)
+                                                    (replace a5)
+                                                    (language a6)
+                                                    (fnBody a7)
+                                                    (volatility a8)
+        CreateLanguage a1 a2 -> A.CreateLanguage a1 a2
+        CreateSequence a1 a2 a3 a4 a5 a6 a7 -> A.CreateSequence a1 a2 a3 a4
+                                                 a5
+                                                 a6
+                                                 a7
+        CreateTable a1 a2 a3 a4 -> A.CreateTable a1 a2
+                                     (attributeDefList a3)
+                                     (constraintList a4)
+        CreateTableAs a1 a2 a3 -> A.CreateTableAs a1 a2 (queryExpr a3)
+        CreateTrigger a1 a2 a3 a4 a5 a6 a7 a8 -> A.CreateTrigger a1 a2
+                                                   (triggerWhen a3)
+                                                   (fmap triggerEvent a4)
+                                                   a5
+                                                   (triggerFire a6)
+                                                   a7
+                                                   (scalarExprList a8)
+        CreateType a1 a2 a3 -> A.CreateType a1 a2 (typeAttributeDefList a3)
+        CreateView a1 a2 a3 a4 -> A.CreateView a1 a2 a3 (queryExpr a4)
+        Delete a1 a2 a3 a4 a5 -> A.Delete a1 (sQIdentifier a2)
+                                   (tableRefList a3)
+                                   (maybeBoolExpr a4)
+                                   (maybeSelectList a5)
+        DropFunction a1 a2 a3 a4 -> A.DropFunction a1 (ifExists a2)
+                                      (stringTypeNameListPairList a3)
+                                      (cascade a4)
+        DropSomething a1 a2 a3 a4 a5 -> A.DropSomething a1 (dropType a2)
+                                          (ifExists a3)
+                                          a4
+                                          (cascade a5)
+        Execute a1 a2 -> A.Execute a1 (scalarExpr a2)
+        ExitStatement a1 a2 -> A.ExitStatement a1 a2
+        ForIntegerStatement a1 a2 a3 a4 a5 a6 -> A.ForIntegerStatement a1
+                                                   a2
+                                                   (scalarExpr a3)
+                                                   (scalarExpr a4)
+                                                   (scalarExpr a5)
+                                                   (statementList a6)
+        ForQueryStatement a1 a2 a3 a4 a5 -> A.ForQueryStatement a1 a2
+                                              (scalarExpr a3)
+                                              (queryExpr a4)
+                                              (statementList a5)
+        If a1 a2 a3 -> A.If a1 (scalarExprStatementListPairList a2)
+                         (statementList a3)
+        Insert a1 a2 a3 a4 a5 -> A.Insert a1 (sQIdentifier a2) a3
+                                   (queryExpr a4)
+                                   (maybeSelectList a5)
+        Into a1 a2 a3 a4 -> A.Into a1 a2 (scalarExprList a3) (statement a4)
+        LoopStatement a1 a2 a3 -> A.LoopStatement a1 a2 (statementList a3)
+        Notify a1 a2 -> A.Notify a1 a2
+        NullStatement a1 -> A.NullStatement a1
+        Perform a1 a2 -> A.Perform a1 (scalarExpr a2)
+        QueryStatement a1 a2 -> A.QueryStatement a1 (queryExpr a2)
+        Raise a1 a2 a3 a4 -> A.Raise a1 (raiseType a2) a3
+                               (scalarExprList a4)
+        Return a1 a2 -> A.Return a1 (maybeScalarExpr a2)
+        ReturnNext a1 a2 -> A.ReturnNext a1 (scalarExpr a2)
+        ReturnQuery a1 a2 -> A.ReturnQuery a1 (queryExpr a2)
+        Set a1 a2 a3 -> A.Set a1 a2 (fmap setValue a3)
+        Truncate a1 a2 a3 a4 -> A.Truncate a1 a2 (restartIdentity a3)
+                                  (cascade a4)
+        Update a1 a2 a3 a4 a5 a6 -> A.Update a1 (sQIdentifier a2)
+                                      (scalarExprList a3)
+                                      (tableRefList a4)
+                                      (maybeBoolExpr a5)
+                                      (maybeSelectList a6)
+        WhileStatement a1 a2 a3 a4 -> A.WhileStatement a1 a2
+                                        (scalarExpr a3)
+                                        (statementList a4)
+        AntiStatement _ -> error "can't convert anti statement"
+ 
+tableAlias :: TableAlias -> A.TableAlias
+tableAlias x
+  = case x of
+        FullAlias a1 a2 a3 -> A.FullAlias a1 a2 a3
+        NoAlias a1 -> A.NoAlias a1
+        TableAlias a1 a2 -> A.TableAlias a1 a2
+ 
+tableRef :: TableRef -> A.TableRef
+tableRef x
+  = case x of
+        FunTref a1 a2 a3 -> A.FunTref a1 (scalarExpr a2) (tableAlias a3)
+        JoinTref a1 a2 a3 a4 a5 a6 a7 -> A.JoinTref a1 (tableRef a2)
+                                           (natural a3)
+                                           (joinType a4)
+                                           (tableRef a5)
+                                           (onExpr a6)
+                                           (tableAlias a7)
+        SubTref a1 a2 a3 -> A.SubTref a1 (queryExpr a2) (tableAlias a3)
+        Tref a1 a2 a3 -> A.Tref a1 (sQIdentifier a2) (tableAlias a3)
+ 
+typeAttributeDef :: TypeAttributeDef -> A.TypeAttributeDef
+typeAttributeDef x
+  = case x of
+        TypeAttDef a1 a2 a3 -> A.TypeAttDef a1 a2 (typeName a3)
+ 
+typeName :: TypeName -> A.TypeName
+typeName x
+  = case x of
+        ArrayTypeName a1 a2 -> A.ArrayTypeName a1 (typeName a2)
+        Prec2TypeName a1 a2 a3 a4 -> A.Prec2TypeName a1 a2 a3 a4
+        PrecTypeName a1 a2 a3 -> A.PrecTypeName a1 a2 a3
+        SetOfTypeName a1 a2 -> A.SetOfTypeName a1 (typeName a2)
+        SimpleTypeName a1 a2 -> A.SimpleTypeName a1 a2
+ 
+varDef :: VarDef -> A.VarDef
+varDef x
+  = case x of
+        ParamAlias a1 a2 a3 -> A.ParamAlias a1 a2 a3
+        VarAlias a1 a2 a3 -> A.VarAlias a1 a2 a3
+        VarDef a1 a2 a3 a4 -> A.VarDef a1 a2 (typeName a3)
+                                (maybeScalarExpr a4)
+ 
+withQuery :: WithQuery -> A.WithQuery
+withQuery x
+  = case x of
+        WithQuery a1 a2 a3 a4 -> A.WithQuery a1 a2 a3 (queryExpr a4)
+ 
+alterTableActionList ::
+                     AlterTableActionList -> A.AlterTableActionList
+alterTableActionList = fmap alterTableAction
+ 
+attributeDefList :: AttributeDefList -> A.AttributeDefList
+attributeDefList = fmap attributeDef
+ 
+caseScalarExprListScalarExprPair ::
+                                 CaseScalarExprListScalarExprPair ->
+                                   A.CaseScalarExprListScalarExprPair
+caseScalarExprListScalarExprPair (a, b)
+  = (scalarExprList a, scalarExpr b)
+ 
+caseScalarExprListScalarExprPairList ::
+                                     CaseScalarExprListScalarExprPairList ->
+                                       A.CaseScalarExprListScalarExprPairList
+caseScalarExprListScalarExprPairList
+  = fmap caseScalarExprListScalarExprPair
+ 
+constraintList :: ConstraintList -> A.ConstraintList
+constraintList = fmap constraint
+ 
+maybeBoolExpr :: MaybeBoolExpr -> A.MaybeBoolExpr
+maybeBoolExpr = fmap scalarExpr
+ 
+maybeScalarExpr :: MaybeScalarExpr -> A.MaybeScalarExpr
+maybeScalarExpr = fmap scalarExpr
+ 
+maybeSelectList :: MaybeSelectList -> A.MaybeSelectList
+maybeSelectList = fmap selectList
+ 
+onExpr :: OnExpr -> A.OnExpr
+onExpr = fmap joinExpr
+ 
+paramDefList :: ParamDefList -> A.ParamDefList
+paramDefList = fmap paramDef
+ 
+rowConstraintList :: RowConstraintList -> A.RowConstraintList
+rowConstraintList = fmap rowConstraint
+ 
+scalarExprDirectionPair ::
+                        ScalarExprDirectionPair -> A.ScalarExprDirectionPair
+scalarExprDirectionPair (a, b) = (scalarExpr a, direction b)
+ 
+scalarExprDirectionPairList ::
+                            ScalarExprDirectionPairList -> A.ScalarExprDirectionPairList
+scalarExprDirectionPairList = fmap scalarExprDirectionPair
+ 
+scalarExprList :: ScalarExprList -> A.ScalarExprList
+scalarExprList = fmap scalarExpr
+ 
+scalarExprListList :: ScalarExprListList -> A.ScalarExprListList
+scalarExprListList = fmap scalarExprList
+ 
+scalarExprListStatementListPair ::
+                                ScalarExprListStatementListPair ->
+                                  A.ScalarExprListStatementListPair
+scalarExprListStatementListPair (a, b)
+  = (scalarExprList a, statementList b)
+ 
+scalarExprListStatementListPairList ::
+                                    ScalarExprListStatementListPairList ->
+                                      A.ScalarExprListStatementListPairList
+scalarExprListStatementListPairList
+  = fmap scalarExprListStatementListPair
+ 
+scalarExprStatementListPair ::
+                            ScalarExprStatementListPair -> A.ScalarExprStatementListPair
+scalarExprStatementListPair (a, b)
+  = (scalarExpr a, statementList b)
+ 
+scalarExprStatementListPairList ::
+                                ScalarExprStatementListPairList ->
+                                  A.ScalarExprStatementListPairList
+scalarExprStatementListPairList = fmap scalarExprStatementListPair
+ 
+selectItemList :: SelectItemList -> A.SelectItemList
+selectItemList = fmap selectItem
+ 
+statementList :: StatementList -> A.StatementList
+statementList = fmap statement
+ 
+stringTypeNameListPair ::
+                       StringTypeNameListPair -> A.StringTypeNameListPair
+stringTypeNameListPair (a, b) = (a, typeNameList b)
+ 
+stringTypeNameListPairList ::
+                           StringTypeNameListPairList -> A.StringTypeNameListPairList
+stringTypeNameListPairList = fmap stringTypeNameListPair
+ 
+tableRefList :: TableRefList -> A.TableRefList
+tableRefList = fmap tableRef
+ 
+typeAttributeDefList ::
+                     TypeAttributeDefList -> A.TypeAttributeDefList
+typeAttributeDefList = fmap typeAttributeDef
+ 
+typeNameList :: TypeNameList -> A.TypeNameList
+typeNameList = fmap typeName
+ 
+varDefList :: VarDefList -> A.VarDefList
+varDefList = fmap varDef
+ 
+withQueryList :: WithQueryList -> A.WithQueryList
+withQueryList = fmap withQuery
diff --git a/src/Database/HsSqlPpp/Internals/AstInternal.hs b/src/Database/HsSqlPpp/Internals/AstInternal.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/HsSqlPpp/Internals/AstInternal.hs
@@ -0,0 +1,14400 @@
+
+
+-- UUAGC 0.9.39.0 (src/Database/HsSqlPpp/Internals/AstInternal.ag)
+module Database.HsSqlPpp.Internals.AstInternal(
+    -- {-# LANGUAGE DeriveDataTypeable,ScopedTypeVariables #-}
+    --from the ag files:
+    --ast nodes
+    Statement (..)
+   ,QueryExpr (..)
+   ,WithQueryList
+   ,WithQuery(..)
+   ,FnBody (..)
+   --,SetClause (..)
+   ,TableRef (..)
+   ,TableAlias(..)
+   ,JoinExpr (..)
+   ,JoinType (..)
+   ,SelectList (..)
+   ,SelectItem (..)
+   ,CopySource (..)
+   ,AttributeDef (..)
+   ,RowConstraint (..)
+   ,AlterTableAction(..)
+   ,Constraint (..)
+   ,TypeAttributeDef (..)
+   ,ParamDef (..)
+   ,VarDef (..)
+   ,RaiseType (..)
+   ,CombineType (..)
+   ,Volatility (..)
+   ,Language (..)
+   ,TypeName (..)
+   ,DropType (..)
+   ,Cascade (..)
+   ,Direction (..)
+   ,Distinct (..)
+   ,Natural (..)
+   ,IfExists (..)
+   ,Replace(..)
+   ,RestartIdentity (..)
+   ,ScalarExpr (..)
+   ,SQIdentifier(..)
+   ,IntervalField(..)
+   ,ExtractField(..)
+   ,FrameClause(..)
+   ,InList (..)
+   ,LiftFlavour(..)
+   ,TriggerWhen(..)
+   ,TriggerEvent(..)
+   ,TriggerFire(..)
+   ,StatementList
+   ,ScalarExprListStatementListPairList
+   ,ScalarExprListStatementListPair
+   ,ScalarExprList
+   ,ParamDefList
+   ,AttributeDefList
+   ,ConstraintList
+   ,TypeAttributeDefList
+   ,TypeNameList
+   ,StringTypeNameListPair
+   ,StringTypeNameListPairList
+   ,ScalarExprStatementListPairList
+   --,SetClauseList
+   ,CaseScalarExprListScalarExprPairList
+   ,MaybeScalarExpr
+   ,TableRefList
+   ,ScalarExprListList
+   ,SelectItemList
+   ,OnExpr
+   ,RowConstraintList
+   ,VarDefList
+   ,ScalarExprStatementListPair
+   ,CaseScalarExprListScalarExprPair
+   ,ScalarExprDirectionPair
+   ,ScalarExprDirectionPairList
+   ,MaybeBoolExpr
+   ,MaybeSelectList
+   ,SetValue(..)
+   ,AlterTableActionList
+   -- typechecking
+   ,typeCheckStatements
+   ,typeCheckParameterizedStatement
+   ,typeCheckScalarExpr
+   ,typeCheckQueryExpr
+   ,fixUpIdentifiers
+   ,fixUpIdentifiersQE
+   ,fixUpIdentifiersSE
+) where
+
+import Data.Maybe
+import Data.List
+import Control.Applicative
+import Data.Data
+import Data.Char
+import Control.Monad.State
+import Control.Arrow
+
+import Data.Generics.Uniplate.Data
+--import Debug.Trace
+
+
+import Database.HsSqlPpp.Internals.TypeType
+import Database.HsSqlPpp.Internals.TypeChecking.TypeConversion
+import Database.HsSqlPpp.Internals.AstAnnotation
+import Database.HsSqlPpp.Internals.Catalog.CatalogInternal
+import Database.HsSqlPpp.Internals.TypeChecking.LocalBindings
+import Database.HsSqlPpp.Internals.TypeChecking.ErrorUtils
+import Database.HsSqlPpp.Utils.Utils
+
+
+
+
+
+-- used for schema qualified identifiers
+-- should be used in more places in the ast
+
+
+data JoinType = Inner | LeftOuter| RightOuter | FullOuter | Cross
+                deriving (Show,Eq,Typeable,Data)
+
+
+data CopySource = CopyFilename String
+                | Stdin
+                  deriving (Show,Eq,Typeable,Data)
+
+
+data SetValue
+    = SetStr Annotation String
+    | SetId Annotation String
+    | SetNum Annotation Double
+      deriving (Show,Eq,Typeable,Data)
+
+
+data TriggerWhen = TriggerBefore | TriggerAfter
+                   deriving (Show,Eq,Typeable,Data)
+data TriggerEvent = TInsert| TUpdate | TDelete
+                    deriving (Show,Eq,Typeable,Data)
+data TriggerFire = EachRow | EachStatement
+                   deriving (Show,Eq,Typeable,Data)
+
+
+data RaiseType = RNotice | RException | RError
+                 deriving (Show,Eq,Typeable,Data)
+
+data CombineType = Except | Union | Intersect | UnionAll
+                   deriving (Show,Eq,Typeable,Data)
+
+data Volatility = Volatile | Stable | Immutable
+                  deriving (Show,Eq,Typeable,Data)
+
+data Language = Sql | Plpgsql
+                deriving (Show,Eq,Typeable,Data)
+
+
+data DropType = Table
+              | Domain
+              | View
+              | Type
+                deriving (Show,Eq,Typeable,Data)
+
+data Cascade = Cascade | Restrict
+               deriving (Show,Eq,Typeable,Data)
+
+data Direction = Asc | Desc
+                 deriving (Show,Eq,Typeable,Data)
+
+data Distinct = Distinct | Dupes
+                deriving (Show,Eq,Typeable,Data)
+
+data Natural = Natural | Unnatural
+               deriving (Show,Eq,Typeable,Data)
+
+data IfExists = Require | IfExists
+                deriving (Show,Eq,Typeable,Data)
+
+data Replace = Replace | NoReplace
+               deriving (Show,Eq,Typeable,Data)
+
+data RestartIdentity = RestartIdentity | ContinueIdentity
+                       deriving (Show,Eq,Typeable,Data)
+
+
+
+data LiftFlavour = LiftAny | LiftAll
+                   deriving (Show,Eq,Typeable,Data)
+
+data IntervalField = IntervalYear
+                   | IntervalMonth
+                   | IntervalDay
+                   | IntervalHour
+                   | IntervalMinute
+                   | IntervalSecond
+                   | IntervalYearToMonth
+                   | IntervalDayToHour
+                   | IntervalDayToMinute
+                   | IntervalDayToSecond
+                   | IntervalHourToMinute
+                   | IntervalHourToSecond
+                   | IntervalMinuteToSecond
+                     deriving (Show,Eq,Typeable,Data)
+
+data ExtractField = ExtractCentury
+                  | ExtractDay
+                  | ExtractDecade
+                  | ExtractDow
+                  | ExtractDoy
+                  | ExtractEpoch
+                  | ExtractHour
+                  | ExtractIsodow
+                  | ExtractIsoyear
+                  | ExtractMicroseconds
+                  | ExtractMillennium
+                  | ExtractMilliseconds
+                  | ExtractMinute
+                  | ExtractMonth
+                  | ExtractQuarter
+                  | ExtractSecond
+                  | ExtractTimezone
+                  | ExtractTimezoneHour
+                  | ExtractTimezoneMinute
+                  | ExtractWeek
+                  | ExtractYear
+                    deriving (Show,Eq,Typeable,Data)
+
+
+
+data FrameClause = FrameUnboundedPreceding
+                 | FrameUnboundedFull
+                 | FrameRowsUnboundedPreceding
+                   deriving (Show,Eq,Typeable,Data)
+
+
+-- | Takes an ast, checks against catalog passed, and adds
+--   annotations, including types, type errors, and statement info.
+--   Returns the updated catalog as well as the annotated ast.
+typeCheckStatements :: Catalog -> [Statement] -> (Catalog,[Statement])
+typeCheckStatements cat sts =
+    let t = sem_Root (Root $ fixUpIdentifiers cat sts)
+        ta = wrap_Root t Inh_Root {cat_Inh_Root = cat
+                                  ,lib_Inh_Root = emptyBindings
+                                  ,idenv_Inh_Root = emptyIDEnv}
+        tl = annotatedTree_Syn_Root ta
+        cat1 = producedCat_Syn_Root ta
+    in case tl of
+         Root r -> (cat1,r)
+
+typeCheckQueryExpr :: Catalog -> QueryExpr -> QueryExpr
+typeCheckQueryExpr cat qe =
+   let (_,[QueryStatement _ qe']) = typeCheckStatements cat [QueryStatement emptyAnnotation qe]
+   in qe'
+
+-- | Unfinished version of type check which can type check an
+-- individual statement with ? or positional arg placeholders in
+-- it. Will error if the statement isn't select, update, insert or
+-- delete. For use in type checking embedded parameterized
+-- statements. Does all typechecking and annotation that the regular
+-- typecheck does.
+typeCheckParameterizedStatement :: Catalog -> Statement -> Either String Statement
+typeCheckParameterizedStatement cat st =
+    case st of
+      QueryStatement _ _ -> tc
+      Insert _ _ _ _ _ -> tc
+      Update _ _ _ _ _ _ -> tc
+      Delete _ _ _ _ _ -> tc
+      _ -> Left "requires select, update, insert or delete statement"
+    where
+      tc = let t = sem_Root (Root $ fixUpIdentifiers cat [st])
+               ta = wrap_Root t Inh_Root {cat_Inh_Root = cat
+                                         ,lib_Inh_Root = emptyBindings
+                                         ,idenv_Inh_Root = emptyIDEnv}
+               tl = annotatedTree_Syn_Root ta
+               --cat1 = producedCat_Syn_Root ta
+           in case tl of
+                Root [st1] -> Right st1
+                _ -> error "impossible happened in typeCheckPS!"
+
+
+-- | Testing utility, mainly used to check an expression for type errors
+-- or to get its type.
+typeCheckScalarExpr :: Catalog -> ScalarExpr -> ScalarExpr
+typeCheckScalarExpr cat ex =
+    let t = sem_ScalarExprRoot (ScalarExprRoot $ fixUpIdentifiersSE cat ex)
+        rt = (annotatedTree_Syn_ScalarExprRoot
+              (wrap_ScalarExprRoot t Inh_ScalarExprRoot {cat_Inh_ScalarExprRoot = cat
+                                                        ,lib_Inh_ScalarExprRoot = emptyBindings
+                                                        ,idenv_Inh_ScalarExprRoot = emptyIDEnv}))
+    in case rt of
+         ScalarExprRoot e -> e
+
+
+
+
+data IDEnv = IDEnv [(String, [String])]
+             deriving Show
+emptyIDEnv :: IDEnv
+emptyIDEnv = IDEnv []
+
+qualifyID :: IDEnv -> String -> Maybe (String,String)
+qualifyID (IDEnv env) i =
+  q env i
+  where
+    q [] _ = Nothing
+    q ((t,cs):es) i' =
+       if i' `elem` cs
+       then Just (t,i')
+       else q es i'
+
+makeIDEnv :: String -- range qualifier
+          -> [String] -- attribute names
+          -> IDEnv
+makeIDEnv t c = IDEnv [(t,c)]
+
+makeIDEnvP :: [(String,[String])] -> IDEnv
+makeIDEnvP x  = IDEnv x
+
+unimplementedIDEnv :: IDEnv
+unimplementedIDEnv = IDEnv []
+
+joinIDEnvs :: IDEnv -> IDEnv -> IDEnv
+joinIDEnvs (IDEnv a) (IDEnv b) = IDEnv $ a ++ b
+
+expandStar :: IDEnv -> Maybe String --qualifier
+           -> [(String,String)]
+expandStar (IDEnv es) Nothing =
+  flip concatMap es $ \(t,cs) -> map (t,) cs
+expandStar (IDEnv es) (Just t) =
+  maybe [(t,"*")] (map (t,)) $ lookup t es
+
+
+
+
+
+makeSelExps :: Annotation -> Annotation -> Annotation -> [(String,String)] -> [SelectItem]
+makeSelExps sea a0 a1 is =
+  flip map is $ \(q,c) -> addSIAlias $ SelExp sea $ QIdentifier a0 (Identifier a1 q) c
+
+addSIAlias :: SelectItem -> SelectItem
+addSIAlias s@(SelectItem _ _ _) = s
+addSIAlias (SelExp ann ex) = SelectItem ann ex $ getColName ex
+  where
+    getColName (Identifier _ i) = i
+    getColName (QIdentifier _ _ i) = i
+    getColName (FunCall _ f _) | not (isOperatorName f) = f
+    getColName (Cast _ _ (SimpleTypeName _ tn)) = tn
+    getColName (WindowFn _ (FunCall _ f _) _ _ _ _) = f
+    getColName _ = "?column?"
+
+
+
+
+
+
+
+
+-- | transform the tree by converting * to explicit lists of columns and adding qualifiers to all column references
+fixUpIdentifiers :: Catalog -> [Statement] -> [Statement]
+fixUpIdentifiers cat sts =
+    let t = sem_Root (Root sts)
+        ta = wrap_Root t Inh_Root {cat_Inh_Root = cat
+                                  ,lib_Inh_Root = emptyBindings
+                                  ,idenv_Inh_Root = emptyIDEnv}
+        tl = fixedUpIdentifiersTree_Syn_Root ta
+    in case tl of
+         Root r -> countHack r
+
+fixUpIdentifiersSE :: Catalog -> ScalarExpr -> ScalarExpr
+fixUpIdentifiersSE cat sts =
+    let t = sem_ScalarExprRoot (ScalarExprRoot sts)
+        ta = wrap_ScalarExprRoot t Inh_ScalarExprRoot {cat_Inh_ScalarExprRoot = cat
+                                  ,lib_Inh_ScalarExprRoot = emptyBindings
+                                  ,idenv_Inh_ScalarExprRoot = emptyIDEnv}
+        tl = fixedUpIdentifiersTree_Syn_ScalarExprRoot ta
+    in case tl of
+         ScalarExprRoot r -> countHack r
+
+fixUpIdentifiersQE :: Catalog -> QueryExpr -> QueryExpr
+fixUpIdentifiersQE cat qe =
+    let [QueryStatement _ qe'] = fixUpIdentifiers cat [QueryStatement emptyAnnotation qe]
+    in countHack qe'
+
+-- small hack to convert count(*) into count(True). Should be fixed when
+-- a more general approach to aggregates is written
+
+countHack :: Data a => a -> a
+countHack = transformBi $ \x -> case x of
+              FunCall a "count" [Identifier ia "*"] ->
+                FunCall a "count" [BooleanLit ia True]
+              x1 -> x1
+
+
+
+doAlias :: TableAlias -> [(String,[String])] -> ([(String,[String])],TableAlias)
+doAlias (NoAlias a) [] = ([],NoAlias a)
+doAlias (NoAlias a) cs@((t,_):ts) = if all (==t) $ map fst ts
+                                then (cs,FullAlias a t $ concatMap snd cs)
+                                else (cs,NoAlias a)
+doAlias (TableAlias a t) cs = let cs' = concatMap snd cs
+                              in ([(t, cs')], FullAlias a t cs')
+doAlias f@(FullAlias _ t cs) _ = ([(t,cs)], f)
+
+
+
+addTypeErrors :: Data a => [TypeError] -> a -> a
+addTypeErrors es el = updateAnnotation u el
+                      where
+                        u a = a {errs = errs a ++ es}
+
+setTypeAddErrors :: Data a => Et -> a -> a
+setTypeAddErrors et el = updateAnnotation (setTypeAddErrorsA et) el
+
+setTypeAddErrorsA :: Et -> Annotation -> Annotation
+setTypeAddErrorsA et a =
+    let a1 = a {errs = errs a ++ tes et}
+    in case atype a1 of
+         Just _ -> a1 {errs = errs a
+                             ++ [InternalError $ "tried to set type a second time - " ++ show (etmt et)]}
+         Nothing -> a1 {atype = etmt et}
+
+allJust :: [Maybe a] -> Maybe [a]
+allJust ts = sequence ts
+
+-- bit dogdy, needs some thought
+-- this is just to convert the new approach of using "." as an operator
+-- to construct names, with the old approach which stuck the whole lot
+-- in a string
+getName :: ScalarExpr -> String
+getName (Identifier _ i) = i
+getName (FunCall _ "." [Identifier _ _,Identifier _ i]) = i
+getName (FunCall _ "." [_,a]) = getName a
+getName x = error $ "internal error getName called on: " ++ show x
+
+getTName :: SQIdentifier -> String
+getTName (SQIdentifier _ x@(_:_)) = last x
+getTName x = error $ "internal error getName called on: " ++ show x
+
+
+unwrapLookup :: (String,[String],Type) -> Type
+unwrapLookup (_,_,t) = t
+
+allAtts :: ([(String,Type)],[(String,Type)]) -> [(String,Type)]
+allAtts (a,b) = a ++ b
+
+
+
+typeCheckValuesExpr :: Catalog -> [[Maybe Type]] -> Either [TypeError] Type
+typeCheckValuesExpr cat rowsTs = do
+        rts <- lmt $ allJust $ map allJust rowsTs
+        let colNames = zipWith (++)
+                           (repeat "column")
+                           (map show [1..length $ head rowsTs])
+        unionRelTypes cat rts colNames
+
+
+typeCheckCombineSelect :: Catalog -> Type -> Type -> Either [TypeError] Type
+typeCheckCombineSelect cat v1 v2 = do
+    u1 <- unwrapSetOfComposite v1
+    let colNames = map fst u1
+    u2 <- unwrapSetOfComposite v2
+    let colTypes1 = map snd u1
+    let colTypes2 = map snd u2
+    unionRelTypes cat [colTypes1,colTypes2] colNames
+
+unionRelTypes :: Catalog -> [[Type]] -> [String] -> Either [TypeError] Type
+unionRelTypes cat rowsTs colNames =
+  let lengths = map length rowsTs
+  in case () of
+             _ | null rowsTs ->
+                   Left [NoRowsGivenForValues]
+               | not (all (==head lengths) lengths) ->
+                   Left [ValuesListsMustBeSameLength]
+               | otherwise ->
+                   --i don't think this propagates all the errors, just the first set
+                   mapM (resolveResultSetType cat) (transpose rowsTs) >>=
+                     (return . SetOfType . CompositeType . zip colNames)
+
+
+
+
+
+
+{-
+convert a function call into a [String,[(string,type)]] list for use
+in a tableref context
+first consideration is the alias: if there is an alias in the select,
+e.g. select * from generate_series(1,2) x;  (alias is x)
+we use that, otherwise we use the name of the function
+second consideration is the attributes coming out, roughly speaking
+we have to convert an arbitrary type to a relation type
+if we have a relation valued function, we don't need to do anything
+if we have a setof non composite, we lift the single type to an
+attribute, using the function name for the attribute name
+if we have a non setof, we lift the single type to an attribute and
+then relation, using the function name for the attribute name
+need to check to see what should happen with arrayof
+
+-}
+funIdens :: Catalog -> String -> ScalarExpr -> Maybe Type -> Either [TypeError] (String,[(String,Type)])
+funIdens cat alias fnVal ft = do
+   errorWhen (case fnVal of
+                FunCall _ _ _ -> False
+                _ -> True)
+             [ContextError "FunCall"]
+   let (FunCall _ fnName _) = fnVal
+       cn = if alias /= ""
+                           then alias
+                           else fnName
+   attrs <- do
+     fnt <- lmt ft
+     case fnt of
+       SetOfType (NamedCompositeType t) -> catCompositePublicAttrs cat [] t
+       SetOfType x -> return [(cn,x)]
+       y -> return [(cn,y)]
+   return (cn, attrs)
+
+getAlias :: String -> TableAlias -> String
+getAlias def alias =
+  case alias of
+    NoAlias _ -> def
+    TableAlias _ t -> t
+    FullAlias _ t _ -> t
+
+
+
+{-data SiType = SiType (String,Maybe Type)
+            | SiStarType [(String,Maybe Type)]-}
+
+
+--unwrapSetofs :: [(String,Type)] -> [(String,Type)]
+--unwrapSetofs = map (\(n,t) -> (n, unwrapSetof t))
+
+unwrapSetof :: Type -> Type
+unwrapSetof (SetOfType u) = u
+unwrapSetof v = v
+
+
+
+defaultSystemColumns :: [(String,Type)]
+defaultSystemColumns = [("tableoid", ScalarType "oid")
+                       ,("cmax", ScalarType "cid")
+                       ,("xmax", ScalarType "xid")
+                       ,("cmin", ScalarType "cid")
+                       ,("xmin", ScalarType "xid")
+                       ,("ctid", ScalarType "tid")]
+
+
+data ParamName = NamedParam Int String
+               | UnnamedParam Int
+
+
+getPlaceholderTypes :: Data a => a -> [Maybe Type]
+getPlaceholderTypes ex =
+    [infType (getAnnotation x) | x <- universeBi ex
+                               , isPlaceholder x]
+    where
+      isPlaceholder e = case e of
+                          PositionalArg _ _ -> True
+                          Placeholder _ -> True
+                          _ -> False
+
+-- AlterTableAction --------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+   alternatives:
+      alternative AddConstraint:
+         child ann            : {Annotation}
+         child con            : Constraint 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative AlterColumnDefault:
+         child ann            : {Annotation}
+         child nm             : {String}
+         child def            : ScalarExpr 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+data AlterTableAction  = AddConstraint (Annotation) (Constraint ) 
+                       | AlterColumnDefault (Annotation) (String) (ScalarExpr ) 
+                       deriving ( Data,Eq,Show,Typeable)
+-- cata
+sem_AlterTableAction :: AlterTableAction  ->
+                        T_AlterTableAction 
+sem_AlterTableAction (AddConstraint _ann _con )  =
+    (sem_AlterTableAction_AddConstraint _ann (sem_Constraint _con ) )
+sem_AlterTableAction (AlterColumnDefault _ann _nm _def )  =
+    (sem_AlterTableAction_AlterColumnDefault _ann _nm (sem_ScalarExpr _def ) )
+-- semantic domain
+type T_AlterTableAction  = Catalog ->
+                           IDEnv ->
+                           LocalBindings ->
+                           ( AlterTableAction ,AlterTableAction ,AlterTableAction )
+data Inh_AlterTableAction  = Inh_AlterTableAction {cat_Inh_AlterTableAction :: Catalog,idenv_Inh_AlterTableAction :: IDEnv,lib_Inh_AlterTableAction :: LocalBindings}
+data Syn_AlterTableAction  = Syn_AlterTableAction {annotatedTree_Syn_AlterTableAction :: AlterTableAction ,fixedUpIdentifiersTree_Syn_AlterTableAction :: AlterTableAction ,originalTree_Syn_AlterTableAction :: AlterTableAction }
+wrap_AlterTableAction :: T_AlterTableAction  ->
+                         Inh_AlterTableAction  ->
+                         Syn_AlterTableAction 
+wrap_AlterTableAction sem (Inh_AlterTableAction _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_AlterTableAction _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
+sem_AlterTableAction_AddConstraint :: Annotation ->
+                                      T_Constraint  ->
+                                      T_AlterTableAction 
+sem_AlterTableAction_AddConstraint ann_ con_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: AlterTableAction 
+              _lhsOfixedUpIdentifiersTree :: AlterTableAction 
+              _lhsOoriginalTree :: AlterTableAction 
+              _conOcat :: Catalog
+              _conOidenv :: IDEnv
+              _conOlib :: LocalBindings
+              _conIannotatedTree :: Constraint 
+              _conIfixedUpIdentifiersTree :: Constraint 
+              _conIoriginalTree :: Constraint 
+              -- self rule
+              _annotatedTree =
+                  AddConstraint ann_ _conIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  AddConstraint ann_ _conIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  AddConstraint ann_ _conIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _conOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _conOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _conOlib =
+                  _lhsIlib
+              ( _conIannotatedTree,_conIfixedUpIdentifiersTree,_conIoriginalTree) =
+                  con_ _conOcat _conOidenv _conOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+sem_AlterTableAction_AlterColumnDefault :: Annotation ->
+                                           String ->
+                                           T_ScalarExpr  ->
+                                           T_AlterTableAction 
+sem_AlterTableAction_AlterColumnDefault ann_ nm_ def_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _defOexpectedType :: (Maybe Type)
+              _lhsOannotatedTree :: AlterTableAction 
+              _lhsOfixedUpIdentifiersTree :: AlterTableAction 
+              _lhsOoriginalTree :: AlterTableAction 
+              _defOcat :: Catalog
+              _defOidenv :: IDEnv
+              _defOlib :: LocalBindings
+              _defIannotatedTree :: ScalarExpr 
+              _defIfixedUpIdentifiersTree :: ScalarExpr 
+              _defIoriginalTree :: ScalarExpr 
+              _defIuType :: (Maybe Type)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 72, column 26)
+              _defOexpectedType =
+                  Nothing
+              -- self rule
+              _annotatedTree =
+                  AlterColumnDefault ann_ nm_ _defIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  AlterColumnDefault ann_ nm_ _defIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  AlterColumnDefault ann_ nm_ _defIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _defOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _defOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _defOlib =
+                  _lhsIlib
+              ( _defIannotatedTree,_defIfixedUpIdentifiersTree,_defIoriginalTree,_defIuType) =
+                  def_ _defOcat _defOexpectedType _defOidenv _defOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+-- AlterTableActionList ----------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+   alternatives:
+      alternative Cons:
+         child hd             : AlterTableAction 
+         child tl             : AlterTableActionList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Nil:
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+type AlterTableActionList  = [AlterTableAction ]
+-- cata
+sem_AlterTableActionList :: AlterTableActionList  ->
+                            T_AlterTableActionList 
+sem_AlterTableActionList list  =
+    (Prelude.foldr sem_AlterTableActionList_Cons sem_AlterTableActionList_Nil (Prelude.map sem_AlterTableAction list) )
+-- semantic domain
+type T_AlterTableActionList  = Catalog ->
+                               IDEnv ->
+                               LocalBindings ->
+                               ( AlterTableActionList ,AlterTableActionList ,AlterTableActionList )
+data Inh_AlterTableActionList  = Inh_AlterTableActionList {cat_Inh_AlterTableActionList :: Catalog,idenv_Inh_AlterTableActionList :: IDEnv,lib_Inh_AlterTableActionList :: LocalBindings}
+data Syn_AlterTableActionList  = Syn_AlterTableActionList {annotatedTree_Syn_AlterTableActionList :: AlterTableActionList ,fixedUpIdentifiersTree_Syn_AlterTableActionList :: AlterTableActionList ,originalTree_Syn_AlterTableActionList :: AlterTableActionList }
+wrap_AlterTableActionList :: T_AlterTableActionList  ->
+                             Inh_AlterTableActionList  ->
+                             Syn_AlterTableActionList 
+wrap_AlterTableActionList sem (Inh_AlterTableActionList _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_AlterTableActionList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
+sem_AlterTableActionList_Cons :: T_AlterTableAction  ->
+                                 T_AlterTableActionList  ->
+                                 T_AlterTableActionList 
+sem_AlterTableActionList_Cons hd_ tl_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: AlterTableActionList 
+              _lhsOfixedUpIdentifiersTree :: AlterTableActionList 
+              _lhsOoriginalTree :: AlterTableActionList 
+              _hdOcat :: Catalog
+              _hdOidenv :: IDEnv
+              _hdOlib :: LocalBindings
+              _tlOcat :: Catalog
+              _tlOidenv :: IDEnv
+              _tlOlib :: LocalBindings
+              _hdIannotatedTree :: AlterTableAction 
+              _hdIfixedUpIdentifiersTree :: AlterTableAction 
+              _hdIoriginalTree :: AlterTableAction 
+              _tlIannotatedTree :: AlterTableActionList 
+              _tlIfixedUpIdentifiersTree :: AlterTableActionList 
+              _tlIoriginalTree :: AlterTableActionList 
+              -- self rule
+              _annotatedTree =
+                  (:) _hdIannotatedTree _tlIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  (:) _hdIoriginalTree _tlIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _hdOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _hdOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _hdOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _tlOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _tlOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _tlOlib =
+                  _lhsIlib
+              ( _hdIannotatedTree,_hdIfixedUpIdentifiersTree,_hdIoriginalTree) =
+                  hd_ _hdOcat _hdOidenv _hdOlib 
+              ( _tlIannotatedTree,_tlIfixedUpIdentifiersTree,_tlIoriginalTree) =
+                  tl_ _tlOcat _tlOidenv _tlOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+sem_AlterTableActionList_Nil :: T_AlterTableActionList 
+sem_AlterTableActionList_Nil  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: AlterTableActionList 
+              _lhsOfixedUpIdentifiersTree :: AlterTableActionList 
+              _lhsOoriginalTree :: AlterTableActionList 
+              -- self rule
+              _annotatedTree =
+                  []
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  []
+              -- self rule
+              _originalTree =
+                  []
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+-- AttributeDef ------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         attrName             : String
+         fixedUpIdentifiersTree : SELF 
+         namedType            : Maybe Type
+         originalTree         : SELF 
+   alternatives:
+      alternative AttributeDef:
+         child ann            : {Annotation}
+         child name           : {String}
+         child typ            : TypeName 
+         child def            : MaybeScalarExpr 
+         child cons           : RowConstraintList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+data AttributeDef  = AttributeDef (Annotation) (String) (TypeName ) (MaybeScalarExpr ) (RowConstraintList ) 
+                   deriving ( Data,Eq,Show,Typeable)
+-- cata
+sem_AttributeDef :: AttributeDef  ->
+                    T_AttributeDef 
+sem_AttributeDef (AttributeDef _ann _name _typ _def _cons )  =
+    (sem_AttributeDef_AttributeDef _ann _name (sem_TypeName _typ ) (sem_MaybeScalarExpr _def ) (sem_RowConstraintList _cons ) )
+-- semantic domain
+type T_AttributeDef  = Catalog ->
+                       IDEnv ->
+                       LocalBindings ->
+                       ( AttributeDef ,String,AttributeDef ,(Maybe Type),AttributeDef )
+data Inh_AttributeDef  = Inh_AttributeDef {cat_Inh_AttributeDef :: Catalog,idenv_Inh_AttributeDef :: IDEnv,lib_Inh_AttributeDef :: LocalBindings}
+data Syn_AttributeDef  = Syn_AttributeDef {annotatedTree_Syn_AttributeDef :: AttributeDef ,attrName_Syn_AttributeDef :: String,fixedUpIdentifiersTree_Syn_AttributeDef :: AttributeDef ,namedType_Syn_AttributeDef :: (Maybe Type),originalTree_Syn_AttributeDef :: AttributeDef }
+wrap_AttributeDef :: T_AttributeDef  ->
+                     Inh_AttributeDef  ->
+                     Syn_AttributeDef 
+wrap_AttributeDef sem (Inh_AttributeDef _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOattrName,_lhsOfixedUpIdentifiersTree,_lhsOnamedType,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_AttributeDef _lhsOannotatedTree _lhsOattrName _lhsOfixedUpIdentifiersTree _lhsOnamedType _lhsOoriginalTree ))
+sem_AttributeDef_AttributeDef :: Annotation ->
+                                 String ->
+                                 T_TypeName  ->
+                                 T_MaybeScalarExpr  ->
+                                 T_RowConstraintList  ->
+                                 T_AttributeDef 
+sem_AttributeDef_AttributeDef ann_ name_ typ_ def_ cons_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOattrName :: String
+              _lhsOnamedType :: (Maybe Type)
+              _consOlib :: LocalBindings
+              _lhsOannotatedTree :: AttributeDef 
+              _lhsOfixedUpIdentifiersTree :: AttributeDef 
+              _lhsOoriginalTree :: AttributeDef 
+              _typOcat :: Catalog
+              _typOidenv :: IDEnv
+              _typOlib :: LocalBindings
+              _defOcat :: Catalog
+              _defOidenv :: IDEnv
+              _defOlib :: LocalBindings
+              _consOcat :: Catalog
+              _consOidenv :: IDEnv
+              _typIannotatedTree :: TypeName 
+              _typIfixedUpIdentifiersTree :: TypeName 
+              _typInamedType :: (Maybe Type)
+              _typIoriginalTree :: TypeName 
+              _defIannotatedTree :: MaybeScalarExpr 
+              _defIfixedUpIdentifiersTree :: MaybeScalarExpr 
+              _defIoriginalTree :: MaybeScalarExpr 
+              _defIuType :: (Maybe Type)
+              _consIannotatedTree :: RowConstraintList 
+              _consIfixedUpIdentifiersTree :: RowConstraintList 
+              _consIoriginalTree :: RowConstraintList 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/CreateTable.ag"(line 83, column 9)
+              _lhsOattrName =
+                  map toLower name_
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/CreateTable.ag"(line 84, column 9)
+              _lhsOnamedType =
+                  _typInamedType
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/CreateTable.ag"(line 98, column 9)
+              _consOlib =
+                  either (const _lhsIlib) id $ do
+                  t <- lmt _typInamedType
+                  lbUpdate _lhsIcat
+                           (LBIds "attribute def" Nothing
+                                  [(name_, t)]) _lhsIlib
+              -- self rule
+              _annotatedTree =
+                  AttributeDef ann_ name_ _typIannotatedTree _defIannotatedTree _consIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  AttributeDef ann_ name_ _typIfixedUpIdentifiersTree _defIfixedUpIdentifiersTree _consIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  AttributeDef ann_ name_ _typIoriginalTree _defIoriginalTree _consIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _typOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _typOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _typOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _defOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _defOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _defOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _consOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _consOidenv =
+                  _lhsIidenv
+              ( _typIannotatedTree,_typIfixedUpIdentifiersTree,_typInamedType,_typIoriginalTree) =
+                  typ_ _typOcat _typOidenv _typOlib 
+              ( _defIannotatedTree,_defIfixedUpIdentifiersTree,_defIoriginalTree,_defIuType) =
+                  def_ _defOcat _defOidenv _defOlib 
+              ( _consIannotatedTree,_consIfixedUpIdentifiersTree,_consIoriginalTree) =
+                  cons_ _consOcat _consOidenv _consOlib 
+          in  ( _lhsOannotatedTree,_lhsOattrName,_lhsOfixedUpIdentifiersTree,_lhsOnamedType,_lhsOoriginalTree)))
+-- AttributeDefList --------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         attrs                : [(String, Maybe Type)]
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+   alternatives:
+      alternative Cons:
+         child hd             : AttributeDef 
+         child tl             : AttributeDefList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Nil:
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+type AttributeDefList  = [AttributeDef ]
+-- cata
+sem_AttributeDefList :: AttributeDefList  ->
+                        T_AttributeDefList 
+sem_AttributeDefList list  =
+    (Prelude.foldr sem_AttributeDefList_Cons sem_AttributeDefList_Nil (Prelude.map sem_AttributeDef list) )
+-- semantic domain
+type T_AttributeDefList  = Catalog ->
+                           IDEnv ->
+                           LocalBindings ->
+                           ( AttributeDefList ,([(String, Maybe Type)]),AttributeDefList ,AttributeDefList )
+data Inh_AttributeDefList  = Inh_AttributeDefList {cat_Inh_AttributeDefList :: Catalog,idenv_Inh_AttributeDefList :: IDEnv,lib_Inh_AttributeDefList :: LocalBindings}
+data Syn_AttributeDefList  = Syn_AttributeDefList {annotatedTree_Syn_AttributeDefList :: AttributeDefList ,attrs_Syn_AttributeDefList :: ([(String, Maybe Type)]),fixedUpIdentifiersTree_Syn_AttributeDefList :: AttributeDefList ,originalTree_Syn_AttributeDefList :: AttributeDefList }
+wrap_AttributeDefList :: T_AttributeDefList  ->
+                         Inh_AttributeDefList  ->
+                         Syn_AttributeDefList 
+wrap_AttributeDefList sem (Inh_AttributeDefList _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOattrs,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_AttributeDefList _lhsOannotatedTree _lhsOattrs _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
+sem_AttributeDefList_Cons :: T_AttributeDef  ->
+                             T_AttributeDefList  ->
+                             T_AttributeDefList 
+sem_AttributeDefList_Cons hd_ tl_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOattrs :: ([(String, Maybe Type)])
+              _lhsOannotatedTree :: AttributeDefList 
+              _lhsOfixedUpIdentifiersTree :: AttributeDefList 
+              _lhsOoriginalTree :: AttributeDefList 
+              _hdOcat :: Catalog
+              _hdOidenv :: IDEnv
+              _hdOlib :: LocalBindings
+              _tlOcat :: Catalog
+              _tlOidenv :: IDEnv
+              _tlOlib :: LocalBindings
+              _hdIannotatedTree :: AttributeDef 
+              _hdIattrName :: String
+              _hdIfixedUpIdentifiersTree :: AttributeDef 
+              _hdInamedType :: (Maybe Type)
+              _hdIoriginalTree :: AttributeDef 
+              _tlIannotatedTree :: AttributeDefList 
+              _tlIattrs :: ([(String, Maybe Type)])
+              _tlIfixedUpIdentifiersTree :: AttributeDefList 
+              _tlIoriginalTree :: AttributeDefList 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/CreateTable.ag"(line 88, column 12)
+              _lhsOattrs =
+                  (_hdIattrName, _hdInamedType) : _tlIattrs
+              -- self rule
+              _annotatedTree =
+                  (:) _hdIannotatedTree _tlIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  (:) _hdIoriginalTree _tlIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _hdOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _hdOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _hdOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _tlOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _tlOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _tlOlib =
+                  _lhsIlib
+              ( _hdIannotatedTree,_hdIattrName,_hdIfixedUpIdentifiersTree,_hdInamedType,_hdIoriginalTree) =
+                  hd_ _hdOcat _hdOidenv _hdOlib 
+              ( _tlIannotatedTree,_tlIattrs,_tlIfixedUpIdentifiersTree,_tlIoriginalTree) =
+                  tl_ _tlOcat _tlOidenv _tlOlib 
+          in  ( _lhsOannotatedTree,_lhsOattrs,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+sem_AttributeDefList_Nil :: T_AttributeDefList 
+sem_AttributeDefList_Nil  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOattrs :: ([(String, Maybe Type)])
+              _lhsOannotatedTree :: AttributeDefList 
+              _lhsOfixedUpIdentifiersTree :: AttributeDefList 
+              _lhsOoriginalTree :: AttributeDefList 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/CreateTable.ag"(line 89, column 11)
+              _lhsOattrs =
+                  []
+              -- self rule
+              _annotatedTree =
+                  []
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  []
+              -- self rule
+              _originalTree =
+                  []
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOattrs,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+-- CaseScalarExprListScalarExprPair ----------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+         thenType             : Maybe Type
+         whenTypes            : [Maybe Type]
+   alternatives:
+      alternative Tuple:
+         child x1             : ScalarExprList 
+         child x2             : ScalarExpr 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+type CaseScalarExprListScalarExprPair  = ( ScalarExprList ,ScalarExpr )
+-- cata
+sem_CaseScalarExprListScalarExprPair :: CaseScalarExprListScalarExprPair  ->
+                                        T_CaseScalarExprListScalarExprPair 
+sem_CaseScalarExprListScalarExprPair ( x1,x2)  =
+    (sem_CaseScalarExprListScalarExprPair_Tuple (sem_ScalarExprList x1 ) (sem_ScalarExpr x2 ) )
+-- semantic domain
+type T_CaseScalarExprListScalarExprPair  = Catalog ->
+                                           IDEnv ->
+                                           LocalBindings ->
+                                           ( CaseScalarExprListScalarExprPair ,CaseScalarExprListScalarExprPair ,CaseScalarExprListScalarExprPair ,(Maybe Type),([Maybe Type]))
+data Inh_CaseScalarExprListScalarExprPair  = Inh_CaseScalarExprListScalarExprPair {cat_Inh_CaseScalarExprListScalarExprPair :: Catalog,idenv_Inh_CaseScalarExprListScalarExprPair :: IDEnv,lib_Inh_CaseScalarExprListScalarExprPair :: LocalBindings}
+data Syn_CaseScalarExprListScalarExprPair  = Syn_CaseScalarExprListScalarExprPair {annotatedTree_Syn_CaseScalarExprListScalarExprPair :: CaseScalarExprListScalarExprPair ,fixedUpIdentifiersTree_Syn_CaseScalarExprListScalarExprPair :: CaseScalarExprListScalarExprPair ,originalTree_Syn_CaseScalarExprListScalarExprPair :: CaseScalarExprListScalarExprPair ,thenType_Syn_CaseScalarExprListScalarExprPair :: (Maybe Type),whenTypes_Syn_CaseScalarExprListScalarExprPair :: ([Maybe Type])}
+wrap_CaseScalarExprListScalarExprPair :: T_CaseScalarExprListScalarExprPair  ->
+                                         Inh_CaseScalarExprListScalarExprPair  ->
+                                         Syn_CaseScalarExprListScalarExprPair 
+wrap_CaseScalarExprListScalarExprPair sem (Inh_CaseScalarExprListScalarExprPair _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOthenType,_lhsOwhenTypes) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_CaseScalarExprListScalarExprPair _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree _lhsOthenType _lhsOwhenTypes ))
+sem_CaseScalarExprListScalarExprPair_Tuple :: T_ScalarExprList  ->
+                                              T_ScalarExpr  ->
+                                              T_CaseScalarExprListScalarExprPair 
+sem_CaseScalarExprListScalarExprPair_Tuple x1_ x2_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOwhenTypes :: ([Maybe Type])
+              _lhsOthenType :: (Maybe Type)
+              _x1OexpectedTypes :: ([Maybe Type])
+              _x2OexpectedType :: (Maybe Type)
+              _lhsOannotatedTree :: CaseScalarExprListScalarExprPair 
+              _lhsOfixedUpIdentifiersTree :: CaseScalarExprListScalarExprPair 
+              _lhsOoriginalTree :: CaseScalarExprListScalarExprPair 
+              _x1Ocat :: Catalog
+              _x1Oidenv :: IDEnv
+              _x1Olib :: LocalBindings
+              _x2Ocat :: Catalog
+              _x2Oidenv :: IDEnv
+              _x2Olib :: LocalBindings
+              _x1IannotatedTree :: ScalarExprList 
+              _x1IfixedUpIdentifiersTree :: ScalarExprList 
+              _x1IoriginalTree :: ScalarExprList 
+              _x1IuType :: ([Maybe Type])
+              _x2IannotatedTree :: ScalarExpr 
+              _x2IfixedUpIdentifiersTree :: ScalarExpr 
+              _x2IoriginalTree :: ScalarExpr 
+              _x2IuType :: (Maybe Type)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 270, column 13)
+              _lhsOwhenTypes =
+                  _x1IuType
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 271, column 13)
+              _lhsOthenType =
+                  _x2IuType
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 76, column 13)
+              _x1OexpectedTypes =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 77, column 13)
+              _x2OexpectedType =
+                  Nothing
+              -- self rule
+              _annotatedTree =
+                  (_x1IannotatedTree,_x2IannotatedTree)
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  (_x1IfixedUpIdentifiersTree,_x2IfixedUpIdentifiersTree)
+              -- self rule
+              _originalTree =
+                  (_x1IoriginalTree,_x2IoriginalTree)
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _x1Ocat =
+                  _lhsIcat
+              -- copy rule (down)
+              _x1Oidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _x1Olib =
+                  _lhsIlib
+              -- copy rule (down)
+              _x2Ocat =
+                  _lhsIcat
+              -- copy rule (down)
+              _x2Oidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _x2Olib =
+                  _lhsIlib
+              ( _x1IannotatedTree,_x1IfixedUpIdentifiersTree,_x1IoriginalTree,_x1IuType) =
+                  x1_ _x1Ocat _x1OexpectedTypes _x1Oidenv _x1Olib 
+              ( _x2IannotatedTree,_x2IfixedUpIdentifiersTree,_x2IoriginalTree,_x2IuType) =
+                  x2_ _x2Ocat _x2OexpectedType _x2Oidenv _x2Olib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOthenType,_lhsOwhenTypes)))
+-- CaseScalarExprListScalarExprPairList ------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+         thenTypes            : [Maybe Type]
+         whenTypes            : [[Maybe Type]]
+   alternatives:
+      alternative Cons:
+         child hd             : CaseScalarExprListScalarExprPair 
+         child tl             : CaseScalarExprListScalarExprPairList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Nil:
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+type CaseScalarExprListScalarExprPairList  = [CaseScalarExprListScalarExprPair ]
+-- cata
+sem_CaseScalarExprListScalarExprPairList :: CaseScalarExprListScalarExprPairList  ->
+                                            T_CaseScalarExprListScalarExprPairList 
+sem_CaseScalarExprListScalarExprPairList list  =
+    (Prelude.foldr sem_CaseScalarExprListScalarExprPairList_Cons sem_CaseScalarExprListScalarExprPairList_Nil (Prelude.map sem_CaseScalarExprListScalarExprPair list) )
+-- semantic domain
+type T_CaseScalarExprListScalarExprPairList  = Catalog ->
+                                               IDEnv ->
+                                               LocalBindings ->
+                                               ( CaseScalarExprListScalarExprPairList ,CaseScalarExprListScalarExprPairList ,CaseScalarExprListScalarExprPairList ,([Maybe Type]),([[Maybe Type]]))
+data Inh_CaseScalarExprListScalarExprPairList  = Inh_CaseScalarExprListScalarExprPairList {cat_Inh_CaseScalarExprListScalarExprPairList :: Catalog,idenv_Inh_CaseScalarExprListScalarExprPairList :: IDEnv,lib_Inh_CaseScalarExprListScalarExprPairList :: LocalBindings}
+data Syn_CaseScalarExprListScalarExprPairList  = Syn_CaseScalarExprListScalarExprPairList {annotatedTree_Syn_CaseScalarExprListScalarExprPairList :: CaseScalarExprListScalarExprPairList ,fixedUpIdentifiersTree_Syn_CaseScalarExprListScalarExprPairList :: CaseScalarExprListScalarExprPairList ,originalTree_Syn_CaseScalarExprListScalarExprPairList :: CaseScalarExprListScalarExprPairList ,thenTypes_Syn_CaseScalarExprListScalarExprPairList :: ([Maybe Type]),whenTypes_Syn_CaseScalarExprListScalarExprPairList :: ([[Maybe Type]])}
+wrap_CaseScalarExprListScalarExprPairList :: T_CaseScalarExprListScalarExprPairList  ->
+                                             Inh_CaseScalarExprListScalarExprPairList  ->
+                                             Syn_CaseScalarExprListScalarExprPairList 
+wrap_CaseScalarExprListScalarExprPairList sem (Inh_CaseScalarExprListScalarExprPairList _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOthenTypes,_lhsOwhenTypes) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_CaseScalarExprListScalarExprPairList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree _lhsOthenTypes _lhsOwhenTypes ))
+sem_CaseScalarExprListScalarExprPairList_Cons :: T_CaseScalarExprListScalarExprPair  ->
+                                                 T_CaseScalarExprListScalarExprPairList  ->
+                                                 T_CaseScalarExprListScalarExprPairList 
+sem_CaseScalarExprListScalarExprPairList_Cons hd_ tl_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOwhenTypes :: ([[Maybe Type]])
+              _lhsOthenTypes :: ([Maybe Type])
+              _lhsOannotatedTree :: CaseScalarExprListScalarExprPairList 
+              _lhsOfixedUpIdentifiersTree :: CaseScalarExprListScalarExprPairList 
+              _lhsOoriginalTree :: CaseScalarExprListScalarExprPairList 
+              _hdOcat :: Catalog
+              _hdOidenv :: IDEnv
+              _hdOlib :: LocalBindings
+              _tlOcat :: Catalog
+              _tlOidenv :: IDEnv
+              _tlOlib :: LocalBindings
+              _hdIannotatedTree :: CaseScalarExprListScalarExprPair 
+              _hdIfixedUpIdentifiersTree :: CaseScalarExprListScalarExprPair 
+              _hdIoriginalTree :: CaseScalarExprListScalarExprPair 
+              _hdIthenType :: (Maybe Type)
+              _hdIwhenTypes :: ([Maybe Type])
+              _tlIannotatedTree :: CaseScalarExprListScalarExprPairList 
+              _tlIfixedUpIdentifiersTree :: CaseScalarExprListScalarExprPairList 
+              _tlIoriginalTree :: CaseScalarExprListScalarExprPairList 
+              _tlIthenTypes :: ([Maybe Type])
+              _tlIwhenTypes :: ([[Maybe Type]])
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 261, column 10)
+              _lhsOwhenTypes =
+                  _hdIwhenTypes : _tlIwhenTypes
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 262, column 10)
+              _lhsOthenTypes =
+                  _hdIthenType : _tlIthenTypes
+              -- self rule
+              _annotatedTree =
+                  (:) _hdIannotatedTree _tlIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  (:) _hdIoriginalTree _tlIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _hdOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _hdOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _hdOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _tlOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _tlOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _tlOlib =
+                  _lhsIlib
+              ( _hdIannotatedTree,_hdIfixedUpIdentifiersTree,_hdIoriginalTree,_hdIthenType,_hdIwhenTypes) =
+                  hd_ _hdOcat _hdOidenv _hdOlib 
+              ( _tlIannotatedTree,_tlIfixedUpIdentifiersTree,_tlIoriginalTree,_tlIthenTypes,_tlIwhenTypes) =
+                  tl_ _tlOcat _tlOidenv _tlOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOthenTypes,_lhsOwhenTypes)))
+sem_CaseScalarExprListScalarExprPairList_Nil :: T_CaseScalarExprListScalarExprPairList 
+sem_CaseScalarExprListScalarExprPairList_Nil  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOwhenTypes :: ([[Maybe Type]])
+              _lhsOthenTypes :: ([Maybe Type])
+              _lhsOannotatedTree :: CaseScalarExprListScalarExprPairList 
+              _lhsOfixedUpIdentifiersTree :: CaseScalarExprListScalarExprPairList 
+              _lhsOoriginalTree :: CaseScalarExprListScalarExprPairList 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 263, column 9)
+              _lhsOwhenTypes =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 264, column 9)
+              _lhsOthenTypes =
+                  []
+              -- self rule
+              _annotatedTree =
+                  []
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  []
+              -- self rule
+              _originalTree =
+                  []
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOthenTypes,_lhsOwhenTypes)))
+-- Constraint --------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+   alternatives:
+      alternative CheckConstraint:
+         child ann            : {Annotation}
+         child name           : {String}
+         child expr           : ScalarExpr 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative PrimaryKeyConstraint:
+         child ann            : {Annotation}
+         child name           : {String}
+         child x              : {[String]}
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative ReferenceConstraint:
+         child ann            : {Annotation}
+         child name           : {String}
+         child atts           : {[String]}
+         child table          : {String}
+         child tableAtts      : {[String]}
+         child onUpdate       : {Cascade}
+         child onDelete       : {Cascade}
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative UniqueConstraint:
+         child ann            : {Annotation}
+         child name           : {String}
+         child x              : {[String]}
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+data Constraint  = CheckConstraint (Annotation) (String) (ScalarExpr ) 
+                 | PrimaryKeyConstraint (Annotation) (String) (([String])) 
+                 | ReferenceConstraint (Annotation) (String) (([String])) (String) (([String])) (Cascade) (Cascade) 
+                 | UniqueConstraint (Annotation) (String) (([String])) 
+                 deriving ( Data,Eq,Show,Typeable)
+-- cata
+sem_Constraint :: Constraint  ->
+                  T_Constraint 
+sem_Constraint (CheckConstraint _ann _name _expr )  =
+    (sem_Constraint_CheckConstraint _ann _name (sem_ScalarExpr _expr ) )
+sem_Constraint (PrimaryKeyConstraint _ann _name _x )  =
+    (sem_Constraint_PrimaryKeyConstraint _ann _name _x )
+sem_Constraint (ReferenceConstraint _ann _name _atts _table _tableAtts _onUpdate _onDelete )  =
+    (sem_Constraint_ReferenceConstraint _ann _name _atts _table _tableAtts _onUpdate _onDelete )
+sem_Constraint (UniqueConstraint _ann _name _x )  =
+    (sem_Constraint_UniqueConstraint _ann _name _x )
+-- semantic domain
+type T_Constraint  = Catalog ->
+                     IDEnv ->
+                     LocalBindings ->
+                     ( Constraint ,Constraint ,Constraint )
+data Inh_Constraint  = Inh_Constraint {cat_Inh_Constraint :: Catalog,idenv_Inh_Constraint :: IDEnv,lib_Inh_Constraint :: LocalBindings}
+data Syn_Constraint  = Syn_Constraint {annotatedTree_Syn_Constraint :: Constraint ,fixedUpIdentifiersTree_Syn_Constraint :: Constraint ,originalTree_Syn_Constraint :: Constraint }
+wrap_Constraint :: T_Constraint  ->
+                   Inh_Constraint  ->
+                   Syn_Constraint 
+wrap_Constraint sem (Inh_Constraint _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_Constraint _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
+sem_Constraint_CheckConstraint :: Annotation ->
+                                  String ->
+                                  T_ScalarExpr  ->
+                                  T_Constraint 
+sem_Constraint_CheckConstraint ann_ name_ expr_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _exprOexpectedType :: (Maybe Type)
+              _lhsOannotatedTree :: Constraint 
+              _lhsOfixedUpIdentifiersTree :: Constraint 
+              _lhsOoriginalTree :: Constraint 
+              _exprOcat :: Catalog
+              _exprOidenv :: IDEnv
+              _exprOlib :: LocalBindings
+              _exprIannotatedTree :: ScalarExpr 
+              _exprIfixedUpIdentifiersTree :: ScalarExpr 
+              _exprIoriginalTree :: ScalarExpr 
+              _exprIuType :: (Maybe Type)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 80, column 23)
+              _exprOexpectedType =
+                  Nothing
+              -- self rule
+              _annotatedTree =
+                  CheckConstraint ann_ name_ _exprIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  CheckConstraint ann_ name_ _exprIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  CheckConstraint ann_ name_ _exprIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _exprOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _exprOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _exprOlib =
+                  _lhsIlib
+              ( _exprIannotatedTree,_exprIfixedUpIdentifiersTree,_exprIoriginalTree,_exprIuType) =
+                  expr_ _exprOcat _exprOexpectedType _exprOidenv _exprOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+sem_Constraint_PrimaryKeyConstraint :: Annotation ->
+                                       String ->
+                                       ([String]) ->
+                                       T_Constraint 
+sem_Constraint_PrimaryKeyConstraint ann_ name_ x_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: Constraint 
+              _lhsOfixedUpIdentifiersTree :: Constraint 
+              _lhsOoriginalTree :: Constraint 
+              -- self rule
+              _annotatedTree =
+                  PrimaryKeyConstraint ann_ name_ x_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  PrimaryKeyConstraint ann_ name_ x_
+              -- self rule
+              _originalTree =
+                  PrimaryKeyConstraint ann_ name_ x_
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+sem_Constraint_ReferenceConstraint :: Annotation ->
+                                      String ->
+                                      ([String]) ->
+                                      String ->
+                                      ([String]) ->
+                                      Cascade ->
+                                      Cascade ->
+                                      T_Constraint 
+sem_Constraint_ReferenceConstraint ann_ name_ atts_ table_ tableAtts_ onUpdate_ onDelete_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: Constraint 
+              _lhsOfixedUpIdentifiersTree :: Constraint 
+              _lhsOoriginalTree :: Constraint 
+              -- self rule
+              _annotatedTree =
+                  ReferenceConstraint ann_ name_ atts_ table_ tableAtts_ onUpdate_ onDelete_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  ReferenceConstraint ann_ name_ atts_ table_ tableAtts_ onUpdate_ onDelete_
+              -- self rule
+              _originalTree =
+                  ReferenceConstraint ann_ name_ atts_ table_ tableAtts_ onUpdate_ onDelete_
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+sem_Constraint_UniqueConstraint :: Annotation ->
+                                   String ->
+                                   ([String]) ->
+                                   T_Constraint 
+sem_Constraint_UniqueConstraint ann_ name_ x_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: Constraint 
+              _lhsOfixedUpIdentifiersTree :: Constraint 
+              _lhsOoriginalTree :: Constraint 
+              -- self rule
+              _annotatedTree =
+                  UniqueConstraint ann_ name_ x_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  UniqueConstraint ann_ name_ x_
+              -- self rule
+              _originalTree =
+                  UniqueConstraint ann_ name_ x_
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+-- ConstraintList ----------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+   alternatives:
+      alternative Cons:
+         child hd             : Constraint 
+         child tl             : ConstraintList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Nil:
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+type ConstraintList  = [Constraint ]
+-- cata
+sem_ConstraintList :: ConstraintList  ->
+                      T_ConstraintList 
+sem_ConstraintList list  =
+    (Prelude.foldr sem_ConstraintList_Cons sem_ConstraintList_Nil (Prelude.map sem_Constraint list) )
+-- semantic domain
+type T_ConstraintList  = Catalog ->
+                         IDEnv ->
+                         LocalBindings ->
+                         ( ConstraintList ,ConstraintList ,ConstraintList )
+data Inh_ConstraintList  = Inh_ConstraintList {cat_Inh_ConstraintList :: Catalog,idenv_Inh_ConstraintList :: IDEnv,lib_Inh_ConstraintList :: LocalBindings}
+data Syn_ConstraintList  = Syn_ConstraintList {annotatedTree_Syn_ConstraintList :: ConstraintList ,fixedUpIdentifiersTree_Syn_ConstraintList :: ConstraintList ,originalTree_Syn_ConstraintList :: ConstraintList }
+wrap_ConstraintList :: T_ConstraintList  ->
+                       Inh_ConstraintList  ->
+                       Syn_ConstraintList 
+wrap_ConstraintList sem (Inh_ConstraintList _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_ConstraintList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
+sem_ConstraintList_Cons :: T_Constraint  ->
+                           T_ConstraintList  ->
+                           T_ConstraintList 
+sem_ConstraintList_Cons hd_ tl_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: ConstraintList 
+              _lhsOfixedUpIdentifiersTree :: ConstraintList 
+              _lhsOoriginalTree :: ConstraintList 
+              _hdOcat :: Catalog
+              _hdOidenv :: IDEnv
+              _hdOlib :: LocalBindings
+              _tlOcat :: Catalog
+              _tlOidenv :: IDEnv
+              _tlOlib :: LocalBindings
+              _hdIannotatedTree :: Constraint 
+              _hdIfixedUpIdentifiersTree :: Constraint 
+              _hdIoriginalTree :: Constraint 
+              _tlIannotatedTree :: ConstraintList 
+              _tlIfixedUpIdentifiersTree :: ConstraintList 
+              _tlIoriginalTree :: ConstraintList 
+              -- self rule
+              _annotatedTree =
+                  (:) _hdIannotatedTree _tlIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  (:) _hdIoriginalTree _tlIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _hdOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _hdOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _hdOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _tlOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _tlOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _tlOlib =
+                  _lhsIlib
+              ( _hdIannotatedTree,_hdIfixedUpIdentifiersTree,_hdIoriginalTree) =
+                  hd_ _hdOcat _hdOidenv _hdOlib 
+              ( _tlIannotatedTree,_tlIfixedUpIdentifiersTree,_tlIoriginalTree) =
+                  tl_ _tlOcat _tlOidenv _tlOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+sem_ConstraintList_Nil :: T_ConstraintList 
+sem_ConstraintList_Nil  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: ConstraintList 
+              _lhsOfixedUpIdentifiersTree :: ConstraintList 
+              _lhsOoriginalTree :: ConstraintList 
+              -- self rule
+              _annotatedTree =
+                  []
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  []
+              -- self rule
+              _originalTree =
+                  []
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+-- FnBody ------------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+   alternatives:
+      alternative PlpgsqlFnBody:
+         child ann            : {Annotation}
+         child blk            : Statement 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative SqlFnBody:
+         child ann            : {Annotation}
+         child sts            : StatementList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+data FnBody  = PlpgsqlFnBody (Annotation) (Statement ) 
+             | SqlFnBody (Annotation) (StatementList ) 
+             deriving ( Data,Eq,Show,Typeable)
+-- cata
+sem_FnBody :: FnBody  ->
+              T_FnBody 
+sem_FnBody (PlpgsqlFnBody _ann _blk )  =
+    (sem_FnBody_PlpgsqlFnBody _ann (sem_Statement _blk ) )
+sem_FnBody (SqlFnBody _ann _sts )  =
+    (sem_FnBody_SqlFnBody _ann (sem_StatementList _sts ) )
+-- semantic domain
+type T_FnBody  = Catalog ->
+                 IDEnv ->
+                 LocalBindings ->
+                 ( FnBody ,FnBody ,FnBody )
+data Inh_FnBody  = Inh_FnBody {cat_Inh_FnBody :: Catalog,idenv_Inh_FnBody :: IDEnv,lib_Inh_FnBody :: LocalBindings}
+data Syn_FnBody  = Syn_FnBody {annotatedTree_Syn_FnBody :: FnBody ,fixedUpIdentifiersTree_Syn_FnBody :: FnBody ,originalTree_Syn_FnBody :: FnBody }
+wrap_FnBody :: T_FnBody  ->
+               Inh_FnBody  ->
+               Syn_FnBody 
+wrap_FnBody sem (Inh_FnBody _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_FnBody _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
+sem_FnBody_PlpgsqlFnBody :: Annotation ->
+                            T_Statement  ->
+                            T_FnBody 
+sem_FnBody_PlpgsqlFnBody ann_ blk_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _blkOinProducedCat :: Catalog
+              _lhsOannotatedTree :: FnBody 
+              _lhsOfixedUpIdentifiersTree :: FnBody 
+              _lhsOoriginalTree :: FnBody 
+              _blkOcat :: Catalog
+              _blkOidenv :: IDEnv
+              _blkOlib :: LocalBindings
+              _blkIannotatedTree :: Statement 
+              _blkIcatUpdates :: ([CatalogUpdate])
+              _blkIfixedUpIdentifiersTree :: Statement 
+              _blkIlibUpdates :: ([LocalBindingsUpdate])
+              _blkIoriginalTree :: Statement 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 104, column 9)
+              _blkOinProducedCat =
+                  emptyCatalog
+              -- self rule
+              _annotatedTree =
+                  PlpgsqlFnBody ann_ _blkIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  PlpgsqlFnBody ann_ _blkIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  PlpgsqlFnBody ann_ _blkIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _blkOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _blkOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _blkOlib =
+                  _lhsIlib
+              ( _blkIannotatedTree,_blkIcatUpdates,_blkIfixedUpIdentifiersTree,_blkIlibUpdates,_blkIoriginalTree) =
+                  blk_ _blkOcat _blkOidenv _blkOinProducedCat _blkOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+sem_FnBody_SqlFnBody :: Annotation ->
+                        T_StatementList  ->
+                        T_FnBody 
+sem_FnBody_SqlFnBody ann_ sts_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _stsOcatUpdates :: ([CatalogUpdate])
+              _stsOlibUpdates :: ([LocalBindingsUpdate])
+              _lhsOannotatedTree :: FnBody 
+              _lhsOfixedUpIdentifiersTree :: FnBody 
+              _lhsOoriginalTree :: FnBody 
+              _stsOcat :: Catalog
+              _stsOidenv :: IDEnv
+              _stsOlib :: LocalBindings
+              _stsIannotatedTree :: StatementList 
+              _stsIfixedUpIdentifiersTree :: StatementList 
+              _stsIoriginalTree :: StatementList 
+              _stsIproducedCat :: Catalog
+              _stsIproducedLib :: LocalBindings
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 129, column 9)
+              _stsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 130, column 9)
+              _stsOlibUpdates =
+                  []
+              -- self rule
+              _annotatedTree =
+                  SqlFnBody ann_ _stsIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  SqlFnBody ann_ _stsIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  SqlFnBody ann_ _stsIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _stsOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _stsOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _stsOlib =
+                  _lhsIlib
+              ( _stsIannotatedTree,_stsIfixedUpIdentifiersTree,_stsIoriginalTree,_stsIproducedCat,_stsIproducedLib) =
+                  sts_ _stsOcat _stsOcatUpdates _stsOidenv _stsOlib _stsOlibUpdates 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+-- InList ------------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         expectedType         : Maybe Type
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         listType             : Either [TypeError] Type
+         originalTree         : SELF 
+   alternatives:
+      alternative InList:
+         child ann            : {Annotation}
+         child exprs          : ScalarExprList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative InQueryExpr:
+         child ann            : {Annotation}
+         child sel            : QueryExpr 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+data InList  = InList (Annotation) (ScalarExprList ) 
+             | InQueryExpr (Annotation) (QueryExpr ) 
+             deriving ( Data,Eq,Show,Typeable)
+-- cata
+sem_InList :: InList  ->
+              T_InList 
+sem_InList (InList _ann _exprs )  =
+    (sem_InList_InList _ann (sem_ScalarExprList _exprs ) )
+sem_InList (InQueryExpr _ann _sel )  =
+    (sem_InList_InQueryExpr _ann (sem_QueryExpr _sel ) )
+-- semantic domain
+type T_InList  = Catalog ->
+                 (Maybe Type) ->
+                 IDEnv ->
+                 LocalBindings ->
+                 ( InList ,InList ,(Either [TypeError] Type),InList )
+data Inh_InList  = Inh_InList {cat_Inh_InList :: Catalog,expectedType_Inh_InList :: (Maybe Type),idenv_Inh_InList :: IDEnv,lib_Inh_InList :: LocalBindings}
+data Syn_InList  = Syn_InList {annotatedTree_Syn_InList :: InList ,fixedUpIdentifiersTree_Syn_InList :: InList ,listType_Syn_InList :: (Either [TypeError] Type),originalTree_Syn_InList :: InList }
+wrap_InList :: T_InList  ->
+               Inh_InList  ->
+               Syn_InList 
+wrap_InList sem (Inh_InList _lhsIcat _lhsIexpectedType _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlistType,_lhsOoriginalTree) = sem _lhsIcat _lhsIexpectedType _lhsIidenv _lhsIlib 
+     in  (Syn_InList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOlistType _lhsOoriginalTree ))
+sem_InList_InList :: Annotation ->
+                     T_ScalarExprList  ->
+                     T_InList 
+sem_InList_InList ann_ exprs_  =
+    (\ _lhsIcat
+       _lhsIexpectedType
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOlistType :: (Either [TypeError] Type)
+              _exprsOexpectedTypes :: ([Maybe Type])
+              _lhsOannotatedTree :: InList 
+              _lhsOfixedUpIdentifiersTree :: InList 
+              _lhsOoriginalTree :: InList 
+              _exprsOcat :: Catalog
+              _exprsOidenv :: IDEnv
+              _exprsOlib :: LocalBindings
+              _exprsIannotatedTree :: ScalarExprList 
+              _exprsIfixedUpIdentifiersTree :: ScalarExprList 
+              _exprsIoriginalTree :: ScalarExprList 
+              _exprsIuType :: ([Maybe Type])
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 409, column 9)
+              _lhsOlistType =
+                  mapM lmt _exprsIuType >>= resolveResultSetType _lhsIcat
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 410, column 9)
+              _exprsOexpectedTypes =
+                  repeat _lhsIexpectedType
+              -- self rule
+              _annotatedTree =
+                  InList ann_ _exprsIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  InList ann_ _exprsIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  InList ann_ _exprsIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _exprsOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _exprsOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _exprsOlib =
+                  _lhsIlib
+              ( _exprsIannotatedTree,_exprsIfixedUpIdentifiersTree,_exprsIoriginalTree,_exprsIuType) =
+                  exprs_ _exprsOcat _exprsOexpectedTypes _exprsOidenv _exprsOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlistType,_lhsOoriginalTree)))
+sem_InList_InQueryExpr :: Annotation ->
+                          T_QueryExpr  ->
+                          T_InList 
+sem_InList_InQueryExpr ann_ sel_  =
+    (\ _lhsIcat
+       _lhsIexpectedType
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOlistType :: (Either [TypeError] Type)
+              _selOcsql :: LocalBindings
+              _selOexpectedTypes :: ([Maybe Type])
+              _lhsOannotatedTree :: InList 
+              _lhsOfixedUpIdentifiersTree :: InList 
+              _lhsOoriginalTree :: InList 
+              _selOcat :: Catalog
+              _selOidenv :: IDEnv
+              _selOlib :: LocalBindings
+              _selIannotatedTree :: QueryExpr 
+              _selIcidenv :: IDEnv
+              _selIfixedUpIdentifiersTree :: QueryExpr 
+              _selIlibUpdates :: ([LocalBindingsUpdate])
+              _selIoriginalTree :: QueryExpr 
+              _selIuType :: (Maybe [(String,Type)])
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 413, column 9)
+              _lhsOlistType =
+                  do
+                  st <- lmt (map snd <$> _selIuType)
+                  case length st of
+                            0 -> Left [InternalError
+                                       "got subquery with no columns? in inselect"]
+                            1 -> Right $ head st
+                            _ -> Right $ AnonymousRecordType st
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 120, column 19)
+              _selOcsql =
+                  emptyBindings
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 173, column 19)
+              _selOexpectedTypes =
+                  []
+              -- self rule
+              _annotatedTree =
+                  InQueryExpr ann_ _selIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  InQueryExpr ann_ _selIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  InQueryExpr ann_ _selIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _selOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _selOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _selOlib =
+                  _lhsIlib
+              ( _selIannotatedTree,_selIcidenv,_selIfixedUpIdentifiersTree,_selIlibUpdates,_selIoriginalTree,_selIuType) =
+                  sel_ _selOcat _selOcsql _selOexpectedTypes _selOidenv _selOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlistType,_lhsOoriginalTree)))
+-- JoinExpr ----------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+   alternatives:
+      alternative JoinOn:
+         child ann            : {Annotation}
+         child expr           : ScalarExpr 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative JoinUsing:
+         child ann            : {Annotation}
+         child x              : {[String]}
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+data JoinExpr  = JoinOn (Annotation) (ScalarExpr ) 
+               | JoinUsing (Annotation) (([String])) 
+               deriving ( Data,Eq,Show,Typeable)
+-- cata
+sem_JoinExpr :: JoinExpr  ->
+                T_JoinExpr 
+sem_JoinExpr (JoinOn _ann _expr )  =
+    (sem_JoinExpr_JoinOn _ann (sem_ScalarExpr _expr ) )
+sem_JoinExpr (JoinUsing _ann _x )  =
+    (sem_JoinExpr_JoinUsing _ann _x )
+-- semantic domain
+type T_JoinExpr  = Catalog ->
+                   IDEnv ->
+                   LocalBindings ->
+                   ( JoinExpr ,JoinExpr ,JoinExpr )
+data Inh_JoinExpr  = Inh_JoinExpr {cat_Inh_JoinExpr :: Catalog,idenv_Inh_JoinExpr :: IDEnv,lib_Inh_JoinExpr :: LocalBindings}
+data Syn_JoinExpr  = Syn_JoinExpr {annotatedTree_Syn_JoinExpr :: JoinExpr ,fixedUpIdentifiersTree_Syn_JoinExpr :: JoinExpr ,originalTree_Syn_JoinExpr :: JoinExpr }
+wrap_JoinExpr :: T_JoinExpr  ->
+                 Inh_JoinExpr  ->
+                 Syn_JoinExpr 
+wrap_JoinExpr sem (Inh_JoinExpr _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_JoinExpr _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
+sem_JoinExpr_JoinOn :: Annotation ->
+                       T_ScalarExpr  ->
+                       T_JoinExpr 
+sem_JoinExpr_JoinOn ann_ expr_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _exprOexpectedType :: (Maybe Type)
+              _lhsOannotatedTree :: JoinExpr 
+              _lhsOfixedUpIdentifiersTree :: JoinExpr 
+              _lhsOoriginalTree :: JoinExpr 
+              _exprOcat :: Catalog
+              _exprOidenv :: IDEnv
+              _exprOlib :: LocalBindings
+              _exprIannotatedTree :: ScalarExpr 
+              _exprIfixedUpIdentifiersTree :: ScalarExpr 
+              _exprIoriginalTree :: ScalarExpr 
+              _exprIuType :: (Maybe Type)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 94, column 14)
+              _exprOexpectedType =
+                  Just typeBool
+              -- self rule
+              _annotatedTree =
+                  JoinOn ann_ _exprIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  JoinOn ann_ _exprIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  JoinOn ann_ _exprIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _exprOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _exprOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _exprOlib =
+                  _lhsIlib
+              ( _exprIannotatedTree,_exprIfixedUpIdentifiersTree,_exprIoriginalTree,_exprIuType) =
+                  expr_ _exprOcat _exprOexpectedType _exprOidenv _exprOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+sem_JoinExpr_JoinUsing :: Annotation ->
+                          ([String]) ->
+                          T_JoinExpr 
+sem_JoinExpr_JoinUsing ann_ x_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: JoinExpr 
+              _lhsOfixedUpIdentifiersTree :: JoinExpr 
+              _lhsOoriginalTree :: JoinExpr 
+              -- self rule
+              _annotatedTree =
+                  JoinUsing ann_ x_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  JoinUsing ann_ x_
+              -- self rule
+              _originalTree =
+                  JoinUsing ann_ x_
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+-- MaybeBoolExpr -----------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+   alternatives:
+      alternative Just:
+         child just           : ScalarExpr 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Nothing:
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+type MaybeBoolExpr  = Maybe ScalarExpr 
+-- cata
+sem_MaybeBoolExpr :: MaybeBoolExpr  ->
+                     T_MaybeBoolExpr 
+sem_MaybeBoolExpr (Prelude.Just x )  =
+    (sem_MaybeBoolExpr_Just (sem_ScalarExpr x ) )
+sem_MaybeBoolExpr Prelude.Nothing  =
+    sem_MaybeBoolExpr_Nothing
+-- semantic domain
+type T_MaybeBoolExpr  = Catalog ->
+                        IDEnv ->
+                        LocalBindings ->
+                        ( MaybeBoolExpr ,MaybeBoolExpr ,MaybeBoolExpr )
+data Inh_MaybeBoolExpr  = Inh_MaybeBoolExpr {cat_Inh_MaybeBoolExpr :: Catalog,idenv_Inh_MaybeBoolExpr :: IDEnv,lib_Inh_MaybeBoolExpr :: LocalBindings}
+data Syn_MaybeBoolExpr  = Syn_MaybeBoolExpr {annotatedTree_Syn_MaybeBoolExpr :: MaybeBoolExpr ,fixedUpIdentifiersTree_Syn_MaybeBoolExpr :: MaybeBoolExpr ,originalTree_Syn_MaybeBoolExpr :: MaybeBoolExpr }
+wrap_MaybeBoolExpr :: T_MaybeBoolExpr  ->
+                      Inh_MaybeBoolExpr  ->
+                      Syn_MaybeBoolExpr 
+wrap_MaybeBoolExpr sem (Inh_MaybeBoolExpr _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_MaybeBoolExpr _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
+sem_MaybeBoolExpr_Just :: T_ScalarExpr  ->
+                          T_MaybeBoolExpr 
+sem_MaybeBoolExpr_Just just_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: MaybeBoolExpr 
+              _justOexpectedType :: (Maybe Type)
+              _lhsOfixedUpIdentifiersTree :: MaybeBoolExpr 
+              _lhsOoriginalTree :: MaybeBoolExpr 
+              _justOcat :: Catalog
+              _justOidenv :: IDEnv
+              _justOlib :: LocalBindings
+              _justIannotatedTree :: ScalarExpr 
+              _justIfixedUpIdentifiersTree :: ScalarExpr 
+              _justIoriginalTree :: ScalarExpr 
+              _justIuType :: (Maybe Type)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 132, column 9)
+              _lhsOannotatedTree =
+                  let t = _justIuType
+                  in if t `elem` [Nothing,Just typeBool]
+                     then Just _justIannotatedTree
+                     else Just $ addTypeErrors [ExpressionMustBeBool] _justIannotatedTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 97, column 12)
+              _justOexpectedType =
+                  Just typeBool
+              -- self rule
+              _annotatedTree =
+                  Just _justIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Just _justIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  Just _justIoriginalTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _justOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _justOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _justOlib =
+                  _lhsIlib
+              ( _justIannotatedTree,_justIfixedUpIdentifiersTree,_justIoriginalTree,_justIuType) =
+                  just_ _justOcat _justOexpectedType _justOidenv _justOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+sem_MaybeBoolExpr_Nothing :: T_MaybeBoolExpr 
+sem_MaybeBoolExpr_Nothing  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: MaybeBoolExpr 
+              _lhsOfixedUpIdentifiersTree :: MaybeBoolExpr 
+              _lhsOoriginalTree :: MaybeBoolExpr 
+              -- self rule
+              _annotatedTree =
+                  Nothing
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Nothing
+              -- self rule
+              _originalTree =
+                  Nothing
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+-- MaybeScalarExpr ---------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+         uType                : Maybe Type
+   alternatives:
+      alternative Just:
+         child just           : ScalarExpr 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Nothing:
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+type MaybeScalarExpr  = Maybe ScalarExpr 
+-- cata
+sem_MaybeScalarExpr :: MaybeScalarExpr  ->
+                       T_MaybeScalarExpr 
+sem_MaybeScalarExpr (Prelude.Just x )  =
+    (sem_MaybeScalarExpr_Just (sem_ScalarExpr x ) )
+sem_MaybeScalarExpr Prelude.Nothing  =
+    sem_MaybeScalarExpr_Nothing
+-- semantic domain
+type T_MaybeScalarExpr  = Catalog ->
+                          IDEnv ->
+                          LocalBindings ->
+                          ( MaybeScalarExpr ,MaybeScalarExpr ,MaybeScalarExpr ,(Maybe Type))
+data Inh_MaybeScalarExpr  = Inh_MaybeScalarExpr {cat_Inh_MaybeScalarExpr :: Catalog,idenv_Inh_MaybeScalarExpr :: IDEnv,lib_Inh_MaybeScalarExpr :: LocalBindings}
+data Syn_MaybeScalarExpr  = Syn_MaybeScalarExpr {annotatedTree_Syn_MaybeScalarExpr :: MaybeScalarExpr ,fixedUpIdentifiersTree_Syn_MaybeScalarExpr :: MaybeScalarExpr ,originalTree_Syn_MaybeScalarExpr :: MaybeScalarExpr ,uType_Syn_MaybeScalarExpr :: (Maybe Type)}
+wrap_MaybeScalarExpr :: T_MaybeScalarExpr  ->
+                        Inh_MaybeScalarExpr  ->
+                        Syn_MaybeScalarExpr 
+wrap_MaybeScalarExpr sem (Inh_MaybeScalarExpr _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_MaybeScalarExpr _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree _lhsOuType ))
+sem_MaybeScalarExpr_Just :: T_ScalarExpr  ->
+                            T_MaybeScalarExpr 
+sem_MaybeScalarExpr_Just just_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOuType :: (Maybe Type)
+              _justOexpectedType :: (Maybe Type)
+              _lhsOannotatedTree :: MaybeScalarExpr 
+              _lhsOfixedUpIdentifiersTree :: MaybeScalarExpr 
+              _lhsOoriginalTree :: MaybeScalarExpr 
+              _justOcat :: Catalog
+              _justOidenv :: IDEnv
+              _justOlib :: LocalBindings
+              _justIannotatedTree :: ScalarExpr 
+              _justIfixedUpIdentifiersTree :: ScalarExpr 
+              _justIoriginalTree :: ScalarExpr 
+              _justIuType :: (Maybe Type)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 124, column 12)
+              _lhsOuType =
+                  _justIuType
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 100, column 12)
+              _justOexpectedType =
+                  Nothing
+              -- self rule
+              _annotatedTree =
+                  Just _justIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Just _justIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  Just _justIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _justOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _justOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _justOlib =
+                  _lhsIlib
+              ( _justIannotatedTree,_justIfixedUpIdentifiersTree,_justIoriginalTree,_justIuType) =
+                  just_ _justOcat _justOexpectedType _justOidenv _justOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
+sem_MaybeScalarExpr_Nothing :: T_MaybeScalarExpr 
+sem_MaybeScalarExpr_Nothing  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOuType :: (Maybe Type)
+              _lhsOannotatedTree :: MaybeScalarExpr 
+              _lhsOfixedUpIdentifiersTree :: MaybeScalarExpr 
+              _lhsOoriginalTree :: MaybeScalarExpr 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 125, column 15)
+              _lhsOuType =
+                  Nothing
+              -- self rule
+              _annotatedTree =
+                  Nothing
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Nothing
+              -- self rule
+              _originalTree =
+                  Nothing
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
+-- MaybeSelectList ---------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         listType             : [(String,Maybe Type)]
+         originalTree         : SELF 
+   alternatives:
+      alternative Just:
+         child just           : SelectList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Nothing:
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+type MaybeSelectList  = Maybe SelectList 
+-- cata
+sem_MaybeSelectList :: MaybeSelectList  ->
+                       T_MaybeSelectList 
+sem_MaybeSelectList (Prelude.Just x )  =
+    (sem_MaybeSelectList_Just (sem_SelectList x ) )
+sem_MaybeSelectList Prelude.Nothing  =
+    sem_MaybeSelectList_Nothing
+-- semantic domain
+type T_MaybeSelectList  = Catalog ->
+                          IDEnv ->
+                          LocalBindings ->
+                          ( MaybeSelectList ,MaybeSelectList ,([(String,Maybe Type)]),MaybeSelectList )
+data Inh_MaybeSelectList  = Inh_MaybeSelectList {cat_Inh_MaybeSelectList :: Catalog,idenv_Inh_MaybeSelectList :: IDEnv,lib_Inh_MaybeSelectList :: LocalBindings}
+data Syn_MaybeSelectList  = Syn_MaybeSelectList {annotatedTree_Syn_MaybeSelectList :: MaybeSelectList ,fixedUpIdentifiersTree_Syn_MaybeSelectList :: MaybeSelectList ,listType_Syn_MaybeSelectList :: ([(String,Maybe Type)]),originalTree_Syn_MaybeSelectList :: MaybeSelectList }
+wrap_MaybeSelectList :: T_MaybeSelectList  ->
+                        Inh_MaybeSelectList  ->
+                        Syn_MaybeSelectList 
+wrap_MaybeSelectList sem (Inh_MaybeSelectList _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlistType,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_MaybeSelectList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOlistType _lhsOoriginalTree ))
+sem_MaybeSelectList_Just :: T_SelectList  ->
+                            T_MaybeSelectList 
+sem_MaybeSelectList_Just just_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOlistType :: ([(String,Maybe Type)])
+              _lhsOannotatedTree :: MaybeSelectList 
+              _lhsOfixedUpIdentifiersTree :: MaybeSelectList 
+              _lhsOoriginalTree :: MaybeSelectList 
+              _justOcat :: Catalog
+              _justOidenv :: IDEnv
+              _justOlib :: LocalBindings
+              _justIannotatedTree :: SelectList 
+              _justIcidenv :: IDEnv
+              _justIfixedUpIdentifiersTree :: SelectList 
+              _justIlibUpdates :: ([LocalBindingsUpdate])
+              _justIlistType :: ([(String,Maybe Type)])
+              _justIoriginalTree :: SelectList 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 38, column 12)
+              _lhsOlistType =
+                  _justIlistType
+              -- self rule
+              _annotatedTree =
+                  Just _justIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Just _justIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  Just _justIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _justOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _justOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _justOlib =
+                  _lhsIlib
+              ( _justIannotatedTree,_justIcidenv,_justIfixedUpIdentifiersTree,_justIlibUpdates,_justIlistType,_justIoriginalTree) =
+                  just_ _justOcat _justOidenv _justOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlistType,_lhsOoriginalTree)))
+sem_MaybeSelectList_Nothing :: T_MaybeSelectList 
+sem_MaybeSelectList_Nothing  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOlistType :: ([(String,Maybe Type)])
+              _lhsOannotatedTree :: MaybeSelectList 
+              _lhsOfixedUpIdentifiersTree :: MaybeSelectList 
+              _lhsOoriginalTree :: MaybeSelectList 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 39, column 15)
+              _lhsOlistType =
+                  []
+              -- self rule
+              _annotatedTree =
+                  Nothing
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Nothing
+              -- self rule
+              _originalTree =
+                  Nothing
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlistType,_lhsOoriginalTree)))
+-- OnExpr ------------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+   alternatives:
+      alternative Just:
+         child just           : JoinExpr 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Nothing:
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+type OnExpr  = Maybe JoinExpr 
+-- cata
+sem_OnExpr :: OnExpr  ->
+              T_OnExpr 
+sem_OnExpr (Prelude.Just x )  =
+    (sem_OnExpr_Just (sem_JoinExpr x ) )
+sem_OnExpr Prelude.Nothing  =
+    sem_OnExpr_Nothing
+-- semantic domain
+type T_OnExpr  = Catalog ->
+                 IDEnv ->
+                 LocalBindings ->
+                 ( OnExpr ,OnExpr ,OnExpr )
+data Inh_OnExpr  = Inh_OnExpr {cat_Inh_OnExpr :: Catalog,idenv_Inh_OnExpr :: IDEnv,lib_Inh_OnExpr :: LocalBindings}
+data Syn_OnExpr  = Syn_OnExpr {annotatedTree_Syn_OnExpr :: OnExpr ,fixedUpIdentifiersTree_Syn_OnExpr :: OnExpr ,originalTree_Syn_OnExpr :: OnExpr }
+wrap_OnExpr :: T_OnExpr  ->
+               Inh_OnExpr  ->
+               Syn_OnExpr 
+wrap_OnExpr sem (Inh_OnExpr _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_OnExpr _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
+sem_OnExpr_Just :: T_JoinExpr  ->
+                   T_OnExpr 
+sem_OnExpr_Just just_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: OnExpr 
+              _lhsOfixedUpIdentifiersTree :: OnExpr 
+              _lhsOoriginalTree :: OnExpr 
+              _justOcat :: Catalog
+              _justOidenv :: IDEnv
+              _justOlib :: LocalBindings
+              _justIannotatedTree :: JoinExpr 
+              _justIfixedUpIdentifiersTree :: JoinExpr 
+              _justIoriginalTree :: JoinExpr 
+              -- self rule
+              _annotatedTree =
+                  Just _justIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Just _justIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  Just _justIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _justOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _justOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _justOlib =
+                  _lhsIlib
+              ( _justIannotatedTree,_justIfixedUpIdentifiersTree,_justIoriginalTree) =
+                  just_ _justOcat _justOidenv _justOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+sem_OnExpr_Nothing :: T_OnExpr 
+sem_OnExpr_Nothing  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: OnExpr 
+              _lhsOfixedUpIdentifiersTree :: OnExpr 
+              _lhsOoriginalTree :: OnExpr 
+              -- self rule
+              _annotatedTree =
+                  Nothing
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Nothing
+              -- self rule
+              _originalTree =
+                  Nothing
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+-- ParamDef ----------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+         pos                  : Int
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         namedType            : Maybe Type
+         originalTree         : SELF 
+         paramName            : ParamName
+   alternatives:
+      alternative ParamDef:
+         child ann            : {Annotation}
+         child name           : {String}
+         child typ            : TypeName 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative ParamDefTp:
+         child ann            : {Annotation}
+         child typ            : TypeName 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+data ParamDef  = ParamDef (Annotation) (String) (TypeName ) 
+               | ParamDefTp (Annotation) (TypeName ) 
+               deriving ( Data,Eq,Show,Typeable)
+-- cata
+sem_ParamDef :: ParamDef  ->
+                T_ParamDef 
+sem_ParamDef (ParamDef _ann _name _typ )  =
+    (sem_ParamDef_ParamDef _ann _name (sem_TypeName _typ ) )
+sem_ParamDef (ParamDefTp _ann _typ )  =
+    (sem_ParamDef_ParamDefTp _ann (sem_TypeName _typ ) )
+-- semantic domain
+type T_ParamDef  = Catalog ->
+                   IDEnv ->
+                   LocalBindings ->
+                   Int ->
+                   ( ParamDef ,ParamDef ,(Maybe Type),ParamDef ,ParamName)
+data Inh_ParamDef  = Inh_ParamDef {cat_Inh_ParamDef :: Catalog,idenv_Inh_ParamDef :: IDEnv,lib_Inh_ParamDef :: LocalBindings,pos_Inh_ParamDef :: Int}
+data Syn_ParamDef  = Syn_ParamDef {annotatedTree_Syn_ParamDef :: ParamDef ,fixedUpIdentifiersTree_Syn_ParamDef :: ParamDef ,namedType_Syn_ParamDef :: (Maybe Type),originalTree_Syn_ParamDef :: ParamDef ,paramName_Syn_ParamDef :: ParamName}
+wrap_ParamDef :: T_ParamDef  ->
+                 Inh_ParamDef  ->
+                 Syn_ParamDef 
+wrap_ParamDef sem (Inh_ParamDef _lhsIcat _lhsIidenv _lhsIlib _lhsIpos )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOnamedType,_lhsOoriginalTree,_lhsOparamName) = sem _lhsIcat _lhsIidenv _lhsIlib _lhsIpos 
+     in  (Syn_ParamDef _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOnamedType _lhsOoriginalTree _lhsOparamName ))
+sem_ParamDef_ParamDef :: Annotation ->
+                         String ->
+                         T_TypeName  ->
+                         T_ParamDef 
+sem_ParamDef_ParamDef ann_ name_ typ_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib
+       _lhsIpos ->
+         (let _lhsOnamedType :: (Maybe Type)
+              _lhsOparamName :: ParamName
+              _lhsOannotatedTree :: ParamDef 
+              _lhsOfixedUpIdentifiersTree :: ParamDef 
+              _lhsOoriginalTree :: ParamDef 
+              _typOcat :: Catalog
+              _typOidenv :: IDEnv
+              _typOlib :: LocalBindings
+              _typIannotatedTree :: TypeName 
+              _typIfixedUpIdentifiersTree :: TypeName 
+              _typInamedType :: (Maybe Type)
+              _typIoriginalTree :: TypeName 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/CreateFunction.ag"(line 45, column 9)
+              _lhsOnamedType =
+                  _typInamedType
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/CreateFunction.ag"(line 47, column 9)
+              _lhsOparamName =
+                  NamedParam _lhsIpos name_
+              -- self rule
+              _annotatedTree =
+                  ParamDef ann_ name_ _typIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  ParamDef ann_ name_ _typIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  ParamDef ann_ name_ _typIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _typOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _typOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _typOlib =
+                  _lhsIlib
+              ( _typIannotatedTree,_typIfixedUpIdentifiersTree,_typInamedType,_typIoriginalTree) =
+                  typ_ _typOcat _typOidenv _typOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOnamedType,_lhsOoriginalTree,_lhsOparamName)))
+sem_ParamDef_ParamDefTp :: Annotation ->
+                           T_TypeName  ->
+                           T_ParamDef 
+sem_ParamDef_ParamDefTp ann_ typ_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib
+       _lhsIpos ->
+         (let _lhsOnamedType :: (Maybe Type)
+              _lhsOparamName :: ParamName
+              _lhsOannotatedTree :: ParamDef 
+              _lhsOfixedUpIdentifiersTree :: ParamDef 
+              _lhsOoriginalTree :: ParamDef 
+              _typOcat :: Catalog
+              _typOidenv :: IDEnv
+              _typOlib :: LocalBindings
+              _typIannotatedTree :: TypeName 
+              _typIfixedUpIdentifiersTree :: TypeName 
+              _typInamedType :: (Maybe Type)
+              _typIoriginalTree :: TypeName 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/CreateFunction.ag"(line 45, column 9)
+              _lhsOnamedType =
+                  _typInamedType
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/CreateFunction.ag"(line 49, column 9)
+              _lhsOparamName =
+                  UnnamedParam _lhsIpos
+              -- self rule
+              _annotatedTree =
+                  ParamDefTp ann_ _typIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  ParamDefTp ann_ _typIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  ParamDefTp ann_ _typIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _typOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _typOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _typOlib =
+                  _lhsIlib
+              ( _typIannotatedTree,_typIfixedUpIdentifiersTree,_typInamedType,_typIoriginalTree) =
+                  typ_ _typOcat _typOidenv _typOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOnamedType,_lhsOoriginalTree,_lhsOparamName)))
+-- ParamDefList ------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+         pos                  : Int
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+         params               : [(ParamName, Maybe Type)]
+   alternatives:
+      alternative Cons:
+         child hd             : ParamDef 
+         child tl             : ParamDefList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Nil:
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+type ParamDefList  = [ParamDef ]
+-- cata
+sem_ParamDefList :: ParamDefList  ->
+                    T_ParamDefList 
+sem_ParamDefList list  =
+    (Prelude.foldr sem_ParamDefList_Cons sem_ParamDefList_Nil (Prelude.map sem_ParamDef list) )
+-- semantic domain
+type T_ParamDefList  = Catalog ->
+                       IDEnv ->
+                       LocalBindings ->
+                       Int ->
+                       ( ParamDefList ,ParamDefList ,ParamDefList ,([(ParamName, Maybe Type)]))
+data Inh_ParamDefList  = Inh_ParamDefList {cat_Inh_ParamDefList :: Catalog,idenv_Inh_ParamDefList :: IDEnv,lib_Inh_ParamDefList :: LocalBindings,pos_Inh_ParamDefList :: Int}
+data Syn_ParamDefList  = Syn_ParamDefList {annotatedTree_Syn_ParamDefList :: ParamDefList ,fixedUpIdentifiersTree_Syn_ParamDefList :: ParamDefList ,originalTree_Syn_ParamDefList :: ParamDefList ,params_Syn_ParamDefList :: ([(ParamName, Maybe Type)])}
+wrap_ParamDefList :: T_ParamDefList  ->
+                     Inh_ParamDefList  ->
+                     Syn_ParamDefList 
+wrap_ParamDefList sem (Inh_ParamDefList _lhsIcat _lhsIidenv _lhsIlib _lhsIpos )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOparams) = sem _lhsIcat _lhsIidenv _lhsIlib _lhsIpos 
+     in  (Syn_ParamDefList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree _lhsOparams ))
+sem_ParamDefList_Cons :: T_ParamDef  ->
+                         T_ParamDefList  ->
+                         T_ParamDefList 
+sem_ParamDefList_Cons hd_ tl_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib
+       _lhsIpos ->
+         (let _lhsOparams :: ([(ParamName, Maybe Type)])
+              _hdOpos :: Int
+              _tlOpos :: Int
+              _lhsOannotatedTree :: ParamDefList 
+              _lhsOfixedUpIdentifiersTree :: ParamDefList 
+              _lhsOoriginalTree :: ParamDefList 
+              _hdOcat :: Catalog
+              _hdOidenv :: IDEnv
+              _hdOlib :: LocalBindings
+              _tlOcat :: Catalog
+              _tlOidenv :: IDEnv
+              _tlOlib :: LocalBindings
+              _hdIannotatedTree :: ParamDef 
+              _hdIfixedUpIdentifiersTree :: ParamDef 
+              _hdInamedType :: (Maybe Type)
+              _hdIoriginalTree :: ParamDef 
+              _hdIparamName :: ParamName
+              _tlIannotatedTree :: ParamDefList 
+              _tlIfixedUpIdentifiersTree :: ParamDefList 
+              _tlIoriginalTree :: ParamDefList 
+              _tlIparams :: ([(ParamName, Maybe Type)])
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/CreateFunction.ag"(line 53, column 13)
+              _lhsOparams =
+                  ((_hdIparamName, _hdInamedType) : _tlIparams)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/CreateFunction.ag"(line 54, column 13)
+              _hdOpos =
+                  _lhsIpos
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/CreateFunction.ag"(line 55, column 13)
+              _tlOpos =
+                  _lhsIpos + 1
+              -- self rule
+              _annotatedTree =
+                  (:) _hdIannotatedTree _tlIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  (:) _hdIoriginalTree _tlIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _hdOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _hdOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _hdOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _tlOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _tlOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _tlOlib =
+                  _lhsIlib
+              ( _hdIannotatedTree,_hdIfixedUpIdentifiersTree,_hdInamedType,_hdIoriginalTree,_hdIparamName) =
+                  hd_ _hdOcat _hdOidenv _hdOlib _hdOpos 
+              ( _tlIannotatedTree,_tlIfixedUpIdentifiersTree,_tlIoriginalTree,_tlIparams) =
+                  tl_ _tlOcat _tlOidenv _tlOlib _tlOpos 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOparams)))
+sem_ParamDefList_Nil :: T_ParamDefList 
+sem_ParamDefList_Nil  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib
+       _lhsIpos ->
+         (let _lhsOparams :: ([(ParamName, Maybe Type)])
+              _lhsOannotatedTree :: ParamDefList 
+              _lhsOfixedUpIdentifiersTree :: ParamDefList 
+              _lhsOoriginalTree :: ParamDefList 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/CreateFunction.ag"(line 52, column 12)
+              _lhsOparams =
+                  []
+              -- self rule
+              _annotatedTree =
+                  []
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  []
+              -- self rule
+              _originalTree =
+                  []
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOparams)))
+-- QueryExpr ---------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         csql                 : LocalBindings
+         expectedTypes        : [Maybe Type]
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         cidenv               : IDEnv
+         fixedUpIdentifiersTree : SELF 
+         libUpdates           : [LocalBindingsUpdate]
+         originalTree         : SELF 
+         uType                : Maybe [(String,Type)]
+   alternatives:
+      alternative CombineQueryExpr:
+         child ann            : {Annotation}
+         child ctype          : {CombineType}
+         child sel1           : QueryExpr 
+         child sel2           : QueryExpr 
+         visit 0:
+            local tpe         : {Et}
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Select:
+         child ann            : {Annotation}
+         child selDistinct    : {Distinct}
+         child selSelectList  : SelectList 
+         child selTref        : TableRefList 
+         child selWhere       : MaybeBoolExpr 
+         child selGroupBy     : ScalarExprList 
+         child selHaving      : MaybeBoolExpr 
+         child selOrderBy     : ScalarExprDirectionPairList 
+         child selLimit       : MaybeScalarExpr 
+         child selOffset      : MaybeScalarExpr 
+         visit 0:
+            local trefEnv     : _
+            local includeCorrelations : _
+            local newLib      : _
+            local slTypes     : {LocalBindings}
+            local tpe         : {Et}
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Values:
+         child ann            : {Annotation}
+         child vll            : ScalarExprListList 
+         visit 0:
+            local tpe         : {Et}
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative WithQueryExpr:
+         child ann            : {Annotation}
+         child withs          : WithQueryList 
+         child ex             : QueryExpr 
+         visit 0:
+            local tpe         : {Et}
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+data QueryExpr  = CombineQueryExpr (Annotation) (CombineType) (QueryExpr ) (QueryExpr ) 
+                | Select (Annotation) (Distinct) (SelectList ) (TableRefList ) (MaybeBoolExpr ) (ScalarExprList ) (MaybeBoolExpr ) (ScalarExprDirectionPairList ) (MaybeScalarExpr ) (MaybeScalarExpr ) 
+                | Values (Annotation) (ScalarExprListList ) 
+                | WithQueryExpr (Annotation) (WithQueryList ) (QueryExpr ) 
+                deriving ( Data,Eq,Show,Typeable)
+-- cata
+sem_QueryExpr :: QueryExpr  ->
+                 T_QueryExpr 
+sem_QueryExpr (CombineQueryExpr _ann _ctype _sel1 _sel2 )  =
+    (sem_QueryExpr_CombineQueryExpr _ann _ctype (sem_QueryExpr _sel1 ) (sem_QueryExpr _sel2 ) )
+sem_QueryExpr (Select _ann _selDistinct _selSelectList _selTref _selWhere _selGroupBy _selHaving _selOrderBy _selLimit _selOffset )  =
+    (sem_QueryExpr_Select _ann _selDistinct (sem_SelectList _selSelectList ) (sem_TableRefList _selTref ) (sem_MaybeBoolExpr _selWhere ) (sem_ScalarExprList _selGroupBy ) (sem_MaybeBoolExpr _selHaving ) (sem_ScalarExprDirectionPairList _selOrderBy ) (sem_MaybeScalarExpr _selLimit ) (sem_MaybeScalarExpr _selOffset ) )
+sem_QueryExpr (Values _ann _vll )  =
+    (sem_QueryExpr_Values _ann (sem_ScalarExprListList _vll ) )
+sem_QueryExpr (WithQueryExpr _ann _withs _ex )  =
+    (sem_QueryExpr_WithQueryExpr _ann (sem_WithQueryList _withs ) (sem_QueryExpr _ex ) )
+-- semantic domain
+type T_QueryExpr  = Catalog ->
+                    LocalBindings ->
+                    ([Maybe Type]) ->
+                    IDEnv ->
+                    LocalBindings ->
+                    ( QueryExpr ,IDEnv,QueryExpr ,([LocalBindingsUpdate]),QueryExpr ,(Maybe [(String,Type)]))
+data Inh_QueryExpr  = Inh_QueryExpr {cat_Inh_QueryExpr :: Catalog,csql_Inh_QueryExpr :: LocalBindings,expectedTypes_Inh_QueryExpr :: ([Maybe Type]),idenv_Inh_QueryExpr :: IDEnv,lib_Inh_QueryExpr :: LocalBindings}
+data Syn_QueryExpr  = Syn_QueryExpr {annotatedTree_Syn_QueryExpr :: QueryExpr ,cidenv_Syn_QueryExpr :: IDEnv,fixedUpIdentifiersTree_Syn_QueryExpr :: QueryExpr ,libUpdates_Syn_QueryExpr :: ([LocalBindingsUpdate]),originalTree_Syn_QueryExpr :: QueryExpr ,uType_Syn_QueryExpr :: (Maybe [(String,Type)])}
+wrap_QueryExpr :: T_QueryExpr  ->
+                  Inh_QueryExpr  ->
+                  Syn_QueryExpr 
+wrap_QueryExpr sem (Inh_QueryExpr _lhsIcat _lhsIcsql _lhsIexpectedTypes _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOcidenv,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree,_lhsOuType) = sem _lhsIcat _lhsIcsql _lhsIexpectedTypes _lhsIidenv _lhsIlib 
+     in  (Syn_QueryExpr _lhsOannotatedTree _lhsOcidenv _lhsOfixedUpIdentifiersTree _lhsOlibUpdates _lhsOoriginalTree _lhsOuType ))
+sem_QueryExpr_CombineQueryExpr :: Annotation ->
+                                  CombineType ->
+                                  T_QueryExpr  ->
+                                  T_QueryExpr  ->
+                                  T_QueryExpr 
+sem_QueryExpr_CombineQueryExpr ann_ ctype_ sel1_ sel2_  =
+    (\ _lhsIcat
+       _lhsIcsql
+       _lhsIexpectedTypes
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOcidenv :: IDEnv
+              _lhsOannotatedTree :: QueryExpr 
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _tpe :: Et
+              _lhsOuType :: (Maybe [(String,Type)])
+              _lhsOfixedUpIdentifiersTree :: QueryExpr 
+              _lhsOoriginalTree :: QueryExpr 
+              _sel1Ocat :: Catalog
+              _sel1Ocsql :: LocalBindings
+              _sel1OexpectedTypes :: ([Maybe Type])
+              _sel1Oidenv :: IDEnv
+              _sel1Olib :: LocalBindings
+              _sel2Ocat :: Catalog
+              _sel2Ocsql :: LocalBindings
+              _sel2OexpectedTypes :: ([Maybe Type])
+              _sel2Oidenv :: IDEnv
+              _sel2Olib :: LocalBindings
+              _sel1IannotatedTree :: QueryExpr 
+              _sel1Icidenv :: IDEnv
+              _sel1IfixedUpIdentifiersTree :: QueryExpr 
+              _sel1IlibUpdates :: ([LocalBindingsUpdate])
+              _sel1IoriginalTree :: QueryExpr 
+              _sel1IuType :: (Maybe [(String,Type)])
+              _sel2IannotatedTree :: QueryExpr 
+              _sel2Icidenv :: IDEnv
+              _sel2IfixedUpIdentifiersTree :: QueryExpr 
+              _sel2IlibUpdates :: ([LocalBindingsUpdate])
+              _sel2IoriginalTree :: QueryExpr 
+              _sel2IuType :: (Maybe [(String,Type)])
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 230, column 24)
+              _lhsOcidenv =
+                  _sel1Icidenv
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 29, column 9)
+              _lhsOannotatedTree =
+                  setTypeAddErrors _tpe     _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 141, column 9)
+              _lhsOlibUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 168, column 9)
+              _tpe =
+                  do
+                  sel1t <- lmt ((SetOfType . CompositeType) <$> _sel1IuType)
+                  sel2t <- lmt ((SetOfType . CompositeType) <$> _sel2IuType)
+                  typeCheckCombineSelect _lhsIcat sel1t sel2t
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 174, column 9)
+              _backTree =
+                  CombineQueryExpr ann_ ctype_
+                                _sel1IannotatedTree
+                                _sel2IannotatedTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 185, column 9)
+              _lhsOuType =
+                  etmt (_tpe     >>= unwrapSetOfComposite)
+              -- self rule
+              _annotatedTree =
+                  CombineQueryExpr ann_ ctype_ _sel1IannotatedTree _sel2IannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  CombineQueryExpr ann_ ctype_ _sel1IfixedUpIdentifiersTree _sel2IfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  CombineQueryExpr ann_ ctype_ _sel1IoriginalTree _sel2IoriginalTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _sel1Ocat =
+                  _lhsIcat
+              -- copy rule (down)
+              _sel1Ocsql =
+                  _lhsIcsql
+              -- copy rule (down)
+              _sel1OexpectedTypes =
+                  _lhsIexpectedTypes
+              -- copy rule (down)
+              _sel1Oidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _sel1Olib =
+                  _lhsIlib
+              -- copy rule (down)
+              _sel2Ocat =
+                  _lhsIcat
+              -- copy rule (down)
+              _sel2Ocsql =
+                  _lhsIcsql
+              -- copy rule (down)
+              _sel2OexpectedTypes =
+                  _lhsIexpectedTypes
+              -- copy rule (down)
+              _sel2Oidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _sel2Olib =
+                  _lhsIlib
+              ( _sel1IannotatedTree,_sel1Icidenv,_sel1IfixedUpIdentifiersTree,_sel1IlibUpdates,_sel1IoriginalTree,_sel1IuType) =
+                  sel1_ _sel1Ocat _sel1Ocsql _sel1OexpectedTypes _sel1Oidenv _sel1Olib 
+              ( _sel2IannotatedTree,_sel2Icidenv,_sel2IfixedUpIdentifiersTree,_sel2IlibUpdates,_sel2IoriginalTree,_sel2IuType) =
+                  sel2_ _sel2Ocat _sel2Ocsql _sel2OexpectedTypes _sel2Oidenv _sel2Olib 
+          in  ( _lhsOannotatedTree,_lhsOcidenv,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree,_lhsOuType)))
+sem_QueryExpr_Select :: Annotation ->
+                        Distinct ->
+                        T_SelectList  ->
+                        T_TableRefList  ->
+                        T_MaybeBoolExpr  ->
+                        T_ScalarExprList  ->
+                        T_MaybeBoolExpr  ->
+                        T_ScalarExprDirectionPairList  ->
+                        T_MaybeScalarExpr  ->
+                        T_MaybeScalarExpr  ->
+                        T_QueryExpr 
+sem_QueryExpr_Select ann_ selDistinct_ selSelectList_ selTref_ selWhere_ selGroupBy_ selHaving_ selOrderBy_ selLimit_ selOffset_  =
+    (\ _lhsIcat
+       _lhsIcsql
+       _lhsIexpectedTypes
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOfixedUpIdentifiersTree :: QueryExpr 
+              _lhsOcidenv :: IDEnv
+              _selSelectListOidenv :: IDEnv
+              _selWhereOidenv :: IDEnv
+              _selGroupByOidenv :: IDEnv
+              _selHavingOidenv :: IDEnv
+              _selOrderByOidenv :: IDEnv
+              _lhsOannotatedTree :: QueryExpr 
+              _selSelectListOlib :: LocalBindings
+              _selWhereOlib :: LocalBindings
+              _selHavingOlib :: LocalBindings
+              _selGroupByOlib :: LocalBindings
+              _slTypes :: LocalBindings
+              _selOrderByOlib :: LocalBindings
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _tpe :: Et
+              _lhsOuType :: (Maybe [(String,Type)])
+              _selGroupByOexpectedTypes :: ([Maybe Type])
+              _lhsOoriginalTree :: QueryExpr 
+              _selSelectListOcat :: Catalog
+              _selTrefOcat :: Catalog
+              _selTrefOidenv :: IDEnv
+              _selTrefOlib :: LocalBindings
+              _selWhereOcat :: Catalog
+              _selGroupByOcat :: Catalog
+              _selHavingOcat :: Catalog
+              _selOrderByOcat :: Catalog
+              _selLimitOcat :: Catalog
+              _selLimitOidenv :: IDEnv
+              _selLimitOlib :: LocalBindings
+              _selOffsetOcat :: Catalog
+              _selOffsetOidenv :: IDEnv
+              _selOffsetOlib :: LocalBindings
+              _selSelectListIannotatedTree :: SelectList 
+              _selSelectListIcidenv :: IDEnv
+              _selSelectListIfixedUpIdentifiersTree :: SelectList 
+              _selSelectListIlibUpdates :: ([LocalBindingsUpdate])
+              _selSelectListIlistType :: ([(String,Maybe Type)])
+              _selSelectListIoriginalTree :: SelectList 
+              _selTrefIannotatedTree :: TableRefList 
+              _selTrefIfixedUpIdentifiersTree :: TableRefList 
+              _selTrefIlibUpdates :: ([LocalBindingsUpdate])
+              _selTrefInewLib2 :: LocalBindings
+              _selTrefIoriginalTree :: TableRefList 
+              _selTrefItrefIDs :: ([(String,[String])])
+              _selWhereIannotatedTree :: MaybeBoolExpr 
+              _selWhereIfixedUpIdentifiersTree :: MaybeBoolExpr 
+              _selWhereIoriginalTree :: MaybeBoolExpr 
+              _selGroupByIannotatedTree :: ScalarExprList 
+              _selGroupByIfixedUpIdentifiersTree :: ScalarExprList 
+              _selGroupByIoriginalTree :: ScalarExprList 
+              _selGroupByIuType :: ([Maybe Type])
+              _selHavingIannotatedTree :: MaybeBoolExpr 
+              _selHavingIfixedUpIdentifiersTree :: MaybeBoolExpr 
+              _selHavingIoriginalTree :: MaybeBoolExpr 
+              _selOrderByIannotatedTree :: ScalarExprDirectionPairList 
+              _selOrderByIfixedUpIdentifiersTree :: ScalarExprDirectionPairList 
+              _selOrderByIoriginalTree :: ScalarExprDirectionPairList 
+              _selLimitIannotatedTree :: MaybeScalarExpr 
+              _selLimitIfixedUpIdentifiersTree :: MaybeScalarExpr 
+              _selLimitIoriginalTree :: MaybeScalarExpr 
+              _selLimitIuType :: (Maybe Type)
+              _selOffsetIannotatedTree :: MaybeScalarExpr 
+              _selOffsetIfixedUpIdentifiersTree :: MaybeScalarExpr 
+              _selOffsetIoriginalTree :: MaybeScalarExpr 
+              _selOffsetIuType :: (Maybe Type)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 187, column 9)
+              _lhsOfixedUpIdentifiersTree =
+                  Select ann_
+                         selDistinct_
+                         _selSelectListIfixedUpIdentifiersTree
+                         _selTrefIfixedUpIdentifiersTree
+                         _selWhereIfixedUpIdentifiersTree
+                         _selGroupByIfixedUpIdentifiersTree
+                         _selHavingIfixedUpIdentifiersTree
+                         _selOrderByIfixedUpIdentifiersTree
+                         _selLimitIfixedUpIdentifiersTree
+                         _selOffsetIfixedUpIdentifiersTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 229, column 14)
+              _lhsOcidenv =
+                  _selSelectListIcidenv
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 270, column 14)
+              _trefEnv =
+                  makeIDEnvP _selTrefItrefIDs
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 271, column 14)
+              _includeCorrelations =
+                  joinIDEnvs _lhsIidenv _trefEnv
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 272, column 14)
+              _selSelectListOidenv =
+                  _trefEnv
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 273, column 14)
+              _selWhereOidenv =
+                  _includeCorrelations
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 274, column 14)
+              _selGroupByOidenv =
+                  _trefEnv
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 275, column 14)
+              _selHavingOidenv =
+                  _includeCorrelations
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 276, column 14)
+              _selOrderByOidenv =
+                  _trefEnv
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 29, column 9)
+              _lhsOannotatedTree =
+                  setTypeAddErrors _tpe     _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 101, column 10)
+              _newLib =
+                  _selTrefInewLib2
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 102, column 10)
+              _selSelectListOlib =
+                  _newLib
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 104, column 10)
+              _selWhereOlib =
+                  joinBindings _newLib     _lhsIcsql
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 105, column 10)
+              _selHavingOlib =
+                  joinBindings _newLib     _lhsIcsql
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 106, column 10)
+              _selGroupByOlib =
+                  _newLib
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 111, column 10)
+              _slTypes =
+                  createLocalBindings $ Just [("",_selSelectListIlistType)]
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 112, column 10)
+              _selOrderByOlib =
+                  joinBindings _slTypes     _newLib
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 143, column 9)
+              _lhsOlibUpdates =
+                  _selSelectListIlibUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 155, column 9)
+              _tpe =
+                  Right $ SetOfType $ CompositeType $ fromMaybe [] $ liftList  _selSelectListIlistType
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 157, column 9)
+              _backTree =
+                  Select ann_
+                         selDistinct_
+                         _selSelectListIannotatedTree
+                         _selTrefIannotatedTree
+                         _selWhereIannotatedTree
+                         _selGroupByIannotatedTree
+                         _selHavingIannotatedTree
+                         _selOrderByIannotatedTree
+                         _selLimitIannotatedTree
+                         _selOffsetIannotatedTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 185, column 9)
+              _lhsOuType =
+                  etmt (_tpe     >>= unwrapSetOfComposite)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 150, column 14)
+              _selGroupByOexpectedTypes =
+                  []
+              -- self rule
+              _annotatedTree =
+                  Select ann_ selDistinct_ _selSelectListIannotatedTree _selTrefIannotatedTree _selWhereIannotatedTree _selGroupByIannotatedTree _selHavingIannotatedTree _selOrderByIannotatedTree _selLimitIannotatedTree _selOffsetIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Select ann_ selDistinct_ _selSelectListIfixedUpIdentifiersTree _selTrefIfixedUpIdentifiersTree _selWhereIfixedUpIdentifiersTree _selGroupByIfixedUpIdentifiersTree _selHavingIfixedUpIdentifiersTree _selOrderByIfixedUpIdentifiersTree _selLimitIfixedUpIdentifiersTree _selOffsetIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  Select ann_ selDistinct_ _selSelectListIoriginalTree _selTrefIoriginalTree _selWhereIoriginalTree _selGroupByIoriginalTree _selHavingIoriginalTree _selOrderByIoriginalTree _selLimitIoriginalTree _selOffsetIoriginalTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _selSelectListOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _selTrefOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _selTrefOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _selTrefOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _selWhereOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _selGroupByOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _selHavingOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _selOrderByOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _selLimitOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _selLimitOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _selLimitOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _selOffsetOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _selOffsetOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _selOffsetOlib =
+                  _lhsIlib
+              ( _selSelectListIannotatedTree,_selSelectListIcidenv,_selSelectListIfixedUpIdentifiersTree,_selSelectListIlibUpdates,_selSelectListIlistType,_selSelectListIoriginalTree) =
+                  selSelectList_ _selSelectListOcat _selSelectListOidenv _selSelectListOlib 
+              ( _selTrefIannotatedTree,_selTrefIfixedUpIdentifiersTree,_selTrefIlibUpdates,_selTrefInewLib2,_selTrefIoriginalTree,_selTrefItrefIDs) =
+                  selTref_ _selTrefOcat _selTrefOidenv _selTrefOlib 
+              ( _selWhereIannotatedTree,_selWhereIfixedUpIdentifiersTree,_selWhereIoriginalTree) =
+                  selWhere_ _selWhereOcat _selWhereOidenv _selWhereOlib 
+              ( _selGroupByIannotatedTree,_selGroupByIfixedUpIdentifiersTree,_selGroupByIoriginalTree,_selGroupByIuType) =
+                  selGroupBy_ _selGroupByOcat _selGroupByOexpectedTypes _selGroupByOidenv _selGroupByOlib 
+              ( _selHavingIannotatedTree,_selHavingIfixedUpIdentifiersTree,_selHavingIoriginalTree) =
+                  selHaving_ _selHavingOcat _selHavingOidenv _selHavingOlib 
+              ( _selOrderByIannotatedTree,_selOrderByIfixedUpIdentifiersTree,_selOrderByIoriginalTree) =
+                  selOrderBy_ _selOrderByOcat _selOrderByOidenv _selOrderByOlib 
+              ( _selLimitIannotatedTree,_selLimitIfixedUpIdentifiersTree,_selLimitIoriginalTree,_selLimitIuType) =
+                  selLimit_ _selLimitOcat _selLimitOidenv _selLimitOlib 
+              ( _selOffsetIannotatedTree,_selOffsetIfixedUpIdentifiersTree,_selOffsetIoriginalTree,_selOffsetIuType) =
+                  selOffset_ _selOffsetOcat _selOffsetOidenv _selOffsetOlib 
+          in  ( _lhsOannotatedTree,_lhsOcidenv,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree,_lhsOuType)))
+sem_QueryExpr_Values :: Annotation ->
+                        T_ScalarExprListList  ->
+                        T_QueryExpr 
+sem_QueryExpr_Values ann_ vll_  =
+    (\ _lhsIcat
+       _lhsIcsql
+       _lhsIexpectedTypes
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOcidenv :: IDEnv
+              _lhsOannotatedTree :: QueryExpr 
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _tpe :: Et
+              _lhsOuType :: (Maybe [(String,Type)])
+              _vllOexpectedTypes :: ([Maybe Type])
+              _lhsOfixedUpIdentifiersTree :: QueryExpr 
+              _lhsOoriginalTree :: QueryExpr 
+              _vllOcat :: Catalog
+              _vllOidenv :: IDEnv
+              _vllOlib :: LocalBindings
+              _vllIannotatedTree :: ScalarExprListList 
+              _vllIfixedUpIdentifiersTree :: ScalarExprListList 
+              _vllIoriginalTree :: ScalarExprListList 
+              _vllIuType :: ([[Maybe Type]])
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 231, column 14)
+              _lhsOcidenv =
+                  unimplementedIDEnv
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 29, column 9)
+              _lhsOannotatedTree =
+                  setTypeAddErrors _tpe     _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 141, column 9)
+              _lhsOlibUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 150, column 9)
+              _tpe =
+                  typeCheckValuesExpr
+                              _lhsIcat
+                              _vllIuType
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 153, column 9)
+              _backTree =
+                  Values ann_ _vllIannotatedTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 185, column 9)
+              _lhsOuType =
+                  etmt (_tpe     >>= unwrapSetOfComposite)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 164, column 14)
+              _vllOexpectedTypes =
+                  _lhsIexpectedTypes
+              -- self rule
+              _annotatedTree =
+                  Values ann_ _vllIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Values ann_ _vllIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  Values ann_ _vllIoriginalTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _vllOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _vllOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _vllOlib =
+                  _lhsIlib
+              ( _vllIannotatedTree,_vllIfixedUpIdentifiersTree,_vllIoriginalTree,_vllIuType) =
+                  vll_ _vllOcat _vllOexpectedTypes _vllOidenv _vllOlib 
+          in  ( _lhsOannotatedTree,_lhsOcidenv,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree,_lhsOuType)))
+sem_QueryExpr_WithQueryExpr :: Annotation ->
+                               T_WithQueryList  ->
+                               T_QueryExpr  ->
+                               T_QueryExpr 
+sem_QueryExpr_WithQueryExpr ann_ withs_ ex_  =
+    (\ _lhsIcat
+       _lhsIcsql
+       _lhsIexpectedTypes
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOcidenv :: IDEnv
+              _lhsOannotatedTree :: QueryExpr 
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _tpe :: Et
+              _exOcat :: Catalog
+              _withsOcatUpdates :: ([CatalogUpdate])
+              _lhsOuType :: (Maybe [(String,Type)])
+              _lhsOfixedUpIdentifiersTree :: QueryExpr 
+              _lhsOoriginalTree :: QueryExpr 
+              _withsOcat :: Catalog
+              _withsOidenv :: IDEnv
+              _withsOlib :: LocalBindings
+              _exOcsql :: LocalBindings
+              _exOexpectedTypes :: ([Maybe Type])
+              _exOidenv :: IDEnv
+              _exOlib :: LocalBindings
+              _withsIannotatedTree :: WithQueryList 
+              _withsIfixedUpIdentifiersTree :: WithQueryList 
+              _withsIoriginalTree :: WithQueryList 
+              _withsIproducedCat :: Catalog
+              _exIannotatedTree :: QueryExpr 
+              _exIcidenv :: IDEnv
+              _exIfixedUpIdentifiersTree :: QueryExpr 
+              _exIlibUpdates :: ([LocalBindingsUpdate])
+              _exIoriginalTree :: QueryExpr 
+              _exIuType :: (Maybe [(String,Type)])
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 232, column 21)
+              _lhsOcidenv =
+                  _exIcidenv
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 29, column 9)
+              _lhsOannotatedTree =
+                  setTypeAddErrors _tpe     _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 145, column 9)
+              _lhsOlibUpdates =
+                  _exIlibUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 178, column 9)
+              _tpe =
+                  lmt ((SetOfType . CompositeType) <$> _exIuType)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 179, column 9)
+              _backTree =
+                  WithQueryExpr ann_ _withsIannotatedTree _exIannotatedTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 180, column 9)
+              _exOcat =
+                  _withsIproducedCat
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 181, column 9)
+              _withsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 185, column 9)
+              _lhsOuType =
+                  etmt (_tpe     >>= unwrapSetOfComposite)
+              -- self rule
+              _annotatedTree =
+                  WithQueryExpr ann_ _withsIannotatedTree _exIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  WithQueryExpr ann_ _withsIfixedUpIdentifiersTree _exIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  WithQueryExpr ann_ _withsIoriginalTree _exIoriginalTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _withsOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _withsOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _withsOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _exOcsql =
+                  _lhsIcsql
+              -- copy rule (down)
+              _exOexpectedTypes =
+                  _lhsIexpectedTypes
+              -- copy rule (down)
+              _exOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _exOlib =
+                  _lhsIlib
+              ( _withsIannotatedTree,_withsIfixedUpIdentifiersTree,_withsIoriginalTree,_withsIproducedCat) =
+                  withs_ _withsOcat _withsOcatUpdates _withsOidenv _withsOlib 
+              ( _exIannotatedTree,_exIcidenv,_exIfixedUpIdentifiersTree,_exIlibUpdates,_exIoriginalTree,_exIuType) =
+                  ex_ _exOcat _exOcsql _exOexpectedTypes _exOidenv _exOlib 
+          in  ( _lhsOannotatedTree,_lhsOcidenv,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree,_lhsOuType)))
+-- Root --------------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+         producedCat          : Catalog
+         producedLib          : LocalBindings
+   alternatives:
+      alternative Root:
+         child statements     : StatementList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+data Root  = Root (StatementList ) 
+           deriving ( Show)
+-- cata
+sem_Root :: Root  ->
+            T_Root 
+sem_Root (Root _statements )  =
+    (sem_Root_Root (sem_StatementList _statements ) )
+-- semantic domain
+type T_Root  = Catalog ->
+               IDEnv ->
+               LocalBindings ->
+               ( Root ,Root ,Root ,Catalog,LocalBindings)
+data Inh_Root  = Inh_Root {cat_Inh_Root :: Catalog,idenv_Inh_Root :: IDEnv,lib_Inh_Root :: LocalBindings}
+data Syn_Root  = Syn_Root {annotatedTree_Syn_Root :: Root ,fixedUpIdentifiersTree_Syn_Root :: Root ,originalTree_Syn_Root :: Root ,producedCat_Syn_Root :: Catalog,producedLib_Syn_Root :: LocalBindings}
+wrap_Root :: T_Root  ->
+             Inh_Root  ->
+             Syn_Root 
+wrap_Root sem (Inh_Root _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOproducedCat,_lhsOproducedLib) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_Root _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree _lhsOproducedCat _lhsOproducedLib ))
+sem_Root_Root :: T_StatementList  ->
+                 T_Root 
+sem_Root_Root statements_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _statementsOcatUpdates :: ([CatalogUpdate])
+              _statementsOlibUpdates :: ([LocalBindingsUpdate])
+              _lhsOannotatedTree :: Root 
+              _lhsOfixedUpIdentifiersTree :: Root 
+              _lhsOoriginalTree :: Root 
+              _lhsOproducedCat :: Catalog
+              _lhsOproducedLib :: LocalBindings
+              _statementsOcat :: Catalog
+              _statementsOidenv :: IDEnv
+              _statementsOlib :: LocalBindings
+              _statementsIannotatedTree :: StatementList 
+              _statementsIfixedUpIdentifiersTree :: StatementList 
+              _statementsIoriginalTree :: StatementList 
+              _statementsIproducedCat :: Catalog
+              _statementsIproducedLib :: LocalBindings
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 107, column 12)
+              _statementsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 108, column 12)
+              _statementsOlibUpdates =
+                  []
+              -- self rule
+              _annotatedTree =
+                  Root _statementsIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Root _statementsIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  Root _statementsIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (up)
+              _lhsOproducedCat =
+                  _statementsIproducedCat
+              -- copy rule (up)
+              _lhsOproducedLib =
+                  _statementsIproducedLib
+              -- copy rule (down)
+              _statementsOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _statementsOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _statementsOlib =
+                  _lhsIlib
+              ( _statementsIannotatedTree,_statementsIfixedUpIdentifiersTree,_statementsIoriginalTree,_statementsIproducedCat,_statementsIproducedLib) =
+                  statements_ _statementsOcat _statementsOcatUpdates _statementsOidenv _statementsOlib _statementsOlibUpdates 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOproducedCat,_lhsOproducedLib)))
+-- RowConstraint -----------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+   alternatives:
+      alternative NotNullConstraint:
+         child ann            : {Annotation}
+         child name           : {String}
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative NullConstraint:
+         child ann            : {Annotation}
+         child name           : {String}
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative RowCheckConstraint:
+         child ann            : {Annotation}
+         child name           : {String}
+         child expr           : ScalarExpr 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative RowPrimaryKeyConstraint:
+         child ann            : {Annotation}
+         child name           : {String}
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative RowReferenceConstraint:
+         child ann            : {Annotation}
+         child name           : {String}
+         child table          : {String}
+         child att            : {Maybe String}
+         child onUpdate       : {Cascade}
+         child onDelete       : {Cascade}
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative RowUniqueConstraint:
+         child ann            : {Annotation}
+         child name           : {String}
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+data RowConstraint  = NotNullConstraint (Annotation) (String) 
+                    | NullConstraint (Annotation) (String) 
+                    | RowCheckConstraint (Annotation) (String) (ScalarExpr ) 
+                    | RowPrimaryKeyConstraint (Annotation) (String) 
+                    | RowReferenceConstraint (Annotation) (String) (String) ((Maybe String)) (Cascade) (Cascade) 
+                    | RowUniqueConstraint (Annotation) (String) 
+                    deriving ( Data,Eq,Show,Typeable)
+-- cata
+sem_RowConstraint :: RowConstraint  ->
+                     T_RowConstraint 
+sem_RowConstraint (NotNullConstraint _ann _name )  =
+    (sem_RowConstraint_NotNullConstraint _ann _name )
+sem_RowConstraint (NullConstraint _ann _name )  =
+    (sem_RowConstraint_NullConstraint _ann _name )
+sem_RowConstraint (RowCheckConstraint _ann _name _expr )  =
+    (sem_RowConstraint_RowCheckConstraint _ann _name (sem_ScalarExpr _expr ) )
+sem_RowConstraint (RowPrimaryKeyConstraint _ann _name )  =
+    (sem_RowConstraint_RowPrimaryKeyConstraint _ann _name )
+sem_RowConstraint (RowReferenceConstraint _ann _name _table _att _onUpdate _onDelete )  =
+    (sem_RowConstraint_RowReferenceConstraint _ann _name _table _att _onUpdate _onDelete )
+sem_RowConstraint (RowUniqueConstraint _ann _name )  =
+    (sem_RowConstraint_RowUniqueConstraint _ann _name )
+-- semantic domain
+type T_RowConstraint  = Catalog ->
+                        IDEnv ->
+                        LocalBindings ->
+                        ( RowConstraint ,RowConstraint ,RowConstraint )
+data Inh_RowConstraint  = Inh_RowConstraint {cat_Inh_RowConstraint :: Catalog,idenv_Inh_RowConstraint :: IDEnv,lib_Inh_RowConstraint :: LocalBindings}
+data Syn_RowConstraint  = Syn_RowConstraint {annotatedTree_Syn_RowConstraint :: RowConstraint ,fixedUpIdentifiersTree_Syn_RowConstraint :: RowConstraint ,originalTree_Syn_RowConstraint :: RowConstraint }
+wrap_RowConstraint :: T_RowConstraint  ->
+                      Inh_RowConstraint  ->
+                      Syn_RowConstraint 
+wrap_RowConstraint sem (Inh_RowConstraint _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_RowConstraint _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
+sem_RowConstraint_NotNullConstraint :: Annotation ->
+                                       String ->
+                                       T_RowConstraint 
+sem_RowConstraint_NotNullConstraint ann_ name_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: RowConstraint 
+              _lhsOfixedUpIdentifiersTree :: RowConstraint 
+              _lhsOoriginalTree :: RowConstraint 
+              -- self rule
+              _annotatedTree =
+                  NotNullConstraint ann_ name_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  NotNullConstraint ann_ name_
+              -- self rule
+              _originalTree =
+                  NotNullConstraint ann_ name_
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+sem_RowConstraint_NullConstraint :: Annotation ->
+                                    String ->
+                                    T_RowConstraint 
+sem_RowConstraint_NullConstraint ann_ name_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: RowConstraint 
+              _lhsOfixedUpIdentifiersTree :: RowConstraint 
+              _lhsOoriginalTree :: RowConstraint 
+              -- self rule
+              _annotatedTree =
+                  NullConstraint ann_ name_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  NullConstraint ann_ name_
+              -- self rule
+              _originalTree =
+                  NullConstraint ann_ name_
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+sem_RowConstraint_RowCheckConstraint :: Annotation ->
+                                        String ->
+                                        T_ScalarExpr  ->
+                                        T_RowConstraint 
+sem_RowConstraint_RowCheckConstraint ann_ name_ expr_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _exprOexpectedType :: (Maybe Type)
+              _lhsOannotatedTree :: RowConstraint 
+              _lhsOfixedUpIdentifiersTree :: RowConstraint 
+              _lhsOoriginalTree :: RowConstraint 
+              _exprOcat :: Catalog
+              _exprOidenv :: IDEnv
+              _exprOlib :: LocalBindings
+              _exprIannotatedTree :: ScalarExpr 
+              _exprIfixedUpIdentifiersTree :: ScalarExpr 
+              _exprIoriginalTree :: ScalarExpr 
+              _exprIuType :: (Maybe Type)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 103, column 26)
+              _exprOexpectedType =
+                  Nothing
+              -- self rule
+              _annotatedTree =
+                  RowCheckConstraint ann_ name_ _exprIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  RowCheckConstraint ann_ name_ _exprIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  RowCheckConstraint ann_ name_ _exprIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _exprOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _exprOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _exprOlib =
+                  _lhsIlib
+              ( _exprIannotatedTree,_exprIfixedUpIdentifiersTree,_exprIoriginalTree,_exprIuType) =
+                  expr_ _exprOcat _exprOexpectedType _exprOidenv _exprOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+sem_RowConstraint_RowPrimaryKeyConstraint :: Annotation ->
+                                             String ->
+                                             T_RowConstraint 
+sem_RowConstraint_RowPrimaryKeyConstraint ann_ name_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: RowConstraint 
+              _lhsOfixedUpIdentifiersTree :: RowConstraint 
+              _lhsOoriginalTree :: RowConstraint 
+              -- self rule
+              _annotatedTree =
+                  RowPrimaryKeyConstraint ann_ name_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  RowPrimaryKeyConstraint ann_ name_
+              -- self rule
+              _originalTree =
+                  RowPrimaryKeyConstraint ann_ name_
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+sem_RowConstraint_RowReferenceConstraint :: Annotation ->
+                                            String ->
+                                            String ->
+                                            (Maybe String) ->
+                                            Cascade ->
+                                            Cascade ->
+                                            T_RowConstraint 
+sem_RowConstraint_RowReferenceConstraint ann_ name_ table_ att_ onUpdate_ onDelete_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: RowConstraint 
+              _lhsOfixedUpIdentifiersTree :: RowConstraint 
+              _lhsOoriginalTree :: RowConstraint 
+              -- self rule
+              _annotatedTree =
+                  RowReferenceConstraint ann_ name_ table_ att_ onUpdate_ onDelete_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  RowReferenceConstraint ann_ name_ table_ att_ onUpdate_ onDelete_
+              -- self rule
+              _originalTree =
+                  RowReferenceConstraint ann_ name_ table_ att_ onUpdate_ onDelete_
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+sem_RowConstraint_RowUniqueConstraint :: Annotation ->
+                                         String ->
+                                         T_RowConstraint 
+sem_RowConstraint_RowUniqueConstraint ann_ name_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: RowConstraint 
+              _lhsOfixedUpIdentifiersTree :: RowConstraint 
+              _lhsOoriginalTree :: RowConstraint 
+              -- self rule
+              _annotatedTree =
+                  RowUniqueConstraint ann_ name_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  RowUniqueConstraint ann_ name_
+              -- self rule
+              _originalTree =
+                  RowUniqueConstraint ann_ name_
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+-- RowConstraintList -------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+   alternatives:
+      alternative Cons:
+         child hd             : RowConstraint 
+         child tl             : RowConstraintList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Nil:
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+type RowConstraintList  = [RowConstraint ]
+-- cata
+sem_RowConstraintList :: RowConstraintList  ->
+                         T_RowConstraintList 
+sem_RowConstraintList list  =
+    (Prelude.foldr sem_RowConstraintList_Cons sem_RowConstraintList_Nil (Prelude.map sem_RowConstraint list) )
+-- semantic domain
+type T_RowConstraintList  = Catalog ->
+                            IDEnv ->
+                            LocalBindings ->
+                            ( RowConstraintList ,RowConstraintList ,RowConstraintList )
+data Inh_RowConstraintList  = Inh_RowConstraintList {cat_Inh_RowConstraintList :: Catalog,idenv_Inh_RowConstraintList :: IDEnv,lib_Inh_RowConstraintList :: LocalBindings}
+data Syn_RowConstraintList  = Syn_RowConstraintList {annotatedTree_Syn_RowConstraintList :: RowConstraintList ,fixedUpIdentifiersTree_Syn_RowConstraintList :: RowConstraintList ,originalTree_Syn_RowConstraintList :: RowConstraintList }
+wrap_RowConstraintList :: T_RowConstraintList  ->
+                          Inh_RowConstraintList  ->
+                          Syn_RowConstraintList 
+wrap_RowConstraintList sem (Inh_RowConstraintList _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_RowConstraintList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
+sem_RowConstraintList_Cons :: T_RowConstraint  ->
+                              T_RowConstraintList  ->
+                              T_RowConstraintList 
+sem_RowConstraintList_Cons hd_ tl_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: RowConstraintList 
+              _lhsOfixedUpIdentifiersTree :: RowConstraintList 
+              _lhsOoriginalTree :: RowConstraintList 
+              _hdOcat :: Catalog
+              _hdOidenv :: IDEnv
+              _hdOlib :: LocalBindings
+              _tlOcat :: Catalog
+              _tlOidenv :: IDEnv
+              _tlOlib :: LocalBindings
+              _hdIannotatedTree :: RowConstraint 
+              _hdIfixedUpIdentifiersTree :: RowConstraint 
+              _hdIoriginalTree :: RowConstraint 
+              _tlIannotatedTree :: RowConstraintList 
+              _tlIfixedUpIdentifiersTree :: RowConstraintList 
+              _tlIoriginalTree :: RowConstraintList 
+              -- self rule
+              _annotatedTree =
+                  (:) _hdIannotatedTree _tlIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  (:) _hdIoriginalTree _tlIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _hdOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _hdOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _hdOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _tlOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _tlOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _tlOlib =
+                  _lhsIlib
+              ( _hdIannotatedTree,_hdIfixedUpIdentifiersTree,_hdIoriginalTree) =
+                  hd_ _hdOcat _hdOidenv _hdOlib 
+              ( _tlIannotatedTree,_tlIfixedUpIdentifiersTree,_tlIoriginalTree) =
+                  tl_ _tlOcat _tlOidenv _tlOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+sem_RowConstraintList_Nil :: T_RowConstraintList 
+sem_RowConstraintList_Nil  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: RowConstraintList 
+              _lhsOfixedUpIdentifiersTree :: RowConstraintList 
+              _lhsOoriginalTree :: RowConstraintList 
+              -- self rule
+              _annotatedTree =
+                  []
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  []
+              -- self rule
+              _originalTree =
+                  []
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+-- SQIdentifier ------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+         tbAnnotatedTree      : SQIdentifier 
+         tbUType              : Maybe ([(String,Type)],[(String,Type)])
+   alternatives:
+      alternative SQIdentifier:
+         child ann            : {Annotation}
+         child is             : {[String]}
+         visit 0:
+            local tpe         : {E ([(String,Type)],[(String,Type)])}
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+data SQIdentifier  = SQIdentifier (Annotation) (([String])) 
+                   deriving ( Data,Eq,Show,Typeable)
+-- cata
+sem_SQIdentifier :: SQIdentifier  ->
+                    T_SQIdentifier 
+sem_SQIdentifier (SQIdentifier _ann _is )  =
+    (sem_SQIdentifier_SQIdentifier _ann _is )
+-- semantic domain
+type T_SQIdentifier  = Catalog ->
+                       IDEnv ->
+                       LocalBindings ->
+                       ( SQIdentifier ,SQIdentifier ,SQIdentifier ,SQIdentifier ,(Maybe ([(String,Type)],[(String,Type)])))
+data Inh_SQIdentifier  = Inh_SQIdentifier {cat_Inh_SQIdentifier :: Catalog,idenv_Inh_SQIdentifier :: IDEnv,lib_Inh_SQIdentifier :: LocalBindings}
+data Syn_SQIdentifier  = Syn_SQIdentifier {annotatedTree_Syn_SQIdentifier :: SQIdentifier ,fixedUpIdentifiersTree_Syn_SQIdentifier :: SQIdentifier ,originalTree_Syn_SQIdentifier :: SQIdentifier ,tbAnnotatedTree_Syn_SQIdentifier :: SQIdentifier ,tbUType_Syn_SQIdentifier :: (Maybe ([(String,Type)],[(String,Type)]))}
+wrap_SQIdentifier :: T_SQIdentifier  ->
+                     Inh_SQIdentifier  ->
+                     Syn_SQIdentifier 
+wrap_SQIdentifier sem (Inh_SQIdentifier _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOtbAnnotatedTree,_lhsOtbUType) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_SQIdentifier _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree _lhsOtbAnnotatedTree _lhsOtbUType ))
+sem_SQIdentifier_SQIdentifier :: Annotation ->
+                                 ([String]) ->
+                                 T_SQIdentifier 
+sem_SQIdentifier_SQIdentifier ann_ is_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _tpe :: (E ([(String,Type)],[(String,Type)]))
+              _lhsOtbUType :: (Maybe ([(String,Type)],[(String,Type)]))
+              _lhsOtbAnnotatedTree :: SQIdentifier 
+              _lhsOannotatedTree :: SQIdentifier 
+              _lhsOfixedUpIdentifiersTree :: SQIdentifier 
+              _lhsOoriginalTree :: SQIdentifier 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 67, column 9)
+              _tpe =
+                  catCompositeAttrsPair _lhsIcat relationComposites (last is_)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 68, column 9)
+              _lhsOtbUType =
+                  either (const Nothing) Just _tpe
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 69, column 9)
+              _lhsOtbAnnotatedTree =
+                  updateAnnotation
+                    (\a -> a {errs = errs a ++ tes _tpe    }) _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 72, column 9)
+              _backTree =
+                  SQIdentifier ann_ is_
+              -- self rule
+              _annotatedTree =
+                  SQIdentifier ann_ is_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  SQIdentifier ann_ is_
+              -- self rule
+              _originalTree =
+                  SQIdentifier ann_ is_
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOtbAnnotatedTree,_lhsOtbUType)))
+-- ScalarExpr --------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         expectedType         : Maybe Type
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+         uType                : Maybe Type
+   alternatives:
+      alternative BooleanLit:
+         child ann            : {Annotation}
+         child b              : {Bool}
+         visit 0:
+            local prototype   : {Maybe FunctionPrototype}
+            local tpe         : {Et}
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Case:
+         child ann            : {Annotation}
+         child cases          : CaseScalarExprListScalarExprPairList 
+         child els            : MaybeScalarExpr 
+         visit 0:
+            local prototype   : {Maybe FunctionPrototype}
+            local whenTypes   : _
+            local thenTypes   : _
+            local tpe         : {Et}
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative CaseSimple:
+         child ann            : {Annotation}
+         child value          : ScalarExpr 
+         child cases          : CaseScalarExprListScalarExprPairList 
+         child els            : MaybeScalarExpr 
+         visit 0:
+            local prototype   : {Maybe FunctionPrototype}
+            local whenTypes   : _
+            local thenTypes   : _
+            local tpe         : {Et}
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Cast:
+         child ann            : {Annotation}
+         child expr           : ScalarExpr 
+         child tn             : TypeName 
+         visit 0:
+            local prototype   : {Maybe FunctionPrototype}
+            local tpe         : {Et}
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Exists:
+         child ann            : {Annotation}
+         child sel            : QueryExpr 
+         visit 0:
+            local prototype   : {Maybe FunctionPrototype}
+            local tpe         : {Et}
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Extract:
+         child ann            : {Annotation}
+         child field          : {ExtractField}
+         child e              : ScalarExpr 
+         visit 0:
+            local prototype   : {Maybe FunctionPrototype}
+            local tpe         : {Et}
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative FunCall:
+         child ann            : {Annotation}
+         child funName        : {String}
+         child args           : ScalarExprList 
+         visit 0:
+            local _tup1       : _
+            local tpe         : {Et}
+            local prototype   : _
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Identifier:
+         child ann            : {Annotation}
+         child i              : {String}
+         visit 0:
+            local prototype   : {Maybe FunctionPrototype}
+            local tpe         : {Et}
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative InPredicate:
+         child ann            : {Annotation}
+         child expr           : ScalarExpr 
+         child i              : {Bool}
+         child list           : InList 
+         visit 0:
+            local prototype   : {Maybe FunctionPrototype}
+            local rt          : {Either [TypeError] Type}
+            local tpe         : {Et}
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Interval:
+         child ann            : {Annotation}
+         child value          : {String}
+         child field          : {IntervalField}
+         child prec           : {Maybe Int}
+         visit 0:
+            local prototype   : {Maybe FunctionPrototype}
+            local tpe         : {Et}
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative LiftOperator:
+         child ann            : {Annotation}
+         child oper           : {String}
+         child flav           : {LiftFlavour}
+         child args           : ScalarExprList 
+         visit 0:
+            local prototype   : {Maybe FunctionPrototype}
+            local tpe         : {Et}
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative NullLit:
+         child ann            : {Annotation}
+         visit 0:
+            local prototype   : {Maybe FunctionPrototype}
+            local tpe         : {Et}
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative NumberLit:
+         child ann            : {Annotation}
+         child d              : {String}
+         visit 0:
+            local prototype   : {Maybe FunctionPrototype}
+            local tpe         : {Et}
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Placeholder:
+         child ann            : {Annotation}
+         visit 0:
+            local prototype   : {Maybe FunctionPrototype}
+            local tpe         : {Et}
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative PositionalArg:
+         child ann            : {Annotation}
+         child p              : {Integer}
+         visit 0:
+            local prototype   : {Maybe FunctionPrototype}
+            local tpe         : {Et}
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative QIdentifier:
+         child ann            : {Annotation}
+         child qual           : ScalarExpr 
+         child i              : {String}
+         visit 0:
+            local prototype   : {Maybe FunctionPrototype}
+            local tpe         : {Et}
+            local qid         : {Maybe String}
+            local backTree    : _
+            local qAnnTreeNoUnrec : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative ScalarSubQuery:
+         child ann            : {Annotation}
+         child sel            : QueryExpr 
+         visit 0:
+            local prototype   : {Maybe FunctionPrototype}
+            local tpe         : {Et}
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative StringLit:
+         child ann            : {Annotation}
+         child value          : {String}
+         visit 0:
+            local prototype   : {Maybe FunctionPrototype}
+            local tpe         : {Et}
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative TypedStringLit:
+         child ann            : {Annotation}
+         child tn             : TypeName 
+         child value          : {String}
+         visit 0:
+            local prototype   : {Maybe FunctionPrototype}
+            local tpe         : {Et}
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative WindowFn:
+         child ann            : {Annotation}
+         child fn             : ScalarExpr 
+         child partitionBy    : ScalarExprList 
+         child orderBy        : ScalarExprList 
+         child dir            : {Direction}
+         child frm            : {FrameClause}
+         visit 0:
+            local prototype   : {Maybe FunctionPrototype}
+            local tpe         : {Et}
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+data ScalarExpr  = BooleanLit (Annotation) (Bool) 
+                 | Case (Annotation) (CaseScalarExprListScalarExprPairList ) (MaybeScalarExpr ) 
+                 | CaseSimple (Annotation) (ScalarExpr ) (CaseScalarExprListScalarExprPairList ) (MaybeScalarExpr ) 
+                 | Cast (Annotation) (ScalarExpr ) (TypeName ) 
+                 | Exists (Annotation) (QueryExpr ) 
+                 | Extract (Annotation) (ExtractField) (ScalarExpr ) 
+                 | FunCall (Annotation) (String) (ScalarExprList ) 
+                 | Identifier (Annotation) (String) 
+                 | InPredicate (Annotation) (ScalarExpr ) (Bool) (InList ) 
+                 | Interval (Annotation) (String) (IntervalField) ((Maybe Int)) 
+                 | LiftOperator (Annotation) (String) (LiftFlavour) (ScalarExprList ) 
+                 | NullLit (Annotation) 
+                 | NumberLit (Annotation) (String) 
+                 | Placeholder (Annotation) 
+                 | PositionalArg (Annotation) (Integer) 
+                 | QIdentifier (Annotation) (ScalarExpr ) (String) 
+                 | ScalarSubQuery (Annotation) (QueryExpr ) 
+                 | StringLit (Annotation) (String) 
+                 | TypedStringLit (Annotation) (TypeName ) (String) 
+                 | WindowFn (Annotation) (ScalarExpr ) (ScalarExprList ) (ScalarExprList ) (Direction) (FrameClause) 
+                 deriving ( Data,Eq,Show,Typeable)
+-- cata
+sem_ScalarExpr :: ScalarExpr  ->
+                  T_ScalarExpr 
+sem_ScalarExpr (BooleanLit _ann _b )  =
+    (sem_ScalarExpr_BooleanLit _ann _b )
+sem_ScalarExpr (Case _ann _cases _els )  =
+    (sem_ScalarExpr_Case _ann (sem_CaseScalarExprListScalarExprPairList _cases ) (sem_MaybeScalarExpr _els ) )
+sem_ScalarExpr (CaseSimple _ann _value _cases _els )  =
+    (sem_ScalarExpr_CaseSimple _ann (sem_ScalarExpr _value ) (sem_CaseScalarExprListScalarExprPairList _cases ) (sem_MaybeScalarExpr _els ) )
+sem_ScalarExpr (Cast _ann _expr _tn )  =
+    (sem_ScalarExpr_Cast _ann (sem_ScalarExpr _expr ) (sem_TypeName _tn ) )
+sem_ScalarExpr (Exists _ann _sel )  =
+    (sem_ScalarExpr_Exists _ann (sem_QueryExpr _sel ) )
+sem_ScalarExpr (Extract _ann _field _e )  =
+    (sem_ScalarExpr_Extract _ann _field (sem_ScalarExpr _e ) )
+sem_ScalarExpr (FunCall _ann _funName _args )  =
+    (sem_ScalarExpr_FunCall _ann _funName (sem_ScalarExprList _args ) )
+sem_ScalarExpr (Identifier _ann _i )  =
+    (sem_ScalarExpr_Identifier _ann _i )
+sem_ScalarExpr (InPredicate _ann _expr _i _list )  =
+    (sem_ScalarExpr_InPredicate _ann (sem_ScalarExpr _expr ) _i (sem_InList _list ) )
+sem_ScalarExpr (Interval _ann _value _field _prec )  =
+    (sem_ScalarExpr_Interval _ann _value _field _prec )
+sem_ScalarExpr (LiftOperator _ann _oper _flav _args )  =
+    (sem_ScalarExpr_LiftOperator _ann _oper _flav (sem_ScalarExprList _args ) )
+sem_ScalarExpr (NullLit _ann )  =
+    (sem_ScalarExpr_NullLit _ann )
+sem_ScalarExpr (NumberLit _ann _d )  =
+    (sem_ScalarExpr_NumberLit _ann _d )
+sem_ScalarExpr (Placeholder _ann )  =
+    (sem_ScalarExpr_Placeholder _ann )
+sem_ScalarExpr (PositionalArg _ann _p )  =
+    (sem_ScalarExpr_PositionalArg _ann _p )
+sem_ScalarExpr (QIdentifier _ann _qual _i )  =
+    (sem_ScalarExpr_QIdentifier _ann (sem_ScalarExpr _qual ) _i )
+sem_ScalarExpr (ScalarSubQuery _ann _sel )  =
+    (sem_ScalarExpr_ScalarSubQuery _ann (sem_QueryExpr _sel ) )
+sem_ScalarExpr (StringLit _ann _value )  =
+    (sem_ScalarExpr_StringLit _ann _value )
+sem_ScalarExpr (TypedStringLit _ann _tn _value )  =
+    (sem_ScalarExpr_TypedStringLit _ann (sem_TypeName _tn ) _value )
+sem_ScalarExpr (WindowFn _ann _fn _partitionBy _orderBy _dir _frm )  =
+    (sem_ScalarExpr_WindowFn _ann (sem_ScalarExpr _fn ) (sem_ScalarExprList _partitionBy ) (sem_ScalarExprList _orderBy ) _dir _frm )
+-- semantic domain
+type T_ScalarExpr  = Catalog ->
+                     (Maybe Type) ->
+                     IDEnv ->
+                     LocalBindings ->
+                     ( ScalarExpr ,ScalarExpr ,ScalarExpr ,(Maybe Type))
+data Inh_ScalarExpr  = Inh_ScalarExpr {cat_Inh_ScalarExpr :: Catalog,expectedType_Inh_ScalarExpr :: (Maybe Type),idenv_Inh_ScalarExpr :: IDEnv,lib_Inh_ScalarExpr :: LocalBindings}
+data Syn_ScalarExpr  = Syn_ScalarExpr {annotatedTree_Syn_ScalarExpr :: ScalarExpr ,fixedUpIdentifiersTree_Syn_ScalarExpr :: ScalarExpr ,originalTree_Syn_ScalarExpr :: ScalarExpr ,uType_Syn_ScalarExpr :: (Maybe Type)}
+wrap_ScalarExpr :: T_ScalarExpr  ->
+                   Inh_ScalarExpr  ->
+                   Syn_ScalarExpr 
+wrap_ScalarExpr sem (Inh_ScalarExpr _lhsIcat _lhsIexpectedType _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType) = sem _lhsIcat _lhsIexpectedType _lhsIidenv _lhsIlib 
+     in  (Syn_ScalarExpr _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree _lhsOuType ))
+sem_ScalarExpr_BooleanLit :: Annotation ->
+                             Bool ->
+                             T_ScalarExpr 
+sem_ScalarExpr_BooleanLit ann_ b_  =
+    (\ _lhsIcat
+       _lhsIexpectedType
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: ScalarExpr 
+              _prototype :: (Maybe FunctionPrototype)
+              _lhsOuType :: (Maybe Type)
+              _tpe :: Et
+              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
+              _lhsOoriginalTree :: ScalarExpr 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                    (setTypeAddErrorsA _tpe
+                     . \a -> a {fnProt = _prototype
+                               ,infType = msum [_lhsIexpectedType
+                                               ,etmt _tpe
+                                               ,Nothing]}) _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
+              _prototype =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
+              _lhsOuType =
+                  etmt _tpe
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 155, column 19)
+              _tpe =
+                  Right typeBool
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 165, column 9)
+              _backTree =
+                  BooleanLit ann_ b_
+              -- self rule
+              _annotatedTree =
+                  BooleanLit ann_ b_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  BooleanLit ann_ b_
+              -- self rule
+              _originalTree =
+                  BooleanLit ann_ b_
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
+sem_ScalarExpr_Case :: Annotation ->
+                       T_CaseScalarExprListScalarExprPairList  ->
+                       T_MaybeScalarExpr  ->
+                       T_ScalarExpr 
+sem_ScalarExpr_Case ann_ cases_ els_  =
+    (\ _lhsIcat
+       _lhsIexpectedType
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: ScalarExpr 
+              _prototype :: (Maybe FunctionPrototype)
+              _lhsOuType :: (Maybe Type)
+              _tpe :: Et
+              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
+              _lhsOoriginalTree :: ScalarExpr 
+              _casesOcat :: Catalog
+              _casesOidenv :: IDEnv
+              _casesOlib :: LocalBindings
+              _elsOcat :: Catalog
+              _elsOidenv :: IDEnv
+              _elsOlib :: LocalBindings
+              _casesIannotatedTree :: CaseScalarExprListScalarExprPairList 
+              _casesIfixedUpIdentifiersTree :: CaseScalarExprListScalarExprPairList 
+              _casesIoriginalTree :: CaseScalarExprListScalarExprPairList 
+              _casesIthenTypes :: ([Maybe Type])
+              _casesIwhenTypes :: ([[Maybe Type]])
+              _elsIannotatedTree :: MaybeScalarExpr 
+              _elsIfixedUpIdentifiersTree :: MaybeScalarExpr 
+              _elsIoriginalTree :: MaybeScalarExpr 
+              _elsIuType :: (Maybe Type)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                    (setTypeAddErrorsA _tpe
+                     . \a -> a {fnProt = _prototype
+                               ,infType = msum [_lhsIexpectedType
+                                               ,etmt _tpe
+                                               ,Nothing]}) _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
+              _prototype =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
+              _lhsOuType =
+                  etmt _tpe
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 276, column 9)
+              _whenTypes =
+                  _casesIwhenTypes
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 277, column 9)
+              _thenTypes =
+                  _casesIthenTypes ++ maybe [] ((:[]) . Just) _elsIuType
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 281, column 9)
+              _tpe =
+                  do
+                  wt <- mapM lmt $ concat _whenTypes
+                  errorWhen (any (/= typeBool) wt)
+                      [WrongTypes typeBool wt]
+                  tt <- mapM lmt _thenTypes
+                  resolveResultSetType _lhsIcat tt
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 289, column 9)
+              _backTree =
+                  Case ann_ _casesIannotatedTree _elsIannotatedTree
+              -- self rule
+              _annotatedTree =
+                  Case ann_ _casesIannotatedTree _elsIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Case ann_ _casesIfixedUpIdentifiersTree _elsIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  Case ann_ _casesIoriginalTree _elsIoriginalTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _casesOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _casesOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _casesOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _elsOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _elsOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _elsOlib =
+                  _lhsIlib
+              ( _casesIannotatedTree,_casesIfixedUpIdentifiersTree,_casesIoriginalTree,_casesIthenTypes,_casesIwhenTypes) =
+                  cases_ _casesOcat _casesOidenv _casesOlib 
+              ( _elsIannotatedTree,_elsIfixedUpIdentifiersTree,_elsIoriginalTree,_elsIuType) =
+                  els_ _elsOcat _elsOidenv _elsOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
+sem_ScalarExpr_CaseSimple :: Annotation ->
+                             T_ScalarExpr  ->
+                             T_CaseScalarExprListScalarExprPairList  ->
+                             T_MaybeScalarExpr  ->
+                             T_ScalarExpr 
+sem_ScalarExpr_CaseSimple ann_ value_ cases_ els_  =
+    (\ _lhsIcat
+       _lhsIexpectedType
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: ScalarExpr 
+              _prototype :: (Maybe FunctionPrototype)
+              _lhsOuType :: (Maybe Type)
+              _tpe :: Et
+              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
+              _lhsOoriginalTree :: ScalarExpr 
+              _valueOcat :: Catalog
+              _valueOexpectedType :: (Maybe Type)
+              _valueOidenv :: IDEnv
+              _valueOlib :: LocalBindings
+              _casesOcat :: Catalog
+              _casesOidenv :: IDEnv
+              _casesOlib :: LocalBindings
+              _elsOcat :: Catalog
+              _elsOidenv :: IDEnv
+              _elsOlib :: LocalBindings
+              _valueIannotatedTree :: ScalarExpr 
+              _valueIfixedUpIdentifiersTree :: ScalarExpr 
+              _valueIoriginalTree :: ScalarExpr 
+              _valueIuType :: (Maybe Type)
+              _casesIannotatedTree :: CaseScalarExprListScalarExprPairList 
+              _casesIfixedUpIdentifiersTree :: CaseScalarExprListScalarExprPairList 
+              _casesIoriginalTree :: CaseScalarExprListScalarExprPairList 
+              _casesIthenTypes :: ([Maybe Type])
+              _casesIwhenTypes :: ([[Maybe Type]])
+              _elsIannotatedTree :: MaybeScalarExpr 
+              _elsIfixedUpIdentifiersTree :: MaybeScalarExpr 
+              _elsIoriginalTree :: MaybeScalarExpr 
+              _elsIuType :: (Maybe Type)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                    (setTypeAddErrorsA _tpe
+                     . \a -> a {fnProt = _prototype
+                               ,infType = msum [_lhsIexpectedType
+                                               ,etmt _tpe
+                                               ,Nothing]}) _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
+              _prototype =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
+              _lhsOuType =
+                  etmt _tpe
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 276, column 9)
+              _whenTypes =
+                  _casesIwhenTypes
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 277, column 9)
+              _thenTypes =
+                  _casesIthenTypes ++ maybe [] ((:[]) . Just) _elsIuType
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 294, column 9)
+              _tpe =
+                  do
+                  wt <- mapM lmt $ concat _whenTypes
+                  vt <- lmt _valueIuType
+                  _ <- resolveResultSetType _lhsIcat (vt : wt)
+                  tt <- mapM lmt _thenTypes
+                  resolveResultSetType _lhsIcat tt
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 301, column 9)
+              _backTree =
+                  CaseSimple ann_
+                             _valueIannotatedTree
+                             _casesIannotatedTree
+                             _elsIannotatedTree
+              -- self rule
+              _annotatedTree =
+                  CaseSimple ann_ _valueIannotatedTree _casesIannotatedTree _elsIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  CaseSimple ann_ _valueIfixedUpIdentifiersTree _casesIfixedUpIdentifiersTree _elsIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  CaseSimple ann_ _valueIoriginalTree _casesIoriginalTree _elsIoriginalTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _valueOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _valueOexpectedType =
+                  _lhsIexpectedType
+              -- copy rule (down)
+              _valueOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _valueOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _casesOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _casesOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _casesOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _elsOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _elsOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _elsOlib =
+                  _lhsIlib
+              ( _valueIannotatedTree,_valueIfixedUpIdentifiersTree,_valueIoriginalTree,_valueIuType) =
+                  value_ _valueOcat _valueOexpectedType _valueOidenv _valueOlib 
+              ( _casesIannotatedTree,_casesIfixedUpIdentifiersTree,_casesIoriginalTree,_casesIthenTypes,_casesIwhenTypes) =
+                  cases_ _casesOcat _casesOidenv _casesOlib 
+              ( _elsIannotatedTree,_elsIfixedUpIdentifiersTree,_elsIoriginalTree,_elsIuType) =
+                  els_ _elsOcat _elsOidenv _elsOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
+sem_ScalarExpr_Cast :: Annotation ->
+                       T_ScalarExpr  ->
+                       T_TypeName  ->
+                       T_ScalarExpr 
+sem_ScalarExpr_Cast ann_ expr_ tn_  =
+    (\ _lhsIcat
+       _lhsIexpectedType
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: ScalarExpr 
+              _prototype :: (Maybe FunctionPrototype)
+              _lhsOuType :: (Maybe Type)
+              _tpe :: Et
+              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
+              _lhsOoriginalTree :: ScalarExpr 
+              _exprOcat :: Catalog
+              _exprOexpectedType :: (Maybe Type)
+              _exprOidenv :: IDEnv
+              _exprOlib :: LocalBindings
+              _tnOcat :: Catalog
+              _tnOidenv :: IDEnv
+              _tnOlib :: LocalBindings
+              _exprIannotatedTree :: ScalarExpr 
+              _exprIfixedUpIdentifiersTree :: ScalarExpr 
+              _exprIoriginalTree :: ScalarExpr 
+              _exprIuType :: (Maybe Type)
+              _tnIannotatedTree :: TypeName 
+              _tnIfixedUpIdentifiersTree :: TypeName 
+              _tnInamedType :: (Maybe Type)
+              _tnIoriginalTree :: TypeName 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                    (setTypeAddErrorsA _tpe
+                     . \a -> a {fnProt = _prototype
+                               ,infType = msum [_lhsIexpectedType
+                                               ,etmt _tpe
+                                               ,Nothing]}) _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
+              _prototype =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
+              _lhsOuType =
+                  etmt _tpe
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 182, column 12)
+              _tpe =
+                  lmt _tnInamedType
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 183, column 12)
+              _backTree =
+                  Cast ann_ _exprIannotatedTree _tnIannotatedTree
+              -- self rule
+              _annotatedTree =
+                  Cast ann_ _exprIannotatedTree _tnIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Cast ann_ _exprIfixedUpIdentifiersTree _tnIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  Cast ann_ _exprIoriginalTree _tnIoriginalTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _exprOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _exprOexpectedType =
+                  _lhsIexpectedType
+              -- copy rule (down)
+              _exprOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _exprOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _tnOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _tnOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _tnOlib =
+                  _lhsIlib
+              ( _exprIannotatedTree,_exprIfixedUpIdentifiersTree,_exprIoriginalTree,_exprIuType) =
+                  expr_ _exprOcat _exprOexpectedType _exprOidenv _exprOlib 
+              ( _tnIannotatedTree,_tnIfixedUpIdentifiersTree,_tnInamedType,_tnIoriginalTree) =
+                  tn_ _tnOcat _tnOidenv _tnOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
+sem_ScalarExpr_Exists :: Annotation ->
+                         T_QueryExpr  ->
+                         T_ScalarExpr 
+sem_ScalarExpr_Exists ann_ sel_  =
+    (\ _lhsIcat
+       _lhsIexpectedType
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: ScalarExpr 
+              _prototype :: (Maybe FunctionPrototype)
+              _lhsOuType :: (Maybe Type)
+              _tpe :: Et
+              _selOcsql :: LocalBindings
+              _selOexpectedTypes :: ([Maybe Type])
+              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
+              _lhsOoriginalTree :: ScalarExpr 
+              _selOcat :: Catalog
+              _selOidenv :: IDEnv
+              _selOlib :: LocalBindings
+              _selIannotatedTree :: QueryExpr 
+              _selIcidenv :: IDEnv
+              _selIfixedUpIdentifiersTree :: QueryExpr 
+              _selIlibUpdates :: ([LocalBindingsUpdate])
+              _selIoriginalTree :: QueryExpr 
+              _selIuType :: (Maybe [(String,Type)])
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                    (setTypeAddErrorsA _tpe
+                     . \a -> a {fnProt = _prototype
+                               ,infType = msum [_lhsIexpectedType
+                                               ,etmt _tpe
+                                               ,Nothing]}) _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
+              _prototype =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
+              _lhsOuType =
+                  etmt _tpe
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 355, column 9)
+              _tpe =
+                  Right typeBool
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 356, column 9)
+              _backTree =
+                  Exists ann_ _selIannotatedTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 379, column 9)
+              _selOcsql =
+                  _lhsIlib
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 171, column 29)
+              _selOexpectedTypes =
+                  []
+              -- self rule
+              _annotatedTree =
+                  Exists ann_ _selIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Exists ann_ _selIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  Exists ann_ _selIoriginalTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _selOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _selOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _selOlib =
+                  _lhsIlib
+              ( _selIannotatedTree,_selIcidenv,_selIfixedUpIdentifiersTree,_selIlibUpdates,_selIoriginalTree,_selIuType) =
+                  sel_ _selOcat _selOcsql _selOexpectedTypes _selOidenv _selOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
+sem_ScalarExpr_Extract :: Annotation ->
+                          ExtractField ->
+                          T_ScalarExpr  ->
+                          T_ScalarExpr 
+sem_ScalarExpr_Extract ann_ field_ e_  =
+    (\ _lhsIcat
+       _lhsIexpectedType
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: ScalarExpr 
+              _prototype :: (Maybe FunctionPrototype)
+              _lhsOuType :: (Maybe Type)
+              _tpe :: Et
+              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
+              _lhsOoriginalTree :: ScalarExpr 
+              _eOcat :: Catalog
+              _eOexpectedType :: (Maybe Type)
+              _eOidenv :: IDEnv
+              _eOlib :: LocalBindings
+              _eIannotatedTree :: ScalarExpr 
+              _eIfixedUpIdentifiersTree :: ScalarExpr 
+              _eIoriginalTree :: ScalarExpr 
+              _eIuType :: (Maybe Type)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                    (setTypeAddErrorsA _tpe
+                     . \a -> a {fnProt = _prototype
+                               ,infType = msum [_lhsIexpectedType
+                                               ,etmt _tpe
+                                               ,Nothing]}) _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
+              _prototype =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
+              _lhsOuType =
+                  etmt _tpe
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 424, column 9)
+              _tpe =
+                  do
+                  x <- lmt _eIuType
+                  if x == typeDate
+                    then Right typeFloat8
+                    else Left [NoMatchingOperator "extract" [x]]
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 429, column 9)
+              _backTree =
+                  Extract ann_ field_ _eIannotatedTree
+              -- self rule
+              _annotatedTree =
+                  Extract ann_ field_ _eIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Extract ann_ field_ _eIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  Extract ann_ field_ _eIoriginalTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _eOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _eOexpectedType =
+                  _lhsIexpectedType
+              -- copy rule (down)
+              _eOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _eOlib =
+                  _lhsIlib
+              ( _eIannotatedTree,_eIfixedUpIdentifiersTree,_eIoriginalTree,_eIuType) =
+                  e_ _eOcat _eOexpectedType _eOidenv _eOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
+sem_ScalarExpr_FunCall :: Annotation ->
+                          String ->
+                          T_ScalarExprList  ->
+                          T_ScalarExpr 
+sem_ScalarExpr_FunCall ann_ funName_ args_  =
+    (\ _lhsIcat
+       _lhsIexpectedType
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: ScalarExpr 
+              _lhsOuType :: (Maybe Type)
+              _tpe :: Et
+              _argsOexpectedTypes :: ([Maybe Type])
+              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
+              _lhsOoriginalTree :: ScalarExpr 
+              _argsOcat :: Catalog
+              _argsOidenv :: IDEnv
+              _argsOlib :: LocalBindings
+              _argsIannotatedTree :: ScalarExprList 
+              _argsIfixedUpIdentifiersTree :: ScalarExprList 
+              _argsIoriginalTree :: ScalarExprList 
+              _argsIuType :: ([Maybe Type])
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                    (setTypeAddErrorsA _tpe
+                     . \a -> a {fnProt = _prototype
+                               ,infType = msum [_lhsIexpectedType
+                                               ,etmt _tpe
+                                               ,Nothing]}) _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
+              _lhsOuType =
+                  etmt _tpe
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 196, column 9)
+              __tup1 =
+                  either (\e -> (Left e, Nothing)) id $ do
+                  args <- mapM lmt _argsIuType
+                  efp <- findCallMatch _lhsIcat
+                                       funName_
+                                       args
+                  let (_,_,r,_) = efp
+                  return (Right r, Just efp)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 196, column 9)
+              (_tpe,_) =
+                  __tup1
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 196, column 9)
+              (_,_prototype) =
+                  __tup1
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 206, column 9)
+              _backTree =
+                  FunCall ann_ funName_ _argsIannotatedTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 130, column 9)
+              _argsOexpectedTypes =
+                  maybe [] id $
+                  case (funName_,_lhsIexpectedType) of
+                    ("!rowctor", Just (AnonymousRecordType ts)) -> return $ map Just ts
+                    _ -> do
+                         (_,t,_,_) <- _prototype
+                         return $ map Just t
+              -- self rule
+              _annotatedTree =
+                  FunCall ann_ funName_ _argsIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  FunCall ann_ funName_ _argsIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  FunCall ann_ funName_ _argsIoriginalTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _argsOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _argsOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _argsOlib =
+                  _lhsIlib
+              ( _argsIannotatedTree,_argsIfixedUpIdentifiersTree,_argsIoriginalTree,_argsIuType) =
+                  args_ _argsOcat _argsOexpectedTypes _argsOidenv _argsOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
+sem_ScalarExpr_Identifier :: Annotation ->
+                             String ->
+                             T_ScalarExpr 
+sem_ScalarExpr_Identifier ann_ i_  =
+    (\ _lhsIcat
+       _lhsIexpectedType
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOfixedUpIdentifiersTree :: ScalarExpr 
+              _lhsOannotatedTree :: ScalarExpr 
+              _prototype :: (Maybe FunctionPrototype)
+              _lhsOuType :: (Maybe Type)
+              _tpe :: Et
+              _lhsOoriginalTree :: ScalarExpr 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 131, column 9)
+              _lhsOfixedUpIdentifiersTree =
+                  case qualifyID _lhsIidenv i_ of
+                    Nothing -> Identifier ann_ i_
+                    Just (t,i) -> QIdentifier ann_ (Identifier ann_ t) i
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                    (setTypeAddErrorsA _tpe
+                     . \a -> a {fnProt = _prototype
+                               ,infType = msum [_lhsIexpectedType
+                                               ,etmt _tpe
+                                               ,Nothing]}) _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
+              _prototype =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
+              _lhsOuType =
+                  etmt _tpe
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 314, column 9)
+              _tpe =
+                  case lookupLocalBinding _lhsIlib "" i_ of
+                                        Right Nothing -> Left []
+                                        Right (Just t) -> Right t
+                                        Left e -> Left e
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 319, column 9)
+              _backTree =
+                  Identifier ann_ i_
+              -- self rule
+              _annotatedTree =
+                  Identifier ann_ i_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Identifier ann_ i_
+              -- self rule
+              _originalTree =
+                  Identifier ann_ i_
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
+sem_ScalarExpr_InPredicate :: Annotation ->
+                              T_ScalarExpr  ->
+                              Bool ->
+                              T_InList  ->
+                              T_ScalarExpr 
+sem_ScalarExpr_InPredicate ann_ expr_ i_ list_  =
+    (\ _lhsIcat
+       _lhsIexpectedType
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: ScalarExpr 
+              _prototype :: (Maybe FunctionPrototype)
+              _lhsOuType :: (Maybe Type)
+              _rt :: (Either [TypeError] Type)
+              _tpe :: Et
+              _listOexpectedType :: (Maybe Type)
+              _exprOexpectedType :: (Maybe Type)
+              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
+              _lhsOoriginalTree :: ScalarExpr 
+              _exprOcat :: Catalog
+              _exprOidenv :: IDEnv
+              _exprOlib :: LocalBindings
+              _listOcat :: Catalog
+              _listOidenv :: IDEnv
+              _listOlib :: LocalBindings
+              _exprIannotatedTree :: ScalarExpr 
+              _exprIfixedUpIdentifiersTree :: ScalarExpr 
+              _exprIoriginalTree :: ScalarExpr 
+              _exprIuType :: (Maybe Type)
+              _listIannotatedTree :: InList 
+              _listIfixedUpIdentifiersTree :: InList 
+              _listIlistType :: (Either [TypeError] Type)
+              _listIoriginalTree :: InList 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                    (setTypeAddErrorsA _tpe
+                     . \a -> a {fnProt = _prototype
+                               ,infType = msum [_lhsIexpectedType
+                                               ,etmt _tpe
+                                               ,Nothing]}) _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
+              _prototype =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
+              _lhsOuType =
+                  etmt _tpe
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 388, column 9)
+              _rt =
+                  do
+                  lt <- _listIlistType
+                  expt <- lmt _exprIuType
+                  resolveResultSetType _lhsIcat [expt, lt]
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 392, column 9)
+              _tpe =
+                  do
+                  _ <- _rt
+                  return typeBool
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 395, column 9)
+              _listOexpectedType =
+                  etmt _rt
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 396, column 9)
+              _exprOexpectedType =
+                  etmt _rt
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 397, column 9)
+              _backTree =
+                  InPredicate ann_
+                              _exprIannotatedTree
+                              i_
+                              _listIannotatedTree
+              -- self rule
+              _annotatedTree =
+                  InPredicate ann_ _exprIannotatedTree i_ _listIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  InPredicate ann_ _exprIfixedUpIdentifiersTree i_ _listIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  InPredicate ann_ _exprIoriginalTree i_ _listIoriginalTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _exprOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _exprOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _exprOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _listOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _listOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _listOlib =
+                  _lhsIlib
+              ( _exprIannotatedTree,_exprIfixedUpIdentifiersTree,_exprIoriginalTree,_exprIuType) =
+                  expr_ _exprOcat _exprOexpectedType _exprOidenv _exprOlib 
+              ( _listIannotatedTree,_listIfixedUpIdentifiersTree,_listIlistType,_listIoriginalTree) =
+                  list_ _listOcat _listOexpectedType _listOidenv _listOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
+sem_ScalarExpr_Interval :: Annotation ->
+                           String ->
+                           IntervalField ->
+                           (Maybe Int) ->
+                           T_ScalarExpr 
+sem_ScalarExpr_Interval ann_ value_ field_ prec_  =
+    (\ _lhsIcat
+       _lhsIexpectedType
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: ScalarExpr 
+              _prototype :: (Maybe FunctionPrototype)
+              _lhsOuType :: (Maybe Type)
+              _tpe :: Et
+              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
+              _lhsOoriginalTree :: ScalarExpr 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                    (setTypeAddErrorsA _tpe
+                     . \a -> a {fnProt = _prototype
+                               ,infType = msum [_lhsIexpectedType
+                                               ,etmt _tpe
+                                               ,Nothing]}) _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
+              _prototype =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
+              _lhsOuType =
+                  etmt _tpe
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 170, column 16)
+              _tpe =
+                  Right $ ScalarType "interval"
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 171, column 16)
+              _backTree =
+                  Interval ann_ value_ field_ prec_
+              -- self rule
+              _annotatedTree =
+                  Interval ann_ value_ field_ prec_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Interval ann_ value_ field_ prec_
+              -- self rule
+              _originalTree =
+                  Interval ann_ value_ field_ prec_
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
+sem_ScalarExpr_LiftOperator :: Annotation ->
+                               String ->
+                               LiftFlavour ->
+                               T_ScalarExprList  ->
+                               T_ScalarExpr 
+sem_ScalarExpr_LiftOperator ann_ oper_ flav_ args_  =
+    (\ _lhsIcat
+       _lhsIexpectedType
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: ScalarExpr 
+              _prototype :: (Maybe FunctionPrototype)
+              _lhsOuType :: (Maybe Type)
+              _tpe :: Et
+              _argsOexpectedTypes :: ([Maybe Type])
+              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
+              _lhsOoriginalTree :: ScalarExpr 
+              _argsOcat :: Catalog
+              _argsOidenv :: IDEnv
+              _argsOlib :: LocalBindings
+              _argsIannotatedTree :: ScalarExprList 
+              _argsIfixedUpIdentifiersTree :: ScalarExprList 
+              _argsIoriginalTree :: ScalarExprList 
+              _argsIuType :: ([Maybe Type])
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                    (setTypeAddErrorsA _tpe
+                     . \a -> a {fnProt = _prototype
+                               ,infType = msum [_lhsIexpectedType
+                                               ,etmt _tpe
+                                               ,Nothing]}) _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
+              _prototype =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
+              _lhsOuType =
+                  etmt _tpe
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 229, column 9)
+              _tpe =
+                  do
+                  at <- mapM lmt _argsIuType
+                  errorWhen (length at /= 2)
+                            [AnyAllError $ "must have two args, got " ++ show at]
+                  let [aType,bType] = at
+                  errorWhen (not $ isArrayType bType)
+                            [AnyAllError $ "second arg must be array, got " ++ show at]
+                  elemType <- unwrapArray $ bType
+                  resType <- fmap (\(_,_,r,_) -> r) $ findCallMatch _lhsIcat
+                                                                    oper_
+                                                                    [aType,elemType]
+                  errorWhen (resType /= typeBool)
+                            [AnyAllError $ "operator must have bool return, got " ++ show resType]
+                  return resType
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 243, column 9)
+              _backTree =
+                  LiftOperator ann_ oper_ flav_ _argsIannotatedTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 138, column 9)
+              _argsOexpectedTypes =
+                  []
+              -- self rule
+              _annotatedTree =
+                  LiftOperator ann_ oper_ flav_ _argsIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  LiftOperator ann_ oper_ flav_ _argsIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  LiftOperator ann_ oper_ flav_ _argsIoriginalTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _argsOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _argsOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _argsOlib =
+                  _lhsIlib
+              ( _argsIannotatedTree,_argsIfixedUpIdentifiersTree,_argsIoriginalTree,_argsIuType) =
+                  args_ _argsOcat _argsOexpectedTypes _argsOidenv _argsOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
+sem_ScalarExpr_NullLit :: Annotation ->
+                          T_ScalarExpr 
+sem_ScalarExpr_NullLit ann_  =
+    (\ _lhsIcat
+       _lhsIexpectedType
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: ScalarExpr 
+              _prototype :: (Maybe FunctionPrototype)
+              _lhsOuType :: (Maybe Type)
+              _tpe :: Et
+              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
+              _lhsOoriginalTree :: ScalarExpr 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                    (setTypeAddErrorsA _tpe
+                     . \a -> a {fnProt = _prototype
+                               ,infType = msum [_lhsIexpectedType
+                                               ,etmt _tpe
+                                               ,Nothing]}) _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
+              _prototype =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
+              _lhsOuType =
+                  etmt _tpe
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 157, column 16)
+              _tpe =
+                  Right UnknownType
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 167, column 9)
+              _backTree =
+                  NullLit ann_
+              -- self rule
+              _annotatedTree =
+                  NullLit ann_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  NullLit ann_
+              -- self rule
+              _originalTree =
+                  NullLit ann_
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
+sem_ScalarExpr_NumberLit :: Annotation ->
+                            String ->
+                            T_ScalarExpr 
+sem_ScalarExpr_NumberLit ann_ d_  =
+    (\ _lhsIcat
+       _lhsIexpectedType
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: ScalarExpr 
+              _prototype :: (Maybe FunctionPrototype)
+              _lhsOuType :: (Maybe Type)
+              _tpe :: Et
+              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
+              _lhsOoriginalTree :: ScalarExpr 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                    (setTypeAddErrorsA _tpe
+                     . \a -> a {fnProt = _prototype
+                               ,infType = msum [_lhsIexpectedType
+                                               ,etmt _tpe
+                                               ,Nothing]}) _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
+              _prototype =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
+              _lhsOuType =
+                  etmt _tpe
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 149, column 18)
+              _tpe =
+                  if all (`elem` digChars) d_
+                  then Right typeInt
+                  else Right typeNumeric
+                  where
+                    digChars = concatMap show [(0::Int)..9]
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 161, column 9)
+              _backTree =
+                  NumberLit ann_ d_
+              -- self rule
+              _annotatedTree =
+                  NumberLit ann_ d_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  NumberLit ann_ d_
+              -- self rule
+              _originalTree =
+                  NumberLit ann_ d_
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
+sem_ScalarExpr_Placeholder :: Annotation ->
+                              T_ScalarExpr 
+sem_ScalarExpr_Placeholder ann_  =
+    (\ _lhsIcat
+       _lhsIexpectedType
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: ScalarExpr 
+              _prototype :: (Maybe FunctionPrototype)
+              _lhsOuType :: (Maybe Type)
+              _tpe :: Et
+              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
+              _lhsOoriginalTree :: ScalarExpr 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                    (setTypeAddErrorsA _tpe
+                     . \a -> a {fnProt = _prototype
+                               ,infType = msum [_lhsIexpectedType
+                                               ,etmt _tpe
+                                               ,Nothing]}) _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
+              _prototype =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
+              _lhsOuType =
+                  etmt _tpe
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 349, column 9)
+              _tpe =
+                  Right UnknownType
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 350, column 9)
+              _backTree =
+                  Placeholder ann_
+              -- self rule
+              _annotatedTree =
+                  Placeholder ann_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Placeholder ann_
+              -- self rule
+              _originalTree =
+                  Placeholder ann_
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
+sem_ScalarExpr_PositionalArg :: Annotation ->
+                                Integer ->
+                                T_ScalarExpr 
+sem_ScalarExpr_PositionalArg ann_ p_  =
+    (\ _lhsIcat
+       _lhsIexpectedType
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: ScalarExpr 
+              _prototype :: (Maybe FunctionPrototype)
+              _lhsOuType :: (Maybe Type)
+              _tpe :: Et
+              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
+              _lhsOoriginalTree :: ScalarExpr 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                    (setTypeAddErrorsA _tpe
+                     . \a -> a {fnProt = _prototype
+                               ,infType = msum [_lhsIexpectedType
+                                               ,etmt _tpe
+                                               ,Nothing]}) _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
+              _prototype =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
+              _lhsOuType =
+                  etmt _tpe
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 343, column 9)
+              _tpe =
+                  unwrapLookup <$> lbLookupID _lhsIlib ['$':show p_]
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 344, column 9)
+              _backTree =
+                  PositionalArg ann_ p_
+              -- self rule
+              _annotatedTree =
+                  PositionalArg ann_ p_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  PositionalArg ann_ p_
+              -- self rule
+              _originalTree =
+                  PositionalArg ann_ p_
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
+sem_ScalarExpr_QIdentifier :: Annotation ->
+                              T_ScalarExpr  ->
+                              String ->
+                              T_ScalarExpr 
+sem_ScalarExpr_QIdentifier ann_ qual_ i_  =
+    (\ _lhsIcat
+       _lhsIexpectedType
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOfixedUpIdentifiersTree :: ScalarExpr 
+              _lhsOannotatedTree :: ScalarExpr 
+              _prototype :: (Maybe FunctionPrototype)
+              _lhsOuType :: (Maybe Type)
+              _tpe :: Et
+              _qid :: (Maybe String)
+              _lhsOoriginalTree :: ScalarExpr 
+              _qualOcat :: Catalog
+              _qualOexpectedType :: (Maybe Type)
+              _qualOidenv :: IDEnv
+              _qualOlib :: LocalBindings
+              _qualIannotatedTree :: ScalarExpr 
+              _qualIfixedUpIdentifiersTree :: ScalarExpr 
+              _qualIoriginalTree :: ScalarExpr 
+              _qualIuType :: (Maybe Type)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 137, column 9)
+              _lhsOfixedUpIdentifiersTree =
+                  QIdentifier ann_ _qualIoriginalTree i_
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                    (setTypeAddErrorsA _tpe
+                     . \a -> a {fnProt = _prototype
+                               ,infType = msum [_lhsIexpectedType
+                                               ,etmt _tpe
+                                               ,Nothing]}) _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
+              _prototype =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
+              _lhsOuType =
+                  etmt _tpe
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 321, column 9)
+              _tpe =
+                  case _qid     of
+                            Nothing -> Left [InternalError "dot selection not implemented"]
+                            Just q -> case lookupLocalBinding _lhsIlib q i_ of
+                                        Right Nothing -> Left []
+                                        Right (Just t) -> Right t
+                                        Left e -> Left e
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 334, column 9)
+              _qid =
+                  case _backTree     of
+                     QIdentifier _ (Identifier _ q) _ -> Just q
+                     _ -> Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 337, column 9)
+              _backTree =
+                  QIdentifier ann_ _qAnnTreeNoUnrec     i_
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 339, column 9)
+              _qAnnTreeNoUnrec =
+                  updateAnnotation (\a -> a {errs = []}) _qualIannotatedTree
+              -- self rule
+              _annotatedTree =
+                  QIdentifier ann_ _qualIannotatedTree i_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  QIdentifier ann_ _qualIfixedUpIdentifiersTree i_
+              -- self rule
+              _originalTree =
+                  QIdentifier ann_ _qualIoriginalTree i_
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _qualOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _qualOexpectedType =
+                  _lhsIexpectedType
+              -- copy rule (down)
+              _qualOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _qualOlib =
+                  _lhsIlib
+              ( _qualIannotatedTree,_qualIfixedUpIdentifiersTree,_qualIoriginalTree,_qualIuType) =
+                  qual_ _qualOcat _qualOexpectedType _qualOidenv _qualOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
+sem_ScalarExpr_ScalarSubQuery :: Annotation ->
+                                 T_QueryExpr  ->
+                                 T_ScalarExpr 
+sem_ScalarExpr_ScalarSubQuery ann_ sel_  =
+    (\ _lhsIcat
+       _lhsIexpectedType
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: ScalarExpr 
+              _prototype :: (Maybe FunctionPrototype)
+              _lhsOuType :: (Maybe Type)
+              _tpe :: Et
+              _selOcsql :: LocalBindings
+              _selOexpectedTypes :: ([Maybe Type])
+              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
+              _lhsOoriginalTree :: ScalarExpr 
+              _selOcat :: Catalog
+              _selOidenv :: IDEnv
+              _selOlib :: LocalBindings
+              _selIannotatedTree :: QueryExpr 
+              _selIcidenv :: IDEnv
+              _selIfixedUpIdentifiersTree :: QueryExpr 
+              _selIlibUpdates :: ([LocalBindingsUpdate])
+              _selIoriginalTree :: QueryExpr 
+              _selIuType :: (Maybe [(String,Type)])
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                    (setTypeAddErrorsA _tpe
+                     . \a -> a {fnProt = _prototype
+                               ,infType = msum [_lhsIexpectedType
+                                               ,etmt _tpe
+                                               ,Nothing]}) _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
+              _prototype =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
+              _lhsOuType =
+                  etmt _tpe
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 367, column 9)
+              _tpe =
+                  do
+                  selType <- lmt (map snd <$> _selIuType)
+                  case length selType of
+                    0 -> Left [InternalError "no columns in scalar subquery?"]
+                    1 -> Right $ head selType
+                    _ -> Right $ AnonymousRecordType selType
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 375, column 9)
+              _backTree =
+                  ScalarSubQuery ann_ _selIannotatedTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 377, column 9)
+              _selOcsql =
+                  _lhsIlib
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 171, column 29)
+              _selOexpectedTypes =
+                  []
+              -- self rule
+              _annotatedTree =
+                  ScalarSubQuery ann_ _selIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  ScalarSubQuery ann_ _selIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  ScalarSubQuery ann_ _selIoriginalTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _selOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _selOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _selOlib =
+                  _lhsIlib
+              ( _selIannotatedTree,_selIcidenv,_selIfixedUpIdentifiersTree,_selIlibUpdates,_selIoriginalTree,_selIuType) =
+                  sel_ _selOcat _selOcsql _selOexpectedTypes _selOidenv _selOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
+sem_ScalarExpr_StringLit :: Annotation ->
+                            String ->
+                            T_ScalarExpr 
+sem_ScalarExpr_StringLit ann_ value_  =
+    (\ _lhsIcat
+       _lhsIexpectedType
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: ScalarExpr 
+              _prototype :: (Maybe FunctionPrototype)
+              _lhsOuType :: (Maybe Type)
+              _tpe :: Et
+              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
+              _lhsOoriginalTree :: ScalarExpr 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                    (setTypeAddErrorsA _tpe
+                     . \a -> a {fnProt = _prototype
+                               ,infType = msum [_lhsIexpectedType
+                                               ,etmt _tpe
+                                               ,Nothing]}) _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
+              _prototype =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
+              _lhsOuType =
+                  etmt _tpe
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 154, column 18)
+              _tpe =
+                  Right UnknownType
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 163, column 9)
+              _backTree =
+                  StringLit ann_ value_
+              -- self rule
+              _annotatedTree =
+                  StringLit ann_ value_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  StringLit ann_ value_
+              -- self rule
+              _originalTree =
+                  StringLit ann_ value_
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
+sem_ScalarExpr_TypedStringLit :: Annotation ->
+                                 T_TypeName  ->
+                                 String ->
+                                 T_ScalarExpr 
+sem_ScalarExpr_TypedStringLit ann_ tn_ value_  =
+    (\ _lhsIcat
+       _lhsIexpectedType
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: ScalarExpr 
+              _prototype :: (Maybe FunctionPrototype)
+              _lhsOuType :: (Maybe Type)
+              _tpe :: Et
+              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
+              _lhsOoriginalTree :: ScalarExpr 
+              _tnOcat :: Catalog
+              _tnOidenv :: IDEnv
+              _tnOlib :: LocalBindings
+              _tnIannotatedTree :: TypeName 
+              _tnIfixedUpIdentifiersTree :: TypeName 
+              _tnInamedType :: (Maybe Type)
+              _tnIoriginalTree :: TypeName 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                    (setTypeAddErrorsA _tpe
+                     . \a -> a {fnProt = _prototype
+                               ,infType = msum [_lhsIexpectedType
+                                               ,etmt _tpe
+                                               ,Nothing]}) _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
+              _prototype =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
+              _lhsOuType =
+                  etmt _tpe
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 187, column 10)
+              _tpe =
+                  lmt _tnInamedType
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 188, column 10)
+              _backTree =
+                  TypedStringLit ann_ _tnIannotatedTree value_
+              -- self rule
+              _annotatedTree =
+                  TypedStringLit ann_ _tnIannotatedTree value_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  TypedStringLit ann_ _tnIfixedUpIdentifiersTree value_
+              -- self rule
+              _originalTree =
+                  TypedStringLit ann_ _tnIoriginalTree value_
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _tnOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _tnOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _tnOlib =
+                  _lhsIlib
+              ( _tnIannotatedTree,_tnIfixedUpIdentifiersTree,_tnInamedType,_tnIoriginalTree) =
+                  tn_ _tnOcat _tnOidenv _tnOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
+sem_ScalarExpr_WindowFn :: Annotation ->
+                           T_ScalarExpr  ->
+                           T_ScalarExprList  ->
+                           T_ScalarExprList  ->
+                           Direction ->
+                           FrameClause ->
+                           T_ScalarExpr 
+sem_ScalarExpr_WindowFn ann_ fn_ partitionBy_ orderBy_ dir_ frm_  =
+    (\ _lhsIcat
+       _lhsIexpectedType
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: ScalarExpr 
+              _prototype :: (Maybe FunctionPrototype)
+              _lhsOuType :: (Maybe Type)
+              _tpe :: Et
+              _partitionByOexpectedTypes :: ([Maybe Type])
+              _orderByOexpectedTypes :: ([Maybe Type])
+              _lhsOfixedUpIdentifiersTree :: ScalarExpr 
+              _lhsOoriginalTree :: ScalarExpr 
+              _fnOcat :: Catalog
+              _fnOexpectedType :: (Maybe Type)
+              _fnOidenv :: IDEnv
+              _fnOlib :: LocalBindings
+              _partitionByOcat :: Catalog
+              _partitionByOidenv :: IDEnv
+              _partitionByOlib :: LocalBindings
+              _orderByOcat :: Catalog
+              _orderByOidenv :: IDEnv
+              _orderByOlib :: LocalBindings
+              _fnIannotatedTree :: ScalarExpr 
+              _fnIfixedUpIdentifiersTree :: ScalarExpr 
+              _fnIoriginalTree :: ScalarExpr 
+              _fnIuType :: (Maybe Type)
+              _partitionByIannotatedTree :: ScalarExprList 
+              _partitionByIfixedUpIdentifiersTree :: ScalarExprList 
+              _partitionByIoriginalTree :: ScalarExprList 
+              _partitionByIuType :: ([Maybe Type])
+              _orderByIannotatedTree :: ScalarExprList 
+              _orderByIfixedUpIdentifiersTree :: ScalarExprList 
+              _orderByIoriginalTree :: ScalarExprList 
+              _orderByIuType :: ([Maybe Type])
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 24, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                    (setTypeAddErrorsA _tpe
+                     . \a -> a {fnProt = _prototype
+                               ,infType = msum [_lhsIexpectedType
+                                               ,etmt _tpe
+                                               ,Nothing]}) _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 46, column 9)
+              _prototype =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 104, column 9)
+              _lhsOuType =
+                  etmt _tpe
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 210, column 9)
+              _tpe =
+                  lmt _fnIuType
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 211, column 9)
+              _backTree =
+                  WindowFn ann_
+                           _fnIannotatedTree
+                           _partitionByIannotatedTree
+                           _orderByIannotatedTree
+                           dir_
+                           frm_
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 140, column 9)
+              _partitionByOexpectedTypes =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 141, column 9)
+              _orderByOexpectedTypes =
+                  []
+              -- self rule
+              _annotatedTree =
+                  WindowFn ann_ _fnIannotatedTree _partitionByIannotatedTree _orderByIannotatedTree dir_ frm_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  WindowFn ann_ _fnIfixedUpIdentifiersTree _partitionByIfixedUpIdentifiersTree _orderByIfixedUpIdentifiersTree dir_ frm_
+              -- self rule
+              _originalTree =
+                  WindowFn ann_ _fnIoriginalTree _partitionByIoriginalTree _orderByIoriginalTree dir_ frm_
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _fnOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _fnOexpectedType =
+                  _lhsIexpectedType
+              -- copy rule (down)
+              _fnOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _fnOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _partitionByOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _partitionByOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _partitionByOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _orderByOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _orderByOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _orderByOlib =
+                  _lhsIlib
+              ( _fnIannotatedTree,_fnIfixedUpIdentifiersTree,_fnIoriginalTree,_fnIuType) =
+                  fn_ _fnOcat _fnOexpectedType _fnOidenv _fnOlib 
+              ( _partitionByIannotatedTree,_partitionByIfixedUpIdentifiersTree,_partitionByIoriginalTree,_partitionByIuType) =
+                  partitionBy_ _partitionByOcat _partitionByOexpectedTypes _partitionByOidenv _partitionByOlib 
+              ( _orderByIannotatedTree,_orderByIfixedUpIdentifiersTree,_orderByIoriginalTree,_orderByIuType) =
+                  orderBy_ _orderByOcat _orderByOexpectedTypes _orderByOidenv _orderByOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
+-- ScalarExprDirectionPair -------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+   alternatives:
+      alternative Tuple:
+         child x1             : ScalarExpr 
+         child x2             : {Direction}
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+type ScalarExprDirectionPair  = ( ScalarExpr ,(Direction))
+-- cata
+sem_ScalarExprDirectionPair :: ScalarExprDirectionPair  ->
+                               T_ScalarExprDirectionPair 
+sem_ScalarExprDirectionPair ( x1,x2)  =
+    (sem_ScalarExprDirectionPair_Tuple (sem_ScalarExpr x1 ) x2 )
+-- semantic domain
+type T_ScalarExprDirectionPair  = Catalog ->
+                                  IDEnv ->
+                                  LocalBindings ->
+                                  ( ScalarExprDirectionPair ,ScalarExprDirectionPair ,ScalarExprDirectionPair )
+data Inh_ScalarExprDirectionPair  = Inh_ScalarExprDirectionPair {cat_Inh_ScalarExprDirectionPair :: Catalog,idenv_Inh_ScalarExprDirectionPair :: IDEnv,lib_Inh_ScalarExprDirectionPair :: LocalBindings}
+data Syn_ScalarExprDirectionPair  = Syn_ScalarExprDirectionPair {annotatedTree_Syn_ScalarExprDirectionPair :: ScalarExprDirectionPair ,fixedUpIdentifiersTree_Syn_ScalarExprDirectionPair :: ScalarExprDirectionPair ,originalTree_Syn_ScalarExprDirectionPair :: ScalarExprDirectionPair }
+wrap_ScalarExprDirectionPair :: T_ScalarExprDirectionPair  ->
+                                Inh_ScalarExprDirectionPair  ->
+                                Syn_ScalarExprDirectionPair 
+wrap_ScalarExprDirectionPair sem (Inh_ScalarExprDirectionPair _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_ScalarExprDirectionPair _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
+sem_ScalarExprDirectionPair_Tuple :: T_ScalarExpr  ->
+                                     Direction ->
+                                     T_ScalarExprDirectionPair 
+sem_ScalarExprDirectionPair_Tuple x1_ x2_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _x1OexpectedType :: (Maybe Type)
+              _lhsOannotatedTree :: ScalarExprDirectionPair 
+              _lhsOfixedUpIdentifiersTree :: ScalarExprDirectionPair 
+              _lhsOoriginalTree :: ScalarExprDirectionPair 
+              _x1Ocat :: Catalog
+              _x1Oidenv :: IDEnv
+              _x1Olib :: LocalBindings
+              _x1IannotatedTree :: ScalarExpr 
+              _x1IfixedUpIdentifiersTree :: ScalarExpr 
+              _x1IoriginalTree :: ScalarExpr 
+              _x1IuType :: (Maybe Type)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 83, column 13)
+              _x1OexpectedType =
+                  Nothing
+              -- self rule
+              _annotatedTree =
+                  (_x1IannotatedTree,x2_)
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  (_x1IfixedUpIdentifiersTree,x2_)
+              -- self rule
+              _originalTree =
+                  (_x1IoriginalTree,x2_)
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _x1Ocat =
+                  _lhsIcat
+              -- copy rule (down)
+              _x1Oidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _x1Olib =
+                  _lhsIlib
+              ( _x1IannotatedTree,_x1IfixedUpIdentifiersTree,_x1IoriginalTree,_x1IuType) =
+                  x1_ _x1Ocat _x1OexpectedType _x1Oidenv _x1Olib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+-- ScalarExprDirectionPairList ---------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+   alternatives:
+      alternative Cons:
+         child hd             : ScalarExprDirectionPair 
+         child tl             : ScalarExprDirectionPairList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Nil:
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+type ScalarExprDirectionPairList  = [ScalarExprDirectionPair ]
+-- cata
+sem_ScalarExprDirectionPairList :: ScalarExprDirectionPairList  ->
+                                   T_ScalarExprDirectionPairList 
+sem_ScalarExprDirectionPairList list  =
+    (Prelude.foldr sem_ScalarExprDirectionPairList_Cons sem_ScalarExprDirectionPairList_Nil (Prelude.map sem_ScalarExprDirectionPair list) )
+-- semantic domain
+type T_ScalarExprDirectionPairList  = Catalog ->
+                                      IDEnv ->
+                                      LocalBindings ->
+                                      ( ScalarExprDirectionPairList ,ScalarExprDirectionPairList ,ScalarExprDirectionPairList )
+data Inh_ScalarExprDirectionPairList  = Inh_ScalarExprDirectionPairList {cat_Inh_ScalarExprDirectionPairList :: Catalog,idenv_Inh_ScalarExprDirectionPairList :: IDEnv,lib_Inh_ScalarExprDirectionPairList :: LocalBindings}
+data Syn_ScalarExprDirectionPairList  = Syn_ScalarExprDirectionPairList {annotatedTree_Syn_ScalarExprDirectionPairList :: ScalarExprDirectionPairList ,fixedUpIdentifiersTree_Syn_ScalarExprDirectionPairList :: ScalarExprDirectionPairList ,originalTree_Syn_ScalarExprDirectionPairList :: ScalarExprDirectionPairList }
+wrap_ScalarExprDirectionPairList :: T_ScalarExprDirectionPairList  ->
+                                    Inh_ScalarExprDirectionPairList  ->
+                                    Syn_ScalarExprDirectionPairList 
+wrap_ScalarExprDirectionPairList sem (Inh_ScalarExprDirectionPairList _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_ScalarExprDirectionPairList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
+sem_ScalarExprDirectionPairList_Cons :: T_ScalarExprDirectionPair  ->
+                                        T_ScalarExprDirectionPairList  ->
+                                        T_ScalarExprDirectionPairList 
+sem_ScalarExprDirectionPairList_Cons hd_ tl_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: ScalarExprDirectionPairList 
+              _lhsOfixedUpIdentifiersTree :: ScalarExprDirectionPairList 
+              _lhsOoriginalTree :: ScalarExprDirectionPairList 
+              _hdOcat :: Catalog
+              _hdOidenv :: IDEnv
+              _hdOlib :: LocalBindings
+              _tlOcat :: Catalog
+              _tlOidenv :: IDEnv
+              _tlOlib :: LocalBindings
+              _hdIannotatedTree :: ScalarExprDirectionPair 
+              _hdIfixedUpIdentifiersTree :: ScalarExprDirectionPair 
+              _hdIoriginalTree :: ScalarExprDirectionPair 
+              _tlIannotatedTree :: ScalarExprDirectionPairList 
+              _tlIfixedUpIdentifiersTree :: ScalarExprDirectionPairList 
+              _tlIoriginalTree :: ScalarExprDirectionPairList 
+              -- self rule
+              _annotatedTree =
+                  (:) _hdIannotatedTree _tlIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  (:) _hdIoriginalTree _tlIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _hdOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _hdOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _hdOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _tlOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _tlOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _tlOlib =
+                  _lhsIlib
+              ( _hdIannotatedTree,_hdIfixedUpIdentifiersTree,_hdIoriginalTree) =
+                  hd_ _hdOcat _hdOidenv _hdOlib 
+              ( _tlIannotatedTree,_tlIfixedUpIdentifiersTree,_tlIoriginalTree) =
+                  tl_ _tlOcat _tlOidenv _tlOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+sem_ScalarExprDirectionPairList_Nil :: T_ScalarExprDirectionPairList 
+sem_ScalarExprDirectionPairList_Nil  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: ScalarExprDirectionPairList 
+              _lhsOfixedUpIdentifiersTree :: ScalarExprDirectionPairList 
+              _lhsOoriginalTree :: ScalarExprDirectionPairList 
+              -- self rule
+              _annotatedTree =
+                  []
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  []
+              -- self rule
+              _originalTree =
+                  []
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+-- ScalarExprList ----------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         expectedTypes        : [Maybe Type]
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+         uType                : [Maybe Type]
+   alternatives:
+      alternative Cons:
+         child hd             : ScalarExpr 
+         child tl             : ScalarExprList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Nil:
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+type ScalarExprList  = [ScalarExpr ]
+-- cata
+sem_ScalarExprList :: ScalarExprList  ->
+                      T_ScalarExprList 
+sem_ScalarExprList list  =
+    (Prelude.foldr sem_ScalarExprList_Cons sem_ScalarExprList_Nil (Prelude.map sem_ScalarExpr list) )
+-- semantic domain
+type T_ScalarExprList  = Catalog ->
+                         ([Maybe Type]) ->
+                         IDEnv ->
+                         LocalBindings ->
+                         ( ScalarExprList ,ScalarExprList ,ScalarExprList ,([Maybe Type]))
+data Inh_ScalarExprList  = Inh_ScalarExprList {cat_Inh_ScalarExprList :: Catalog,expectedTypes_Inh_ScalarExprList :: ([Maybe Type]),idenv_Inh_ScalarExprList :: IDEnv,lib_Inh_ScalarExprList :: LocalBindings}
+data Syn_ScalarExprList  = Syn_ScalarExprList {annotatedTree_Syn_ScalarExprList :: ScalarExprList ,fixedUpIdentifiersTree_Syn_ScalarExprList :: ScalarExprList ,originalTree_Syn_ScalarExprList :: ScalarExprList ,uType_Syn_ScalarExprList :: ([Maybe Type])}
+wrap_ScalarExprList :: T_ScalarExprList  ->
+                       Inh_ScalarExprList  ->
+                       Syn_ScalarExprList 
+wrap_ScalarExprList sem (Inh_ScalarExprList _lhsIcat _lhsIexpectedTypes _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType) = sem _lhsIcat _lhsIexpectedTypes _lhsIidenv _lhsIlib 
+     in  (Syn_ScalarExprList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree _lhsOuType ))
+sem_ScalarExprList_Cons :: T_ScalarExpr  ->
+                           T_ScalarExprList  ->
+                           T_ScalarExprList 
+sem_ScalarExprList_Cons hd_ tl_  =
+    (\ _lhsIcat
+       _lhsIexpectedTypes
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOuType :: ([Maybe Type])
+              _hdOexpectedType :: (Maybe Type)
+              _tlOexpectedTypes :: ([Maybe Type])
+              _lhsOannotatedTree :: ScalarExprList 
+              _lhsOfixedUpIdentifiersTree :: ScalarExprList 
+              _lhsOoriginalTree :: ScalarExprList 
+              _hdOcat :: Catalog
+              _hdOidenv :: IDEnv
+              _hdOlib :: LocalBindings
+              _tlOcat :: Catalog
+              _tlOidenv :: IDEnv
+              _tlOlib :: LocalBindings
+              _hdIannotatedTree :: ScalarExpr 
+              _hdIfixedUpIdentifiersTree :: ScalarExpr 
+              _hdIoriginalTree :: ScalarExpr 
+              _hdIuType :: (Maybe Type)
+              _tlIannotatedTree :: ScalarExprList 
+              _tlIfixedUpIdentifiersTree :: ScalarExprList 
+              _tlIoriginalTree :: ScalarExprList 
+              _tlIuType :: ([Maybe Type])
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 107, column 12)
+              _lhsOuType =
+                  _hdIuType : _tlIuType
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 86, column 12)
+              _hdOexpectedType =
+                  case _lhsIexpectedTypes of
+                    (t:_) -> t
+                    _ -> Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 89, column 12)
+              _tlOexpectedTypes =
+                  case _lhsIexpectedTypes of
+                   (_:ts) -> ts
+                   _ -> []
+              -- self rule
+              _annotatedTree =
+                  (:) _hdIannotatedTree _tlIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  (:) _hdIoriginalTree _tlIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _hdOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _hdOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _hdOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _tlOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _tlOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _tlOlib =
+                  _lhsIlib
+              ( _hdIannotatedTree,_hdIfixedUpIdentifiersTree,_hdIoriginalTree,_hdIuType) =
+                  hd_ _hdOcat _hdOexpectedType _hdOidenv _hdOlib 
+              ( _tlIannotatedTree,_tlIfixedUpIdentifiersTree,_tlIoriginalTree,_tlIuType) =
+                  tl_ _tlOcat _tlOexpectedTypes _tlOidenv _tlOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
+sem_ScalarExprList_Nil :: T_ScalarExprList 
+sem_ScalarExprList_Nil  =
+    (\ _lhsIcat
+       _lhsIexpectedTypes
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOuType :: ([Maybe Type])
+              _lhsOannotatedTree :: ScalarExprList 
+              _lhsOfixedUpIdentifiersTree :: ScalarExprList 
+              _lhsOoriginalTree :: ScalarExprList 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 108, column 11)
+              _lhsOuType =
+                  []
+              -- self rule
+              _annotatedTree =
+                  []
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  []
+              -- self rule
+              _originalTree =
+                  []
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
+-- ScalarExprListList ------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         expectedTypes        : [Maybe Type]
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+         uType                : [[Maybe Type]]
+   alternatives:
+      alternative Cons:
+         child hd             : ScalarExprList 
+         child tl             : ScalarExprListList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Nil:
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+type ScalarExprListList  = [ScalarExprList ]
+-- cata
+sem_ScalarExprListList :: ScalarExprListList  ->
+                          T_ScalarExprListList 
+sem_ScalarExprListList list  =
+    (Prelude.foldr sem_ScalarExprListList_Cons sem_ScalarExprListList_Nil (Prelude.map sem_ScalarExprList list) )
+-- semantic domain
+type T_ScalarExprListList  = Catalog ->
+                             ([Maybe Type]) ->
+                             IDEnv ->
+                             LocalBindings ->
+                             ( ScalarExprListList ,ScalarExprListList ,ScalarExprListList ,([[Maybe Type]]))
+data Inh_ScalarExprListList  = Inh_ScalarExprListList {cat_Inh_ScalarExprListList :: Catalog,expectedTypes_Inh_ScalarExprListList :: ([Maybe Type]),idenv_Inh_ScalarExprListList :: IDEnv,lib_Inh_ScalarExprListList :: LocalBindings}
+data Syn_ScalarExprListList  = Syn_ScalarExprListList {annotatedTree_Syn_ScalarExprListList :: ScalarExprListList ,fixedUpIdentifiersTree_Syn_ScalarExprListList :: ScalarExprListList ,originalTree_Syn_ScalarExprListList :: ScalarExprListList ,uType_Syn_ScalarExprListList :: ([[Maybe Type]])}
+wrap_ScalarExprListList :: T_ScalarExprListList  ->
+                           Inh_ScalarExprListList  ->
+                           Syn_ScalarExprListList 
+wrap_ScalarExprListList sem (Inh_ScalarExprListList _lhsIcat _lhsIexpectedTypes _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType) = sem _lhsIcat _lhsIexpectedTypes _lhsIidenv _lhsIlib 
+     in  (Syn_ScalarExprListList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree _lhsOuType ))
+sem_ScalarExprListList_Cons :: T_ScalarExprList  ->
+                               T_ScalarExprListList  ->
+                               T_ScalarExprListList 
+sem_ScalarExprListList_Cons hd_ tl_  =
+    (\ _lhsIcat
+       _lhsIexpectedTypes
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOuType :: ([[Maybe Type]])
+              _hdOexpectedTypes :: ([Maybe Type])
+              _tlOexpectedTypes :: ([Maybe Type])
+              _lhsOannotatedTree :: ScalarExprListList 
+              _lhsOfixedUpIdentifiersTree :: ScalarExprListList 
+              _lhsOoriginalTree :: ScalarExprListList 
+              _hdOcat :: Catalog
+              _hdOidenv :: IDEnv
+              _hdOlib :: LocalBindings
+              _tlOcat :: Catalog
+              _tlOidenv :: IDEnv
+              _tlOlib :: LocalBindings
+              _hdIannotatedTree :: ScalarExprList 
+              _hdIfixedUpIdentifiersTree :: ScalarExprList 
+              _hdIoriginalTree :: ScalarExprList 
+              _hdIuType :: ([Maybe Type])
+              _tlIannotatedTree :: ScalarExprListList 
+              _tlIfixedUpIdentifiersTree :: ScalarExprListList 
+              _tlIoriginalTree :: ScalarExprListList 
+              _tlIuType :: ([[Maybe Type]])
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 117, column 12)
+              _lhsOuType =
+                  _hdIuType : _tlIuType
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 167, column 12)
+              _hdOexpectedTypes =
+                  _lhsIexpectedTypes
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 168, column 12)
+              _tlOexpectedTypes =
+                  _lhsIexpectedTypes
+              -- self rule
+              _annotatedTree =
+                  (:) _hdIannotatedTree _tlIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  (:) _hdIoriginalTree _tlIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _hdOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _hdOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _hdOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _tlOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _tlOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _tlOlib =
+                  _lhsIlib
+              ( _hdIannotatedTree,_hdIfixedUpIdentifiersTree,_hdIoriginalTree,_hdIuType) =
+                  hd_ _hdOcat _hdOexpectedTypes _hdOidenv _hdOlib 
+              ( _tlIannotatedTree,_tlIfixedUpIdentifiersTree,_tlIoriginalTree,_tlIuType) =
+                  tl_ _tlOcat _tlOexpectedTypes _tlOidenv _tlOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
+sem_ScalarExprListList_Nil :: T_ScalarExprListList 
+sem_ScalarExprListList_Nil  =
+    (\ _lhsIcat
+       _lhsIexpectedTypes
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOuType :: ([[Maybe Type]])
+              _lhsOannotatedTree :: ScalarExprListList 
+              _lhsOfixedUpIdentifiersTree :: ScalarExprListList 
+              _lhsOoriginalTree :: ScalarExprListList 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs/ScalarExprs.ag"(line 118, column 11)
+              _lhsOuType =
+                  []
+              -- self rule
+              _annotatedTree =
+                  []
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  []
+              -- self rule
+              _originalTree =
+                  []
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOuType)))
+-- ScalarExprListStatementListPair -----------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+   alternatives:
+      alternative Tuple:
+         child x1             : ScalarExprList 
+         child x2             : StatementList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+type ScalarExprListStatementListPair  = ( ScalarExprList ,StatementList )
+-- cata
+sem_ScalarExprListStatementListPair :: ScalarExprListStatementListPair  ->
+                                       T_ScalarExprListStatementListPair 
+sem_ScalarExprListStatementListPair ( x1,x2)  =
+    (sem_ScalarExprListStatementListPair_Tuple (sem_ScalarExprList x1 ) (sem_StatementList x2 ) )
+-- semantic domain
+type T_ScalarExprListStatementListPair  = Catalog ->
+                                          IDEnv ->
+                                          LocalBindings ->
+                                          ( ScalarExprListStatementListPair ,ScalarExprListStatementListPair ,ScalarExprListStatementListPair )
+data Inh_ScalarExprListStatementListPair  = Inh_ScalarExprListStatementListPair {cat_Inh_ScalarExprListStatementListPair :: Catalog,idenv_Inh_ScalarExprListStatementListPair :: IDEnv,lib_Inh_ScalarExprListStatementListPair :: LocalBindings}
+data Syn_ScalarExprListStatementListPair  = Syn_ScalarExprListStatementListPair {annotatedTree_Syn_ScalarExprListStatementListPair :: ScalarExprListStatementListPair ,fixedUpIdentifiersTree_Syn_ScalarExprListStatementListPair :: ScalarExprListStatementListPair ,originalTree_Syn_ScalarExprListStatementListPair :: ScalarExprListStatementListPair }
+wrap_ScalarExprListStatementListPair :: T_ScalarExprListStatementListPair  ->
+                                        Inh_ScalarExprListStatementListPair  ->
+                                        Syn_ScalarExprListStatementListPair 
+wrap_ScalarExprListStatementListPair sem (Inh_ScalarExprListStatementListPair _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_ScalarExprListStatementListPair _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
+sem_ScalarExprListStatementListPair_Tuple :: T_ScalarExprList  ->
+                                             T_StatementList  ->
+                                             T_ScalarExprListStatementListPair 
+sem_ScalarExprListStatementListPair_Tuple x1_ x2_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _x2OcatUpdates :: ([CatalogUpdate])
+              _x2OlibUpdates :: ([LocalBindingsUpdate])
+              _x1OexpectedTypes :: ([Maybe Type])
+              _lhsOannotatedTree :: ScalarExprListStatementListPair 
+              _lhsOfixedUpIdentifiersTree :: ScalarExprListStatementListPair 
+              _lhsOoriginalTree :: ScalarExprListStatementListPair 
+              _x1Ocat :: Catalog
+              _x1Oidenv :: IDEnv
+              _x1Olib :: LocalBindings
+              _x2Ocat :: Catalog
+              _x2Oidenv :: IDEnv
+              _x2Olib :: LocalBindings
+              _x1IannotatedTree :: ScalarExprList 
+              _x1IfixedUpIdentifiersTree :: ScalarExprList 
+              _x1IoriginalTree :: ScalarExprList 
+              _x1IuType :: ([Maybe Type])
+              _x2IannotatedTree :: StatementList 
+              _x2IfixedUpIdentifiersTree :: StatementList 
+              _x2IoriginalTree :: StatementList 
+              _x2IproducedCat :: Catalog
+              _x2IproducedLib :: LocalBindings
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 121, column 9)
+              _x2OcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 122, column 9)
+              _x2OlibUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 144, column 13)
+              _x1OexpectedTypes =
+                  []
+              -- self rule
+              _annotatedTree =
+                  (_x1IannotatedTree,_x2IannotatedTree)
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  (_x1IfixedUpIdentifiersTree,_x2IfixedUpIdentifiersTree)
+              -- self rule
+              _originalTree =
+                  (_x1IoriginalTree,_x2IoriginalTree)
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _x1Ocat =
+                  _lhsIcat
+              -- copy rule (down)
+              _x1Oidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _x1Olib =
+                  _lhsIlib
+              -- copy rule (down)
+              _x2Ocat =
+                  _lhsIcat
+              -- copy rule (down)
+              _x2Oidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _x2Olib =
+                  _lhsIlib
+              ( _x1IannotatedTree,_x1IfixedUpIdentifiersTree,_x1IoriginalTree,_x1IuType) =
+                  x1_ _x1Ocat _x1OexpectedTypes _x1Oidenv _x1Olib 
+              ( _x2IannotatedTree,_x2IfixedUpIdentifiersTree,_x2IoriginalTree,_x2IproducedCat,_x2IproducedLib) =
+                  x2_ _x2Ocat _x2OcatUpdates _x2Oidenv _x2Olib _x2OlibUpdates 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+-- ScalarExprListStatementListPairList -------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+   alternatives:
+      alternative Cons:
+         child hd             : ScalarExprListStatementListPair 
+         child tl             : ScalarExprListStatementListPairList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Nil:
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+type ScalarExprListStatementListPairList  = [ScalarExprListStatementListPair ]
+-- cata
+sem_ScalarExprListStatementListPairList :: ScalarExprListStatementListPairList  ->
+                                           T_ScalarExprListStatementListPairList 
+sem_ScalarExprListStatementListPairList list  =
+    (Prelude.foldr sem_ScalarExprListStatementListPairList_Cons sem_ScalarExprListStatementListPairList_Nil (Prelude.map sem_ScalarExprListStatementListPair list) )
+-- semantic domain
+type T_ScalarExprListStatementListPairList  = Catalog ->
+                                              IDEnv ->
+                                              LocalBindings ->
+                                              ( ScalarExprListStatementListPairList ,ScalarExprListStatementListPairList ,ScalarExprListStatementListPairList )
+data Inh_ScalarExprListStatementListPairList  = Inh_ScalarExprListStatementListPairList {cat_Inh_ScalarExprListStatementListPairList :: Catalog,idenv_Inh_ScalarExprListStatementListPairList :: IDEnv,lib_Inh_ScalarExprListStatementListPairList :: LocalBindings}
+data Syn_ScalarExprListStatementListPairList  = Syn_ScalarExprListStatementListPairList {annotatedTree_Syn_ScalarExprListStatementListPairList :: ScalarExprListStatementListPairList ,fixedUpIdentifiersTree_Syn_ScalarExprListStatementListPairList :: ScalarExprListStatementListPairList ,originalTree_Syn_ScalarExprListStatementListPairList :: ScalarExprListStatementListPairList }
+wrap_ScalarExprListStatementListPairList :: T_ScalarExprListStatementListPairList  ->
+                                            Inh_ScalarExprListStatementListPairList  ->
+                                            Syn_ScalarExprListStatementListPairList 
+wrap_ScalarExprListStatementListPairList sem (Inh_ScalarExprListStatementListPairList _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_ScalarExprListStatementListPairList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
+sem_ScalarExprListStatementListPairList_Cons :: T_ScalarExprListStatementListPair  ->
+                                                T_ScalarExprListStatementListPairList  ->
+                                                T_ScalarExprListStatementListPairList 
+sem_ScalarExprListStatementListPairList_Cons hd_ tl_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: ScalarExprListStatementListPairList 
+              _lhsOfixedUpIdentifiersTree :: ScalarExprListStatementListPairList 
+              _lhsOoriginalTree :: ScalarExprListStatementListPairList 
+              _hdOcat :: Catalog
+              _hdOidenv :: IDEnv
+              _hdOlib :: LocalBindings
+              _tlOcat :: Catalog
+              _tlOidenv :: IDEnv
+              _tlOlib :: LocalBindings
+              _hdIannotatedTree :: ScalarExprListStatementListPair 
+              _hdIfixedUpIdentifiersTree :: ScalarExprListStatementListPair 
+              _hdIoriginalTree :: ScalarExprListStatementListPair 
+              _tlIannotatedTree :: ScalarExprListStatementListPairList 
+              _tlIfixedUpIdentifiersTree :: ScalarExprListStatementListPairList 
+              _tlIoriginalTree :: ScalarExprListStatementListPairList 
+              -- self rule
+              _annotatedTree =
+                  (:) _hdIannotatedTree _tlIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  (:) _hdIoriginalTree _tlIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _hdOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _hdOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _hdOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _tlOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _tlOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _tlOlib =
+                  _lhsIlib
+              ( _hdIannotatedTree,_hdIfixedUpIdentifiersTree,_hdIoriginalTree) =
+                  hd_ _hdOcat _hdOidenv _hdOlib 
+              ( _tlIannotatedTree,_tlIfixedUpIdentifiersTree,_tlIoriginalTree) =
+                  tl_ _tlOcat _tlOidenv _tlOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+sem_ScalarExprListStatementListPairList_Nil :: T_ScalarExprListStatementListPairList 
+sem_ScalarExprListStatementListPairList_Nil  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: ScalarExprListStatementListPairList 
+              _lhsOfixedUpIdentifiersTree :: ScalarExprListStatementListPairList 
+              _lhsOoriginalTree :: ScalarExprListStatementListPairList 
+              -- self rule
+              _annotatedTree =
+                  []
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  []
+              -- self rule
+              _originalTree =
+                  []
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+-- ScalarExprRoot ----------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+   alternatives:
+      alternative ScalarExprRoot:
+         child expr           : ScalarExpr 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+data ScalarExprRoot  = ScalarExprRoot (ScalarExpr ) 
+                     deriving ( Show)
+-- cata
+sem_ScalarExprRoot :: ScalarExprRoot  ->
+                      T_ScalarExprRoot 
+sem_ScalarExprRoot (ScalarExprRoot _expr )  =
+    (sem_ScalarExprRoot_ScalarExprRoot (sem_ScalarExpr _expr ) )
+-- semantic domain
+type T_ScalarExprRoot  = Catalog ->
+                         IDEnv ->
+                         LocalBindings ->
+                         ( ScalarExprRoot ,ScalarExprRoot ,ScalarExprRoot )
+data Inh_ScalarExprRoot  = Inh_ScalarExprRoot {cat_Inh_ScalarExprRoot :: Catalog,idenv_Inh_ScalarExprRoot :: IDEnv,lib_Inh_ScalarExprRoot :: LocalBindings}
+data Syn_ScalarExprRoot  = Syn_ScalarExprRoot {annotatedTree_Syn_ScalarExprRoot :: ScalarExprRoot ,fixedUpIdentifiersTree_Syn_ScalarExprRoot :: ScalarExprRoot ,originalTree_Syn_ScalarExprRoot :: ScalarExprRoot }
+wrap_ScalarExprRoot :: T_ScalarExprRoot  ->
+                       Inh_ScalarExprRoot  ->
+                       Syn_ScalarExprRoot 
+wrap_ScalarExprRoot sem (Inh_ScalarExprRoot _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_ScalarExprRoot _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
+sem_ScalarExprRoot_ScalarExprRoot :: T_ScalarExpr  ->
+                                     T_ScalarExprRoot 
+sem_ScalarExprRoot_ScalarExprRoot expr_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _exprOexpectedType :: (Maybe Type)
+              _lhsOannotatedTree :: ScalarExprRoot 
+              _lhsOfixedUpIdentifiersTree :: ScalarExprRoot 
+              _lhsOoriginalTree :: ScalarExprRoot 
+              _exprOcat :: Catalog
+              _exprOidenv :: IDEnv
+              _exprOlib :: LocalBindings
+              _exprIannotatedTree :: ScalarExpr 
+              _exprIfixedUpIdentifiersTree :: ScalarExpr 
+              _exprIoriginalTree :: ScalarExpr 
+              _exprIuType :: (Maybe Type)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 123, column 22)
+              _exprOexpectedType =
+                  Nothing
+              -- self rule
+              _annotatedTree =
+                  ScalarExprRoot _exprIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  ScalarExprRoot _exprIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  ScalarExprRoot _exprIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _exprOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _exprOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _exprOlib =
+                  _lhsIlib
+              ( _exprIannotatedTree,_exprIfixedUpIdentifiersTree,_exprIoriginalTree,_exprIuType) =
+                  expr_ _exprOcat _exprOexpectedType _exprOidenv _exprOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+-- ScalarExprStatementListPair ---------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+   alternatives:
+      alternative Tuple:
+         child x1             : ScalarExpr 
+         child x2             : StatementList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+type ScalarExprStatementListPair  = ( ScalarExpr ,StatementList )
+-- cata
+sem_ScalarExprStatementListPair :: ScalarExprStatementListPair  ->
+                                   T_ScalarExprStatementListPair 
+sem_ScalarExprStatementListPair ( x1,x2)  =
+    (sem_ScalarExprStatementListPair_Tuple (sem_ScalarExpr x1 ) (sem_StatementList x2 ) )
+-- semantic domain
+type T_ScalarExprStatementListPair  = Catalog ->
+                                      IDEnv ->
+                                      LocalBindings ->
+                                      ( ScalarExprStatementListPair ,ScalarExprStatementListPair ,ScalarExprStatementListPair )
+data Inh_ScalarExprStatementListPair  = Inh_ScalarExprStatementListPair {cat_Inh_ScalarExprStatementListPair :: Catalog,idenv_Inh_ScalarExprStatementListPair :: IDEnv,lib_Inh_ScalarExprStatementListPair :: LocalBindings}
+data Syn_ScalarExprStatementListPair  = Syn_ScalarExprStatementListPair {annotatedTree_Syn_ScalarExprStatementListPair :: ScalarExprStatementListPair ,fixedUpIdentifiersTree_Syn_ScalarExprStatementListPair :: ScalarExprStatementListPair ,originalTree_Syn_ScalarExprStatementListPair :: ScalarExprStatementListPair }
+wrap_ScalarExprStatementListPair :: T_ScalarExprStatementListPair  ->
+                                    Inh_ScalarExprStatementListPair  ->
+                                    Syn_ScalarExprStatementListPair 
+wrap_ScalarExprStatementListPair sem (Inh_ScalarExprStatementListPair _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_ScalarExprStatementListPair _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
+sem_ScalarExprStatementListPair_Tuple :: T_ScalarExpr  ->
+                                         T_StatementList  ->
+                                         T_ScalarExprStatementListPair 
+sem_ScalarExprStatementListPair_Tuple x1_ x2_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _x2OcatUpdates :: ([CatalogUpdate])
+              _x2OlibUpdates :: ([LocalBindingsUpdate])
+              _x1OexpectedType :: (Maybe Type)
+              _lhsOannotatedTree :: ScalarExprStatementListPair 
+              _lhsOfixedUpIdentifiersTree :: ScalarExprStatementListPair 
+              _lhsOoriginalTree :: ScalarExprStatementListPair 
+              _x1Ocat :: Catalog
+              _x1Oidenv :: IDEnv
+              _x1Olib :: LocalBindings
+              _x2Ocat :: Catalog
+              _x2Oidenv :: IDEnv
+              _x2Olib :: LocalBindings
+              _x1IannotatedTree :: ScalarExpr 
+              _x1IfixedUpIdentifiersTree :: ScalarExpr 
+              _x1IoriginalTree :: ScalarExpr 
+              _x1IuType :: (Maybe Type)
+              _x2IannotatedTree :: StatementList 
+              _x2IfixedUpIdentifiersTree :: StatementList 
+              _x2IoriginalTree :: StatementList 
+              _x2IproducedCat :: Catalog
+              _x2IproducedLib :: LocalBindings
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 125, column 9)
+              _x2OcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 126, column 9)
+              _x2OlibUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 126, column 13)
+              _x1OexpectedType =
+                  Nothing
+              -- self rule
+              _annotatedTree =
+                  (_x1IannotatedTree,_x2IannotatedTree)
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  (_x1IfixedUpIdentifiersTree,_x2IfixedUpIdentifiersTree)
+              -- self rule
+              _originalTree =
+                  (_x1IoriginalTree,_x2IoriginalTree)
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _x1Ocat =
+                  _lhsIcat
+              -- copy rule (down)
+              _x1Oidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _x1Olib =
+                  _lhsIlib
+              -- copy rule (down)
+              _x2Ocat =
+                  _lhsIcat
+              -- copy rule (down)
+              _x2Oidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _x2Olib =
+                  _lhsIlib
+              ( _x1IannotatedTree,_x1IfixedUpIdentifiersTree,_x1IoriginalTree,_x1IuType) =
+                  x1_ _x1Ocat _x1OexpectedType _x1Oidenv _x1Olib 
+              ( _x2IannotatedTree,_x2IfixedUpIdentifiersTree,_x2IoriginalTree,_x2IproducedCat,_x2IproducedLib) =
+                  x2_ _x2Ocat _x2OcatUpdates _x2Oidenv _x2Olib _x2OlibUpdates 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+-- ScalarExprStatementListPairList -----------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+   alternatives:
+      alternative Cons:
+         child hd             : ScalarExprStatementListPair 
+         child tl             : ScalarExprStatementListPairList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Nil:
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+type ScalarExprStatementListPairList  = [ScalarExprStatementListPair ]
+-- cata
+sem_ScalarExprStatementListPairList :: ScalarExprStatementListPairList  ->
+                                       T_ScalarExprStatementListPairList 
+sem_ScalarExprStatementListPairList list  =
+    (Prelude.foldr sem_ScalarExprStatementListPairList_Cons sem_ScalarExprStatementListPairList_Nil (Prelude.map sem_ScalarExprStatementListPair list) )
+-- semantic domain
+type T_ScalarExprStatementListPairList  = Catalog ->
+                                          IDEnv ->
+                                          LocalBindings ->
+                                          ( ScalarExprStatementListPairList ,ScalarExprStatementListPairList ,ScalarExprStatementListPairList )
+data Inh_ScalarExprStatementListPairList  = Inh_ScalarExprStatementListPairList {cat_Inh_ScalarExprStatementListPairList :: Catalog,idenv_Inh_ScalarExprStatementListPairList :: IDEnv,lib_Inh_ScalarExprStatementListPairList :: LocalBindings}
+data Syn_ScalarExprStatementListPairList  = Syn_ScalarExprStatementListPairList {annotatedTree_Syn_ScalarExprStatementListPairList :: ScalarExprStatementListPairList ,fixedUpIdentifiersTree_Syn_ScalarExprStatementListPairList :: ScalarExprStatementListPairList ,originalTree_Syn_ScalarExprStatementListPairList :: ScalarExprStatementListPairList }
+wrap_ScalarExprStatementListPairList :: T_ScalarExprStatementListPairList  ->
+                                        Inh_ScalarExprStatementListPairList  ->
+                                        Syn_ScalarExprStatementListPairList 
+wrap_ScalarExprStatementListPairList sem (Inh_ScalarExprStatementListPairList _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_ScalarExprStatementListPairList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
+sem_ScalarExprStatementListPairList_Cons :: T_ScalarExprStatementListPair  ->
+                                            T_ScalarExprStatementListPairList  ->
+                                            T_ScalarExprStatementListPairList 
+sem_ScalarExprStatementListPairList_Cons hd_ tl_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: ScalarExprStatementListPairList 
+              _lhsOfixedUpIdentifiersTree :: ScalarExprStatementListPairList 
+              _lhsOoriginalTree :: ScalarExprStatementListPairList 
+              _hdOcat :: Catalog
+              _hdOidenv :: IDEnv
+              _hdOlib :: LocalBindings
+              _tlOcat :: Catalog
+              _tlOidenv :: IDEnv
+              _tlOlib :: LocalBindings
+              _hdIannotatedTree :: ScalarExprStatementListPair 
+              _hdIfixedUpIdentifiersTree :: ScalarExprStatementListPair 
+              _hdIoriginalTree :: ScalarExprStatementListPair 
+              _tlIannotatedTree :: ScalarExprStatementListPairList 
+              _tlIfixedUpIdentifiersTree :: ScalarExprStatementListPairList 
+              _tlIoriginalTree :: ScalarExprStatementListPairList 
+              -- self rule
+              _annotatedTree =
+                  (:) _hdIannotatedTree _tlIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  (:) _hdIoriginalTree _tlIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _hdOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _hdOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _hdOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _tlOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _tlOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _tlOlib =
+                  _lhsIlib
+              ( _hdIannotatedTree,_hdIfixedUpIdentifiersTree,_hdIoriginalTree) =
+                  hd_ _hdOcat _hdOidenv _hdOlib 
+              ( _tlIannotatedTree,_tlIfixedUpIdentifiersTree,_tlIoriginalTree) =
+                  tl_ _tlOcat _tlOidenv _tlOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+sem_ScalarExprStatementListPairList_Nil :: T_ScalarExprStatementListPairList 
+sem_ScalarExprStatementListPairList_Nil  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: ScalarExprStatementListPairList 
+              _lhsOfixedUpIdentifiersTree :: ScalarExprStatementListPairList 
+              _lhsOoriginalTree :: ScalarExprStatementListPairList 
+              -- self rule
+              _annotatedTree =
+                  []
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  []
+              -- self rule
+              _originalTree =
+                  []
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+-- SelectItem --------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         itemType             : (String,Maybe Type)
+         originalTree         : SELF 
+         seIdTree             : [SelectItem]
+   alternatives:
+      alternative SelExp:
+         child ann            : {Annotation}
+         child ex             : ScalarExpr 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative SelectItem:
+         child ann            : {Annotation}
+         child ex             : ScalarExpr 
+         child name           : {String}
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+data SelectItem  = SelExp (Annotation) (ScalarExpr ) 
+                 | SelectItem (Annotation) (ScalarExpr ) (String) 
+                 deriving ( Data,Eq,Show,Typeable)
+-- cata
+sem_SelectItem :: SelectItem  ->
+                  T_SelectItem 
+sem_SelectItem (SelExp _ann _ex )  =
+    (sem_SelectItem_SelExp _ann (sem_ScalarExpr _ex ) )
+sem_SelectItem (SelectItem _ann _ex _name )  =
+    (sem_SelectItem_SelectItem _ann (sem_ScalarExpr _ex ) _name )
+-- semantic domain
+type T_SelectItem  = Catalog ->
+                     IDEnv ->
+                     LocalBindings ->
+                     ( SelectItem ,SelectItem ,((String,Maybe Type)),SelectItem ,([SelectItem]))
+data Inh_SelectItem  = Inh_SelectItem {cat_Inh_SelectItem :: Catalog,idenv_Inh_SelectItem :: IDEnv,lib_Inh_SelectItem :: LocalBindings}
+data Syn_SelectItem  = Syn_SelectItem {annotatedTree_Syn_SelectItem :: SelectItem ,fixedUpIdentifiersTree_Syn_SelectItem :: SelectItem ,itemType_Syn_SelectItem :: ((String,Maybe Type)),originalTree_Syn_SelectItem :: SelectItem ,seIdTree_Syn_SelectItem :: ([SelectItem])}
+wrap_SelectItem :: T_SelectItem  ->
+                   Inh_SelectItem  ->
+                   Syn_SelectItem 
+wrap_SelectItem sem (Inh_SelectItem _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOitemType,_lhsOoriginalTree,_lhsOseIdTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_SelectItem _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOitemType _lhsOoriginalTree _lhsOseIdTree ))
+sem_SelectItem_SelExp :: Annotation ->
+                         T_ScalarExpr  ->
+                         T_SelectItem 
+sem_SelectItem_SelExp ann_ ex_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOseIdTree :: ([SelectItem])
+              _lhsOitemType :: ((String,Maybe Type))
+              _exOexpectedType :: (Maybe Type)
+              _lhsOannotatedTree :: SelectItem 
+              _lhsOfixedUpIdentifiersTree :: SelectItem 
+              _lhsOoriginalTree :: SelectItem 
+              _exOcat :: Catalog
+              _exOidenv :: IDEnv
+              _exOlib :: LocalBindings
+              _exIannotatedTree :: ScalarExpr 
+              _exIfixedUpIdentifiersTree :: ScalarExpr 
+              _exIoriginalTree :: ScalarExpr 
+              _exIuType :: (Maybe Type)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 150, column 14)
+              _lhsOseIdTree =
+                  case _exIfixedUpIdentifiersTree of
+                    Identifier a "*" -> let s = expandStar _lhsIidenv Nothing
+                                            in if null s
+                                               then [addSIAlias $ SelExp ann_ _exIfixedUpIdentifiersTree]
+                                               else makeSelExps ann_ a a s
+                    QIdentifier a0 (Identifier a1 q) "*" ->
+                       let s = expandStar _lhsIidenv $ Just q
+                       in if null s
+                          then [addSIAlias $ SelExp ann_ _exIfixedUpIdentifiersTree]
+                          else makeSelExps ann_ a0 a1 s
+                    _ -> [addSIAlias $ SelExp ann_ _exIfixedUpIdentifiersTree]
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 32, column 9)
+              _annotatedTree =
+                  SelExp ann_ _exIannotatedTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 60, column 9)
+              _lhsOitemType =
+                  ("", Nothing)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 106, column 25)
+              _exOexpectedType =
+                  Nothing
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  SelExp ann_ _exIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  SelExp ann_ _exIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _exOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _exOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _exOlib =
+                  _lhsIlib
+              ( _exIannotatedTree,_exIfixedUpIdentifiersTree,_exIoriginalTree,_exIuType) =
+                  ex_ _exOcat _exOexpectedType _exOidenv _exOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOitemType,_lhsOoriginalTree,_lhsOseIdTree)))
+sem_SelectItem_SelectItem :: Annotation ->
+                             T_ScalarExpr  ->
+                             String ->
+                             T_SelectItem 
+sem_SelectItem_SelectItem ann_ ex_ name_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOseIdTree :: ([SelectItem])
+              _lhsOitemType :: ((String,Maybe Type))
+              _exOexpectedType :: (Maybe Type)
+              _lhsOannotatedTree :: SelectItem 
+              _lhsOfixedUpIdentifiersTree :: SelectItem 
+              _lhsOoriginalTree :: SelectItem 
+              _exOcat :: Catalog
+              _exOidenv :: IDEnv
+              _exOlib :: LocalBindings
+              _exIannotatedTree :: ScalarExpr 
+              _exIfixedUpIdentifiersTree :: ScalarExpr 
+              _exIoriginalTree :: ScalarExpr 
+              _exIuType :: (Maybe Type)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 163, column 18)
+              _lhsOseIdTree =
+                  [SelectItem ann_ _exIfixedUpIdentifiersTree name_]
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 34, column 9)
+              _annotatedTree =
+                  SelectItem ann_ _exIannotatedTree name_
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 62, column 9)
+              _lhsOitemType =
+                  (name_, unwrapSetof `fmap` _exIuType)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 106, column 25)
+              _exOexpectedType =
+                  Nothing
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  SelectItem ann_ _exIfixedUpIdentifiersTree name_
+              -- self rule
+              _originalTree =
+                  SelectItem ann_ _exIoriginalTree name_
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _exOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _exOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _exOlib =
+                  _lhsIlib
+              ( _exIannotatedTree,_exIfixedUpIdentifiersTree,_exIoriginalTree,_exIuType) =
+                  ex_ _exOcat _exOexpectedType _exOidenv _exOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOitemType,_lhsOoriginalTree,_lhsOseIdTree)))
+-- SelectItemList ----------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         listType             : [(String,Maybe Type)]
+         originalTree         : SELF 
+   alternatives:
+      alternative Cons:
+         child hd             : SelectItem 
+         child tl             : SelectItemList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Nil:
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+type SelectItemList  = [SelectItem ]
+-- cata
+sem_SelectItemList :: SelectItemList  ->
+                      T_SelectItemList 
+sem_SelectItemList list  =
+    (Prelude.foldr sem_SelectItemList_Cons sem_SelectItemList_Nil (Prelude.map sem_SelectItem list) )
+-- semantic domain
+type T_SelectItemList  = Catalog ->
+                         IDEnv ->
+                         LocalBindings ->
+                         ( SelectItemList ,SelectItemList ,([(String,Maybe Type)]),SelectItemList )
+data Inh_SelectItemList  = Inh_SelectItemList {cat_Inh_SelectItemList :: Catalog,idenv_Inh_SelectItemList :: IDEnv,lib_Inh_SelectItemList :: LocalBindings}
+data Syn_SelectItemList  = Syn_SelectItemList {annotatedTree_Syn_SelectItemList :: SelectItemList ,fixedUpIdentifiersTree_Syn_SelectItemList :: SelectItemList ,listType_Syn_SelectItemList :: ([(String,Maybe Type)]),originalTree_Syn_SelectItemList :: SelectItemList }
+wrap_SelectItemList :: T_SelectItemList  ->
+                       Inh_SelectItemList  ->
+                       Syn_SelectItemList 
+wrap_SelectItemList sem (Inh_SelectItemList _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlistType,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_SelectItemList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOlistType _lhsOoriginalTree ))
+sem_SelectItemList_Cons :: T_SelectItem  ->
+                           T_SelectItemList  ->
+                           T_SelectItemList 
+sem_SelectItemList_Cons hd_ tl_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOfixedUpIdentifiersTree :: SelectItemList 
+              _lhsOlistType :: ([(String,Maybe Type)])
+              _lhsOannotatedTree :: SelectItemList 
+              _lhsOoriginalTree :: SelectItemList 
+              _hdOcat :: Catalog
+              _hdOidenv :: IDEnv
+              _hdOlib :: LocalBindings
+              _tlOcat :: Catalog
+              _tlOidenv :: IDEnv
+              _tlOlib :: LocalBindings
+              _hdIannotatedTree :: SelectItem 
+              _hdIfixedUpIdentifiersTree :: SelectItem 
+              _hdIitemType :: ((String,Maybe Type))
+              _hdIoriginalTree :: SelectItem 
+              _hdIseIdTree :: ([SelectItem])
+              _tlIannotatedTree :: SelectItemList 
+              _tlIfixedUpIdentifiersTree :: SelectItemList 
+              _tlIlistType :: ([(String,Maybe Type)])
+              _tlIoriginalTree :: SelectItemList 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 141, column 12)
+              _lhsOfixedUpIdentifiersTree =
+                  _hdIseIdTree ++ _tlIfixedUpIdentifiersTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 42, column 12)
+              _lhsOlistType =
+                  _hdIitemType : _tlIlistType
+              -- self rule
+              _annotatedTree =
+                  (:) _hdIannotatedTree _tlIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  (:) _hdIoriginalTree _tlIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _hdOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _hdOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _hdOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _tlOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _tlOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _tlOlib =
+                  _lhsIlib
+              ( _hdIannotatedTree,_hdIfixedUpIdentifiersTree,_hdIitemType,_hdIoriginalTree,_hdIseIdTree) =
+                  hd_ _hdOcat _hdOidenv _hdOlib 
+              ( _tlIannotatedTree,_tlIfixedUpIdentifiersTree,_tlIlistType,_tlIoriginalTree) =
+                  tl_ _tlOcat _tlOidenv _tlOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlistType,_lhsOoriginalTree)))
+sem_SelectItemList_Nil :: T_SelectItemList 
+sem_SelectItemList_Nil  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOfixedUpIdentifiersTree :: SelectItemList 
+              _lhsOlistType :: ([(String,Maybe Type)])
+              _lhsOannotatedTree :: SelectItemList 
+              _lhsOoriginalTree :: SelectItemList 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 142, column 11)
+              _lhsOfixedUpIdentifiersTree =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 43, column 11)
+              _lhsOlistType =
+                  []
+              -- self rule
+              _annotatedTree =
+                  []
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  []
+              -- self rule
+              _originalTree =
+                  []
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlistType,_lhsOoriginalTree)))
+-- SelectList --------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         cidenv               : IDEnv
+         fixedUpIdentifiersTree : SELF 
+         libUpdates           : [LocalBindingsUpdate]
+         listType             : [(String,Maybe Type)]
+         originalTree         : SELF 
+   alternatives:
+      alternative SelectList:
+         child ann            : {Annotation}
+         child items          : SelectItemList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+data SelectList  = SelectList (Annotation) (SelectItemList ) 
+                 deriving ( Data,Eq,Show,Typeable)
+-- cata
+sem_SelectList :: SelectList  ->
+                  T_SelectList 
+sem_SelectList (SelectList _ann _items )  =
+    (sem_SelectList_SelectList _ann (sem_SelectItemList _items ) )
+-- semantic domain
+type T_SelectList  = Catalog ->
+                     IDEnv ->
+                     LocalBindings ->
+                     ( SelectList ,IDEnv,SelectList ,([LocalBindingsUpdate]),([(String,Maybe Type)]),SelectList )
+data Inh_SelectList  = Inh_SelectList {cat_Inh_SelectList :: Catalog,idenv_Inh_SelectList :: IDEnv,lib_Inh_SelectList :: LocalBindings}
+data Syn_SelectList  = Syn_SelectList {annotatedTree_Syn_SelectList :: SelectList ,cidenv_Syn_SelectList :: IDEnv,fixedUpIdentifiersTree_Syn_SelectList :: SelectList ,libUpdates_Syn_SelectList :: ([LocalBindingsUpdate]),listType_Syn_SelectList :: ([(String,Maybe Type)]),originalTree_Syn_SelectList :: SelectList }
+wrap_SelectList :: T_SelectList  ->
+                   Inh_SelectList  ->
+                   Syn_SelectList 
+wrap_SelectList sem (Inh_SelectList _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOcidenv,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOlistType,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_SelectList _lhsOannotatedTree _lhsOcidenv _lhsOfixedUpIdentifiersTree _lhsOlibUpdates _lhsOlistType _lhsOoriginalTree ))
+sem_SelectList_SelectList :: Annotation ->
+                             T_SelectItemList  ->
+                             T_SelectList 
+sem_SelectList_SelectList ann_ items_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOcidenv :: IDEnv
+              _lhsOlistType :: ([(String,Maybe Type)])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _lhsOannotatedTree :: SelectList 
+              _lhsOfixedUpIdentifiersTree :: SelectList 
+              _lhsOoriginalTree :: SelectList 
+              _itemsOcat :: Catalog
+              _itemsOidenv :: IDEnv
+              _itemsOlib :: LocalBindings
+              _itemsIannotatedTree :: SelectItemList 
+              _itemsIfixedUpIdentifiersTree :: SelectItemList 
+              _itemsIlistType :: ([(String,Maybe Type)])
+              _itemsIoriginalTree :: SelectItemList 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 124, column 18)
+              _lhsOcidenv =
+                  makeIDEnv "" $ flip map _itemsIfixedUpIdentifiersTree
+                                   $ \(SelectItem _ _ n) -> n
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 77, column 9)
+              _lhsOlistType =
+                  _itemsIlistType
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 97, column 9)
+              _lhsOlibUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 131, column 9)
+              _lhsOannotatedTree =
+                  SelectList ann_
+                             _itemsIannotatedTree
+              -- self rule
+              _annotatedTree =
+                  SelectList ann_ _itemsIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  SelectList ann_ _itemsIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  SelectList ann_ _itemsIoriginalTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _itemsOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _itemsOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _itemsOlib =
+                  _lhsIlib
+              ( _itemsIannotatedTree,_itemsIfixedUpIdentifiersTree,_itemsIlistType,_itemsIoriginalTree) =
+                  items_ _itemsOcat _itemsOidenv _itemsOlib 
+          in  ( _lhsOannotatedTree,_lhsOcidenv,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOlistType,_lhsOoriginalTree)))
+-- Statement ---------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         inProducedCat        : Catalog
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         catUpdates           : [CatalogUpdate]
+         fixedUpIdentifiersTree : SELF 
+         libUpdates           : [LocalBindingsUpdate]
+         originalTree         : SELF 
+   alternatives:
+      alternative AlterSequence:
+         child ann            : {Annotation}
+         child name           : {String}
+         child ownedBy        : SQIdentifier 
+         visit 0:
+            local libUpdates  : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative AlterTable:
+         child ann            : {Annotation}
+         child name           : {String}
+         child actions        : AlterTableActionList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Assignment:
+         child ann            : {Annotation}
+         child target         : ScalarExpr 
+         child value          : ScalarExpr 
+         visit 0:
+            local libUpdates  : _
+            local tpe         : {Either [TypeError] Type}
+            local backTree    : _
+            local catUpdates  : {[CatalogUpdate]}
+            local statementType : {Maybe StatementType}
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Block:
+         child ann            : {Annotation}
+         child lb             : {Maybe String}
+         child vars           : VarDefList 
+         child sts            : StatementList 
+         visit 0:
+            local libUpdates  : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative CaseStatement:
+         child ann            : {Annotation}
+         child cases          : ScalarExprListStatementListPairList 
+         child els            : StatementList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative CaseStatementSimple:
+         child ann            : {Annotation}
+         child val            : ScalarExpr 
+         child cases          : ScalarExprListStatementListPairList 
+         child els            : StatementList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative ContinueStatement:
+         child ann            : {Annotation}
+         child lb             : {Maybe String}
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Copy:
+         child ann            : {Annotation}
+         child table          : {String}
+         child targetCols     : {[String]}
+         child source         : {CopySource}
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative CopyData:
+         child ann            : {Annotation}
+         child insData        : {String}
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative CreateDomain:
+         child ann            : {Annotation}
+         child name           : {String}
+         child typ            : TypeName 
+         child checkName      : {String}
+         child check          : MaybeBoolExpr 
+         visit 0:
+            local libUpdates  : _
+            local tpe         : {Either [TypeError] Type}
+            local backTree    : _
+            local statementType : {Maybe StatementType}
+            local catUpdates  : {[CatalogUpdate]}
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative CreateFunction:
+         child ann            : {Annotation}
+         child name           : {String}
+         child params         : ParamDefList 
+         child rettype        : TypeName 
+         child rep            : {Replace}
+         child lang           : {Language}
+         child body           : FnBody 
+         child vol            : {Volatility}
+         visit 0:
+            local libUpdates  : _
+            local tpe         : {Either [TypeError] Type}
+            local catUpdates  : {[CatalogUpdate]}
+            local backTree    : _
+            local statementType : {Maybe StatementType}
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative CreateLanguage:
+         child ann            : {Annotation}
+         child name           : {String}
+         visit 0:
+            local libUpdates  : _
+            local tpe         : {Either [TypeError] Type}
+            local backTree    : _
+            local statementType : {Maybe StatementType}
+            local catUpdates  : {[CatalogUpdate]}
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative CreateSequence:
+         child ann            : {Annotation}
+         child name           : {String}
+         child incr           : {Integer}
+         child min            : {Integer}
+         child max            : {Integer}
+         child start          : {Integer}
+         child cache          : {Integer}
+         visit 0:
+            local libUpdates  : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative CreateTable:
+         child ann            : {Annotation}
+         child name           : {String}
+         child atts           : AttributeDefList 
+         child cons           : ConstraintList 
+         visit 0:
+            local libUpdates  : _
+            local tpe         : {Either [TypeError] Type}
+            local catUpdates  : {[CatalogUpdate]}
+            local attrs       : {[(String,Type)]}
+            local statementType : {Maybe StatementType}
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative CreateTableAs:
+         child ann            : {Annotation}
+         child name           : {String}
+         child expr           : QueryExpr 
+         visit 0:
+            local libUpdates  : _
+            local tpe         : {Either [TypeError] Type}
+            local catUpdates  : {[CatalogUpdate]}
+            local attrs       : {Either [TypeError] [(String,Type)]}
+            local backTree    : _
+            local statementType : {Maybe StatementType}
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative CreateTrigger:
+         child ann            : {Annotation}
+         child name           : {String}
+         child wh             : {TriggerWhen}
+         child events         : {[TriggerEvent]}
+         child tbl            : {String}
+         child firing         : {TriggerFire}
+         child fnName         : {String}
+         child fnArgs         : ScalarExprList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative CreateType:
+         child ann            : {Annotation}
+         child name           : {String}
+         child atts           : TypeAttributeDefList 
+         visit 0:
+            local libUpdates  : _
+            local tpe         : {Either [TypeError] Type}
+            local attrs       : _
+            local backTree    : _
+            local statementType : {Maybe StatementType}
+            local catUpdates  : {[CatalogUpdate]}
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative CreateView:
+         child ann            : {Annotation}
+         child name           : {String}
+         child colNames       : {Maybe [String]}
+         child expr           : QueryExpr 
+         visit 0:
+            local libUpdates  : _
+            local tpe         : {Either [TypeError] Type}
+            local backTree    : _
+            local catUpdates  : {[CatalogUpdate]}
+            local statementType : {Maybe StatementType}
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Delete:
+         child ann            : {Annotation}
+         child table          : SQIdentifier 
+         child using          : TableRefList 
+         child whr            : MaybeBoolExpr 
+         child returning      : MaybeSelectList 
+         visit 0:
+            local libUpdates  : _
+            local tpe         : {Either [TypeError] Type}
+            local statementType : {Maybe StatementType}
+            local backTree    : _
+            local catUpdates  : {[CatalogUpdate]}
+            local lib         : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative DropFunction:
+         child ann            : {Annotation}
+         child ifE            : {IfExists}
+         child sigs           : StringTypeNameListPairList 
+         child cascade        : {Cascade}
+         visit 0:
+            local libUpdates  : _
+            local tpe         : {Either [TypeError] Type}
+            local backTree    : _
+            local catUpdates  : {[CatalogUpdate]}
+            local statementType : {Maybe StatementType}
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative DropSomething:
+         child ann            : {Annotation}
+         child dropType       : {DropType}
+         child ifE            : {IfExists}
+         child names          : {[String]}
+         child cascade        : {Cascade}
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Execute:
+         child ann            : {Annotation}
+         child expr           : ScalarExpr 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative ExitStatement:
+         child ann            : {Annotation}
+         child lb             : {Maybe String}
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative ForIntegerStatement:
+         child ann            : {Annotation}
+         child lb             : {Maybe String}
+         child var            : ScalarExpr 
+         child from           : ScalarExpr 
+         child to             : ScalarExpr 
+         child sts            : StatementList 
+         visit 0:
+            local libUpdates  : _
+            local tpe         : {Either [TypeError] Type}
+            local implicitVar : _
+            local backTree    : _
+            local catUpdates  : {[CatalogUpdate]}
+            local statementType : {Maybe StatementType}
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative ForQueryStatement:
+         child ann            : {Annotation}
+         child lb             : {Maybe String}
+         child var            : ScalarExpr 
+         child sel            : QueryExpr 
+         child sts            : StatementList 
+         visit 0:
+            local libUpdates  : _
+            local tpe         : {Either [TypeError] Type}
+            local backTree    : _
+            local catUpdates  : {[CatalogUpdate]}
+            local statementType : {Maybe StatementType}
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative If:
+         child ann            : {Annotation}
+         child cases          : ScalarExprStatementListPairList 
+         child els            : StatementList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Insert:
+         child ann            : {Annotation}
+         child table          : SQIdentifier 
+         child targetCols     : {[String]}
+         child insData        : QueryExpr 
+         child returning      : MaybeSelectList 
+         visit 0:
+            local libUpdates  : _
+            local tpe         : {Either [TypeError] Type}
+            local statementType : {Maybe StatementType}
+            local columnTypes : {Either [TypeError] [(String,Type)]}
+            local backTree    : _
+            local catUpdates  : {[CatalogUpdate]}
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Into:
+         child ann            : {Annotation}
+         child strict         : {Bool}
+         child into           : ScalarExprList 
+         child stmt           : Statement 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative LoopStatement:
+         child ann            : {Annotation}
+         child lb             : {Maybe String}
+         child sts            : StatementList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Notify:
+         child ann            : {Annotation}
+         child name           : {String}
+         visit 0:
+            local libUpdates  : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative NullStatement:
+         child ann            : {Annotation}
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Perform:
+         child ann            : {Annotation}
+         child expr           : ScalarExpr 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative QueryStatement:
+         child ann            : {Annotation}
+         child ex             : QueryExpr 
+         visit 0:
+            local tpe         : {Either [TypeError] Type}
+            local statementType : {Maybe StatementType}
+            local backTree    : _
+            local catUpdates  : {[CatalogUpdate]}
+            local libUpdates  : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Raise:
+         child ann            : {Annotation}
+         child level          : {RaiseType}
+         child message        : {String}
+         child args           : ScalarExprList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Return:
+         child ann            : {Annotation}
+         child value          : MaybeScalarExpr 
+         visit 0:
+            local libUpdates  : _
+            local tpe         : {Either [TypeError] Type}
+            local backTree    : _
+            local catUpdates  : {[CatalogUpdate]}
+            local statementType : {Maybe StatementType}
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative ReturnNext:
+         child ann            : {Annotation}
+         child expr           : ScalarExpr 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative ReturnQuery:
+         child ann            : {Annotation}
+         child sel            : QueryExpr 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Set:
+         child ann            : {Annotation}
+         child name           : {String}
+         child values         : {[SetValue]}
+         visit 0:
+            local libUpdates  : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Truncate:
+         child ann            : {Annotation}
+         child tables         : {[String]}
+         child restartIdentity : {RestartIdentity}
+         child cascade        : {Cascade}
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Update:
+         child ann            : {Annotation}
+         child table          : SQIdentifier 
+         child assigns        : ScalarExprList 
+         child fromList       : TableRefList 
+         child whr            : MaybeBoolExpr 
+         child returning      : MaybeSelectList 
+         visit 0:
+            local libUpdates  : _
+            local tpe         : {Either [TypeError] Type}
+            local statementType : {Maybe StatementType}
+            local backTree    : _
+            local catUpdates  : {[CatalogUpdate]}
+            local lib         : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative WhileStatement:
+         child ann            : {Annotation}
+         child lb             : {Maybe String}
+         child expr           : ScalarExpr 
+         child sts            : StatementList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+data Statement  = AlterSequence (Annotation) (String) (SQIdentifier ) 
+                | AlterTable (Annotation) (String) (AlterTableActionList ) 
+                | Assignment (Annotation) (ScalarExpr ) (ScalarExpr ) 
+                | Block (Annotation) ((Maybe String)) (VarDefList ) (StatementList ) 
+                | CaseStatement (Annotation) (ScalarExprListStatementListPairList ) (StatementList ) 
+                | CaseStatementSimple (Annotation) (ScalarExpr ) (ScalarExprListStatementListPairList ) (StatementList ) 
+                | ContinueStatement (Annotation) ((Maybe String)) 
+                | Copy (Annotation) (String) (([String])) (CopySource) 
+                | CopyData (Annotation) (String) 
+                | CreateDomain (Annotation) (String) (TypeName ) (String) (MaybeBoolExpr ) 
+                | CreateFunction (Annotation) (String) (ParamDefList ) (TypeName ) (Replace) (Language) (FnBody ) (Volatility) 
+                | CreateLanguage (Annotation) (String) 
+                | CreateSequence (Annotation) (String) (Integer) (Integer) (Integer) (Integer) (Integer) 
+                | CreateTable (Annotation) (String) (AttributeDefList ) (ConstraintList ) 
+                | CreateTableAs (Annotation) (String) (QueryExpr ) 
+                | CreateTrigger (Annotation) (String) (TriggerWhen) (([TriggerEvent])) (String) (TriggerFire) (String) (ScalarExprList ) 
+                | CreateType (Annotation) (String) (TypeAttributeDefList ) 
+                | CreateView (Annotation) (String) ((Maybe [String])) (QueryExpr ) 
+                | Delete (Annotation) (SQIdentifier ) (TableRefList ) (MaybeBoolExpr ) (MaybeSelectList ) 
+                | DropFunction (Annotation) (IfExists) (StringTypeNameListPairList ) (Cascade) 
+                | DropSomething (Annotation) (DropType) (IfExists) (([String])) (Cascade) 
+                | Execute (Annotation) (ScalarExpr ) 
+                | ExitStatement (Annotation) ((Maybe String)) 
+                | ForIntegerStatement (Annotation) ((Maybe String)) (ScalarExpr ) (ScalarExpr ) (ScalarExpr ) (StatementList ) 
+                | ForQueryStatement (Annotation) ((Maybe String)) (ScalarExpr ) (QueryExpr ) (StatementList ) 
+                | If (Annotation) (ScalarExprStatementListPairList ) (StatementList ) 
+                | Insert (Annotation) (SQIdentifier ) (([String])) (QueryExpr ) (MaybeSelectList ) 
+                | Into (Annotation) (Bool) (ScalarExprList ) (Statement ) 
+                | LoopStatement (Annotation) ((Maybe String)) (StatementList ) 
+                | Notify (Annotation) (String) 
+                | NullStatement (Annotation) 
+                | Perform (Annotation) (ScalarExpr ) 
+                | QueryStatement (Annotation) (QueryExpr ) 
+                | Raise (Annotation) (RaiseType) (String) (ScalarExprList ) 
+                | Return (Annotation) (MaybeScalarExpr ) 
+                | ReturnNext (Annotation) (ScalarExpr ) 
+                | ReturnQuery (Annotation) (QueryExpr ) 
+                | Set (Annotation) (String) (([SetValue])) 
+                | Truncate (Annotation) (([String])) (RestartIdentity) (Cascade) 
+                | Update (Annotation) (SQIdentifier ) (ScalarExprList ) (TableRefList ) (MaybeBoolExpr ) (MaybeSelectList ) 
+                | WhileStatement (Annotation) ((Maybe String)) (ScalarExpr ) (StatementList ) 
+                deriving ( Data,Eq,Show,Typeable)
+-- cata
+sem_Statement :: Statement  ->
+                 T_Statement 
+sem_Statement (AlterSequence _ann _name _ownedBy )  =
+    (sem_Statement_AlterSequence _ann _name (sem_SQIdentifier _ownedBy ) )
+sem_Statement (AlterTable _ann _name _actions )  =
+    (sem_Statement_AlterTable _ann _name (sem_AlterTableActionList _actions ) )
+sem_Statement (Assignment _ann _target _value )  =
+    (sem_Statement_Assignment _ann (sem_ScalarExpr _target ) (sem_ScalarExpr _value ) )
+sem_Statement (Block _ann _lb _vars _sts )  =
+    (sem_Statement_Block _ann _lb (sem_VarDefList _vars ) (sem_StatementList _sts ) )
+sem_Statement (CaseStatement _ann _cases _els )  =
+    (sem_Statement_CaseStatement _ann (sem_ScalarExprListStatementListPairList _cases ) (sem_StatementList _els ) )
+sem_Statement (CaseStatementSimple _ann _val _cases _els )  =
+    (sem_Statement_CaseStatementSimple _ann (sem_ScalarExpr _val ) (sem_ScalarExprListStatementListPairList _cases ) (sem_StatementList _els ) )
+sem_Statement (ContinueStatement _ann _lb )  =
+    (sem_Statement_ContinueStatement _ann _lb )
+sem_Statement (Copy _ann _table _targetCols _source )  =
+    (sem_Statement_Copy _ann _table _targetCols _source )
+sem_Statement (CopyData _ann _insData )  =
+    (sem_Statement_CopyData _ann _insData )
+sem_Statement (CreateDomain _ann _name _typ _checkName _check )  =
+    (sem_Statement_CreateDomain _ann _name (sem_TypeName _typ ) _checkName (sem_MaybeBoolExpr _check ) )
+sem_Statement (CreateFunction _ann _name _params _rettype _rep _lang _body _vol )  =
+    (sem_Statement_CreateFunction _ann _name (sem_ParamDefList _params ) (sem_TypeName _rettype ) _rep _lang (sem_FnBody _body ) _vol )
+sem_Statement (CreateLanguage _ann _name )  =
+    (sem_Statement_CreateLanguage _ann _name )
+sem_Statement (CreateSequence _ann _name _incr _min _max _start _cache )  =
+    (sem_Statement_CreateSequence _ann _name _incr _min _max _start _cache )
+sem_Statement (CreateTable _ann _name _atts _cons )  =
+    (sem_Statement_CreateTable _ann _name (sem_AttributeDefList _atts ) (sem_ConstraintList _cons ) )
+sem_Statement (CreateTableAs _ann _name _expr )  =
+    (sem_Statement_CreateTableAs _ann _name (sem_QueryExpr _expr ) )
+sem_Statement (CreateTrigger _ann _name _wh _events _tbl _firing _fnName _fnArgs )  =
+    (sem_Statement_CreateTrigger _ann _name _wh _events _tbl _firing _fnName (sem_ScalarExprList _fnArgs ) )
+sem_Statement (CreateType _ann _name _atts )  =
+    (sem_Statement_CreateType _ann _name (sem_TypeAttributeDefList _atts ) )
+sem_Statement (CreateView _ann _name _colNames _expr )  =
+    (sem_Statement_CreateView _ann _name _colNames (sem_QueryExpr _expr ) )
+sem_Statement (Delete _ann _table _using _whr _returning )  =
+    (sem_Statement_Delete _ann (sem_SQIdentifier _table ) (sem_TableRefList _using ) (sem_MaybeBoolExpr _whr ) (sem_MaybeSelectList _returning ) )
+sem_Statement (DropFunction _ann _ifE _sigs _cascade )  =
+    (sem_Statement_DropFunction _ann _ifE (sem_StringTypeNameListPairList _sigs ) _cascade )
+sem_Statement (DropSomething _ann _dropType _ifE _names _cascade )  =
+    (sem_Statement_DropSomething _ann _dropType _ifE _names _cascade )
+sem_Statement (Execute _ann _expr )  =
+    (sem_Statement_Execute _ann (sem_ScalarExpr _expr ) )
+sem_Statement (ExitStatement _ann _lb )  =
+    (sem_Statement_ExitStatement _ann _lb )
+sem_Statement (ForIntegerStatement _ann _lb _var _from _to _sts )  =
+    (sem_Statement_ForIntegerStatement _ann _lb (sem_ScalarExpr _var ) (sem_ScalarExpr _from ) (sem_ScalarExpr _to ) (sem_StatementList _sts ) )
+sem_Statement (ForQueryStatement _ann _lb _var _sel _sts )  =
+    (sem_Statement_ForQueryStatement _ann _lb (sem_ScalarExpr _var ) (sem_QueryExpr _sel ) (sem_StatementList _sts ) )
+sem_Statement (If _ann _cases _els )  =
+    (sem_Statement_If _ann (sem_ScalarExprStatementListPairList _cases ) (sem_StatementList _els ) )
+sem_Statement (Insert _ann _table _targetCols _insData _returning )  =
+    (sem_Statement_Insert _ann (sem_SQIdentifier _table ) _targetCols (sem_QueryExpr _insData ) (sem_MaybeSelectList _returning ) )
+sem_Statement (Into _ann _strict _into _stmt )  =
+    (sem_Statement_Into _ann _strict (sem_ScalarExprList _into ) (sem_Statement _stmt ) )
+sem_Statement (LoopStatement _ann _lb _sts )  =
+    (sem_Statement_LoopStatement _ann _lb (sem_StatementList _sts ) )
+sem_Statement (Notify _ann _name )  =
+    (sem_Statement_Notify _ann _name )
+sem_Statement (NullStatement _ann )  =
+    (sem_Statement_NullStatement _ann )
+sem_Statement (Perform _ann _expr )  =
+    (sem_Statement_Perform _ann (sem_ScalarExpr _expr ) )
+sem_Statement (QueryStatement _ann _ex )  =
+    (sem_Statement_QueryStatement _ann (sem_QueryExpr _ex ) )
+sem_Statement (Raise _ann _level _message _args )  =
+    (sem_Statement_Raise _ann _level _message (sem_ScalarExprList _args ) )
+sem_Statement (Return _ann _value )  =
+    (sem_Statement_Return _ann (sem_MaybeScalarExpr _value ) )
+sem_Statement (ReturnNext _ann _expr )  =
+    (sem_Statement_ReturnNext _ann (sem_ScalarExpr _expr ) )
+sem_Statement (ReturnQuery _ann _sel )  =
+    (sem_Statement_ReturnQuery _ann (sem_QueryExpr _sel ) )
+sem_Statement (Set _ann _name _values )  =
+    (sem_Statement_Set _ann _name _values )
+sem_Statement (Truncate _ann _tables _restartIdentity _cascade )  =
+    (sem_Statement_Truncate _ann _tables _restartIdentity _cascade )
+sem_Statement (Update _ann _table _assigns _fromList _whr _returning )  =
+    (sem_Statement_Update _ann (sem_SQIdentifier _table ) (sem_ScalarExprList _assigns ) (sem_TableRefList _fromList ) (sem_MaybeBoolExpr _whr ) (sem_MaybeSelectList _returning ) )
+sem_Statement (WhileStatement _ann _lb _expr _sts )  =
+    (sem_Statement_WhileStatement _ann _lb (sem_ScalarExpr _expr ) (sem_StatementList _sts ) )
+-- semantic domain
+type T_Statement  = Catalog ->
+                    IDEnv ->
+                    Catalog ->
+                    LocalBindings ->
+                    ( Statement ,([CatalogUpdate]),Statement ,([LocalBindingsUpdate]),Statement )
+data Inh_Statement  = Inh_Statement {cat_Inh_Statement :: Catalog,idenv_Inh_Statement :: IDEnv,inProducedCat_Inh_Statement :: Catalog,lib_Inh_Statement :: LocalBindings}
+data Syn_Statement  = Syn_Statement {annotatedTree_Syn_Statement :: Statement ,catUpdates_Syn_Statement :: ([CatalogUpdate]),fixedUpIdentifiersTree_Syn_Statement :: Statement ,libUpdates_Syn_Statement :: ([LocalBindingsUpdate]),originalTree_Syn_Statement :: Statement }
+wrap_Statement :: T_Statement  ->
+                  Inh_Statement  ->
+                  Syn_Statement 
+wrap_Statement sem (Inh_Statement _lhsIcat _lhsIidenv _lhsIinProducedCat _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIinProducedCat _lhsIlib 
+     in  (Syn_Statement _lhsOannotatedTree _lhsOcatUpdates _lhsOfixedUpIdentifiersTree _lhsOlibUpdates _lhsOoriginalTree ))
+sem_Statement_AlterSequence :: Annotation ->
+                               String ->
+                               T_SQIdentifier  ->
+                               T_Statement 
+sem_Statement_AlterSequence ann_ name_ ownedBy_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _lhsOannotatedTree :: Statement 
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              _ownedByOcat :: Catalog
+              _ownedByOidenv :: IDEnv
+              _ownedByOlib :: LocalBindings
+              _ownedByIannotatedTree :: SQIdentifier 
+              _ownedByIfixedUpIdentifiersTree :: SQIdentifier 
+              _ownedByIoriginalTree :: SQIdentifier 
+              _ownedByItbAnnotatedTree :: SQIdentifier 
+              _ownedByItbUType :: (Maybe ([(String,Type)],[(String,Type)]))
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 94, column 9)
+              _libUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 116, column 9)
+              _lhsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 117, column 9)
+              _lhsOlibUpdates =
+                  []
+              -- self rule
+              _annotatedTree =
+                  AlterSequence ann_ name_ _ownedByIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  AlterSequence ann_ name_ _ownedByIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  AlterSequence ann_ name_ _ownedByIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _ownedByOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _ownedByOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _ownedByOlib =
+                  _lhsIlib
+              ( _ownedByIannotatedTree,_ownedByIfixedUpIdentifiersTree,_ownedByIoriginalTree,_ownedByItbAnnotatedTree,_ownedByItbUType) =
+                  ownedBy_ _ownedByOcat _ownedByOidenv _ownedByOlib 
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_AlterTable :: Annotation ->
+                            String ->
+                            T_AlterTableActionList  ->
+                            T_Statement 
+sem_Statement_AlterTable ann_ name_ actions_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _lhsOannotatedTree :: Statement 
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              _actionsOcat :: Catalog
+              _actionsOidenv :: IDEnv
+              _actionsOlib :: LocalBindings
+              _actionsIannotatedTree :: AlterTableActionList 
+              _actionsIfixedUpIdentifiersTree :: AlterTableActionList 
+              _actionsIoriginalTree :: AlterTableActionList 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 116, column 9)
+              _lhsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 117, column 9)
+              _lhsOlibUpdates =
+                  []
+              -- self rule
+              _annotatedTree =
+                  AlterTable ann_ name_ _actionsIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  AlterTable ann_ name_ _actionsIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  AlterTable ann_ name_ _actionsIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _actionsOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _actionsOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _actionsOlib =
+                  _lhsIlib
+              ( _actionsIannotatedTree,_actionsIfixedUpIdentifiersTree,_actionsIoriginalTree) =
+                  actions_ _actionsOcat _actionsOidenv _actionsOlib 
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_Assignment :: Annotation ->
+                            T_ScalarExpr  ->
+                            T_ScalarExpr  ->
+                            T_Statement 
+sem_Statement_Assignment ann_ target_ value_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: Statement 
+              _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _tpe :: (Either [TypeError] Type)
+              _catUpdates :: ([CatalogUpdate])
+              _statementType :: (Maybe StatementType)
+              _valueOexpectedType :: (Maybe Type)
+              _targetOexpectedType :: (Maybe Type)
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              _targetOcat :: Catalog
+              _targetOidenv :: IDEnv
+              _targetOlib :: LocalBindings
+              _valueOcat :: Catalog
+              _valueOidenv :: IDEnv
+              _valueOlib :: LocalBindings
+              _targetIannotatedTree :: ScalarExpr 
+              _targetIfixedUpIdentifiersTree :: ScalarExpr 
+              _targetIoriginalTree :: ScalarExpr 
+              _targetIuType :: (Maybe Type)
+              _valueIannotatedTree :: ScalarExpr 
+              _valueIfixedUpIdentifiersTree :: ScalarExpr 
+              _valueIoriginalTree :: ScalarExpr 
+              _valueIuType :: (Maybe Type)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 82, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                      (\a -> a {stType = _statementType
+                               ,catUpd = _catUpdates    }) $
+                  setTypeAddErrors _tpe     _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 88, column 9)
+              _lhsOcatUpdates =
+                  _catUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 89, column 9)
+              _lhsOlibUpdates =
+                  _libUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 94, column 9)
+              _libUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Plpgsql/Plpgsql.ag"(line 20, column 9)
+              _tpe =
+                  do
+                  fromType <- lmt _valueIuType
+                  toType <- lmt _targetIuType
+                  checkAssignmentValid _lhsIcat fromType toType
+                  return $ Pseudo Void
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Plpgsql/Plpgsql.ag"(line 26, column 9)
+              _backTree =
+                  Assignment ann_ _targetIannotatedTree _valueIannotatedTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Plpgsql/Plpgsql.ag"(line 27, column 9)
+              _catUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Plpgsql/Plpgsql.ag"(line 28, column 9)
+              _statementType =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 109, column 18)
+              _valueOexpectedType =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 115, column 18)
+              _targetOexpectedType =
+                  Nothing
+              -- self rule
+              _annotatedTree =
+                  Assignment ann_ _targetIannotatedTree _valueIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Assignment ann_ _targetIfixedUpIdentifiersTree _valueIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  Assignment ann_ _targetIoriginalTree _valueIoriginalTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _targetOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _targetOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _targetOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _valueOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _valueOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _valueOlib =
+                  _lhsIlib
+              ( _targetIannotatedTree,_targetIfixedUpIdentifiersTree,_targetIoriginalTree,_targetIuType) =
+                  target_ _targetOcat _targetOexpectedType _targetOidenv _targetOlib 
+              ( _valueIannotatedTree,_valueIfixedUpIdentifiersTree,_valueIoriginalTree,_valueIuType) =
+                  value_ _valueOcat _valueOexpectedType _valueOidenv _valueOlib 
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_Block :: Annotation ->
+                       (Maybe String) ->
+                       T_VarDefList  ->
+                       T_StatementList  ->
+                       T_Statement 
+sem_Statement_Block ann_ lb_ vars_ sts_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOcatUpdates :: ([CatalogUpdate])
+              _stsOcatUpdates :: ([CatalogUpdate])
+              _stsOlib :: LocalBindings
+              _lhsOannotatedTree :: Statement 
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _varsOcat :: Catalog
+              _varsOidenv :: IDEnv
+              _varsOlib :: LocalBindings
+              _stsOcat :: Catalog
+              _stsOidenv :: IDEnv
+              _stsOlibUpdates :: ([LocalBindingsUpdate])
+              _varsIannotatedTree :: VarDefList 
+              _varsIdefs :: ([(String,Maybe Type)])
+              _varsIfixedUpIdentifiersTree :: VarDefList 
+              _varsIoriginalTree :: VarDefList 
+              _stsIannotatedTree :: StatementList 
+              _stsIfixedUpIdentifiersTree :: StatementList 
+              _stsIoriginalTree :: StatementList 
+              _stsIproducedCat :: Catalog
+              _stsIproducedLib :: LocalBindings
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 94, column 9)
+              _libUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 100, column 13)
+              _lhsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 101, column 13)
+              _stsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Plpgsql/Block.ag"(line 22, column 9)
+              _stsOlib =
+                  fromRight _lhsIlib $
+                  lbUpdate _lhsIcat
+                           (LBIds "declarations" lb_ $ mapMaybe lv _varsIdefs)
+                           _lhsIlib
+                  where
+                    lv (_,Nothing) = Nothing
+                    lv (s,Just t) = Just (s,t)
+              -- self rule
+              _annotatedTree =
+                  Block ann_ lb_ _varsIannotatedTree _stsIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Block ann_ lb_ _varsIfixedUpIdentifiersTree _stsIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  Block ann_ lb_ _varsIoriginalTree _stsIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (from local)
+              _lhsOlibUpdates =
+                  _libUpdates
+              -- copy rule (down)
+              _varsOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _varsOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _varsOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _stsOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _stsOidenv =
+                  _lhsIidenv
+              -- copy rule (from local)
+              _stsOlibUpdates =
+                  _libUpdates
+              ( _varsIannotatedTree,_varsIdefs,_varsIfixedUpIdentifiersTree,_varsIoriginalTree) =
+                  vars_ _varsOcat _varsOidenv _varsOlib 
+              ( _stsIannotatedTree,_stsIfixedUpIdentifiersTree,_stsIoriginalTree,_stsIproducedCat,_stsIproducedLib) =
+                  sts_ _stsOcat _stsOcatUpdates _stsOidenv _stsOlib _stsOlibUpdates 
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_CaseStatement :: Annotation ->
+                               T_ScalarExprListStatementListPairList  ->
+                               T_StatementList  ->
+                               T_Statement 
+sem_Statement_CaseStatement ann_ cases_ els_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _elsOcatUpdates :: ([CatalogUpdate])
+              _elsOlibUpdates :: ([LocalBindingsUpdate])
+              _lhsOannotatedTree :: Statement 
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              _casesOcat :: Catalog
+              _casesOidenv :: IDEnv
+              _casesOlib :: LocalBindings
+              _elsOcat :: Catalog
+              _elsOidenv :: IDEnv
+              _elsOlib :: LocalBindings
+              _casesIannotatedTree :: ScalarExprListStatementListPairList 
+              _casesIfixedUpIdentifiersTree :: ScalarExprListStatementListPairList 
+              _casesIoriginalTree :: ScalarExprListStatementListPairList 
+              _elsIannotatedTree :: StatementList 
+              _elsIfixedUpIdentifiersTree :: StatementList 
+              _elsIoriginalTree :: StatementList 
+              _elsIproducedCat :: Catalog
+              _elsIproducedLib :: LocalBindings
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 116, column 9)
+              _lhsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 117, column 9)
+              _lhsOlibUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 134, column 9)
+              _elsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 135, column 9)
+              _elsOlibUpdates =
+                  []
+              -- self rule
+              _annotatedTree =
+                  CaseStatement ann_ _casesIannotatedTree _elsIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  CaseStatement ann_ _casesIfixedUpIdentifiersTree _elsIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  CaseStatement ann_ _casesIoriginalTree _elsIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _casesOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _casesOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _casesOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _elsOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _elsOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _elsOlib =
+                  _lhsIlib
+              ( _casesIannotatedTree,_casesIfixedUpIdentifiersTree,_casesIoriginalTree) =
+                  cases_ _casesOcat _casesOidenv _casesOlib 
+              ( _elsIannotatedTree,_elsIfixedUpIdentifiersTree,_elsIoriginalTree,_elsIproducedCat,_elsIproducedLib) =
+                  els_ _elsOcat _elsOcatUpdates _elsOidenv _elsOlib _elsOlibUpdates 
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_CaseStatementSimple :: Annotation ->
+                                     T_ScalarExpr  ->
+                                     T_ScalarExprListStatementListPairList  ->
+                                     T_StatementList  ->
+                                     T_Statement 
+sem_Statement_CaseStatementSimple ann_ val_ cases_ els_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _elsOcatUpdates :: ([CatalogUpdate])
+              _elsOlibUpdates :: ([LocalBindingsUpdate])
+              _valOexpectedType :: (Maybe Type)
+              _lhsOannotatedTree :: Statement 
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              _valOcat :: Catalog
+              _valOidenv :: IDEnv
+              _valOlib :: LocalBindings
+              _casesOcat :: Catalog
+              _casesOidenv :: IDEnv
+              _casesOlib :: LocalBindings
+              _elsOcat :: Catalog
+              _elsOidenv :: IDEnv
+              _elsOlib :: LocalBindings
+              _valIannotatedTree :: ScalarExpr 
+              _valIfixedUpIdentifiersTree :: ScalarExpr 
+              _valIoriginalTree :: ScalarExpr 
+              _valIuType :: (Maybe Type)
+              _casesIannotatedTree :: ScalarExprListStatementListPairList 
+              _casesIfixedUpIdentifiersTree :: ScalarExprListStatementListPairList 
+              _casesIoriginalTree :: ScalarExprListStatementListPairList 
+              _elsIannotatedTree :: StatementList 
+              _elsIfixedUpIdentifiersTree :: StatementList 
+              _elsIoriginalTree :: StatementList 
+              _elsIproducedCat :: Catalog
+              _elsIproducedLib :: LocalBindings
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 116, column 9)
+              _lhsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 117, column 9)
+              _lhsOlibUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 134, column 9)
+              _elsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 135, column 9)
+              _elsOlibUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 110, column 27)
+              _valOexpectedType =
+                  Nothing
+              -- self rule
+              _annotatedTree =
+                  CaseStatementSimple ann_ _valIannotatedTree _casesIannotatedTree _elsIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  CaseStatementSimple ann_ _valIfixedUpIdentifiersTree _casesIfixedUpIdentifiersTree _elsIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  CaseStatementSimple ann_ _valIoriginalTree _casesIoriginalTree _elsIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _valOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _valOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _valOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _casesOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _casesOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _casesOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _elsOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _elsOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _elsOlib =
+                  _lhsIlib
+              ( _valIannotatedTree,_valIfixedUpIdentifiersTree,_valIoriginalTree,_valIuType) =
+                  val_ _valOcat _valOexpectedType _valOidenv _valOlib 
+              ( _casesIannotatedTree,_casesIfixedUpIdentifiersTree,_casesIoriginalTree) =
+                  cases_ _casesOcat _casesOidenv _casesOlib 
+              ( _elsIannotatedTree,_elsIfixedUpIdentifiersTree,_elsIoriginalTree,_elsIproducedCat,_elsIproducedLib) =
+                  els_ _elsOcat _elsOcatUpdates _elsOidenv _elsOlib _elsOlibUpdates 
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_ContinueStatement :: Annotation ->
+                                   (Maybe String) ->
+                                   T_Statement 
+sem_Statement_ContinueStatement ann_ lb_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _lhsOannotatedTree :: Statement 
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 116, column 9)
+              _lhsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 117, column 9)
+              _lhsOlibUpdates =
+                  []
+              -- self rule
+              _annotatedTree =
+                  ContinueStatement ann_ lb_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  ContinueStatement ann_ lb_
+              -- self rule
+              _originalTree =
+                  ContinueStatement ann_ lb_
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_Copy :: Annotation ->
+                      String ->
+                      ([String]) ->
+                      CopySource ->
+                      T_Statement 
+sem_Statement_Copy ann_ table_ targetCols_ source_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _lhsOannotatedTree :: Statement 
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 116, column 9)
+              _lhsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 117, column 9)
+              _lhsOlibUpdates =
+                  []
+              -- self rule
+              _annotatedTree =
+                  Copy ann_ table_ targetCols_ source_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Copy ann_ table_ targetCols_ source_
+              -- self rule
+              _originalTree =
+                  Copy ann_ table_ targetCols_ source_
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_CopyData :: Annotation ->
+                          String ->
+                          T_Statement 
+sem_Statement_CopyData ann_ insData_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _lhsOannotatedTree :: Statement 
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 116, column 9)
+              _lhsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 117, column 9)
+              _lhsOlibUpdates =
+                  []
+              -- self rule
+              _annotatedTree =
+                  CopyData ann_ insData_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  CopyData ann_ insData_
+              -- self rule
+              _originalTree =
+                  CopyData ann_ insData_
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_CreateDomain :: Annotation ->
+                              String ->
+                              T_TypeName  ->
+                              String ->
+                              T_MaybeBoolExpr  ->
+                              T_Statement 
+sem_Statement_CreateDomain ann_ name_ typ_ checkName_ check_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: Statement 
+              _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _tpe :: (Either [TypeError] Type)
+              _statementType :: (Maybe StatementType)
+              _catUpdates :: ([CatalogUpdate])
+              _checkOlib :: LocalBindings
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              _typOcat :: Catalog
+              _typOidenv :: IDEnv
+              _typOlib :: LocalBindings
+              _checkOcat :: Catalog
+              _checkOidenv :: IDEnv
+              _typIannotatedTree :: TypeName 
+              _typIfixedUpIdentifiersTree :: TypeName 
+              _typInamedType :: (Maybe Type)
+              _typIoriginalTree :: TypeName 
+              _checkIannotatedTree :: MaybeBoolExpr 
+              _checkIfixedUpIdentifiersTree :: MaybeBoolExpr 
+              _checkIoriginalTree :: MaybeBoolExpr 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 82, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                      (\a -> a {stType = _statementType
+                               ,catUpd = _catUpdates    }) $
+                  setTypeAddErrors _tpe     _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 88, column 9)
+              _lhsOcatUpdates =
+                  _catUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 89, column 9)
+              _lhsOlibUpdates =
+                  _libUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 94, column 9)
+              _libUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/MiscCreates.ag"(line 65, column 9)
+              _tpe =
+                  Right $ Pseudo Void
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/MiscCreates.ag"(line 66, column 9)
+              _backTree =
+                  CreateDomain ann_ name_ _typIannotatedTree checkName_ _checkIannotatedTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/MiscCreates.ag"(line 67, column 9)
+              _statementType =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/MiscCreates.ag"(line 68, column 9)
+              _catUpdates =
+                  maybe [] (\t -> [CatCreateDomain (DomainType name_) t]) _typInamedType
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/MiscCreates.ag"(line 70, column 9)
+              _checkOlib =
+                  either (const _lhsIlib) id $ do
+                  nt <- lmt _typInamedType
+                  lbUpdate _lhsIcat
+                    (LBIds "domain check value" Nothing [("value", nt)])
+                    _lhsIlib
+              -- self rule
+              _annotatedTree =
+                  CreateDomain ann_ name_ _typIannotatedTree checkName_ _checkIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  CreateDomain ann_ name_ _typIfixedUpIdentifiersTree checkName_ _checkIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  CreateDomain ann_ name_ _typIoriginalTree checkName_ _checkIoriginalTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _typOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _typOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _typOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _checkOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _checkOidenv =
+                  _lhsIidenv
+              ( _typIannotatedTree,_typIfixedUpIdentifiersTree,_typInamedType,_typIoriginalTree) =
+                  typ_ _typOcat _typOidenv _typOlib 
+              ( _checkIannotatedTree,_checkIfixedUpIdentifiersTree,_checkIoriginalTree) =
+                  check_ _checkOcat _checkOidenv _checkOlib 
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_CreateFunction :: Annotation ->
+                                String ->
+                                T_ParamDefList  ->
+                                T_TypeName  ->
+                                Replace ->
+                                Language ->
+                                T_FnBody  ->
+                                Volatility ->
+                                T_Statement 
+sem_Statement_CreateFunction ann_ name_ params_ rettype_ rep_ lang_ body_ vol_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: Statement 
+              _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _bodyOlib :: LocalBindings
+              _paramsOpos :: Int
+              _tpe :: (Either [TypeError] Type)
+              _catUpdates :: ([CatalogUpdate])
+              _statementType :: (Maybe StatementType)
+              _bodyOcat :: Catalog
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              _paramsOcat :: Catalog
+              _paramsOidenv :: IDEnv
+              _paramsOlib :: LocalBindings
+              _rettypeOcat :: Catalog
+              _rettypeOidenv :: IDEnv
+              _rettypeOlib :: LocalBindings
+              _bodyOidenv :: IDEnv
+              _paramsIannotatedTree :: ParamDefList 
+              _paramsIfixedUpIdentifiersTree :: ParamDefList 
+              _paramsIoriginalTree :: ParamDefList 
+              _paramsIparams :: ([(ParamName, Maybe Type)])
+              _rettypeIannotatedTree :: TypeName 
+              _rettypeIfixedUpIdentifiersTree :: TypeName 
+              _rettypeInamedType :: (Maybe Type)
+              _rettypeIoriginalTree :: TypeName 
+              _bodyIannotatedTree :: FnBody 
+              _bodyIfixedUpIdentifiersTree :: FnBody 
+              _bodyIoriginalTree :: FnBody 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 82, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                      (\a -> a {stType = _statementType
+                               ,catUpd = _catUpdates    }) $
+                  setTypeAddErrors _tpe     _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 88, column 9)
+              _lhsOcatUpdates =
+                  _catUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 89, column 9)
+              _lhsOlibUpdates =
+                  _libUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 94, column 9)
+              _libUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/CreateFunction.ag"(line 63, column 9)
+              _bodyOlib =
+                  either (const _lhsIlib) id $ do
+                  _ <- lmt _rettypeInamedType
+                  lbUpdate _lhsIcat (LBIds (name_ ++ " parameters") (Just name_) paramsNoPos) _lhsIlib
+                  >>= lbUpdate _lhsIcat (LBIds (name_ ++ " parameters") Nothing paramsPosOnly)
+                  where
+                    paramsPosOnly :: [(String,Type)]
+                    paramsPosOnly = mapMaybe prm _paramsIparams
+                    prm :: (ParamName,Maybe Type) -> Maybe (String,Type)
+                    prm (NamedParam p _,Just t) = Just ("$" ++ show p, t)
+                    prm (UnnamedParam p,Just t) = Just ("$" ++ show p, t)
+                    prm _ = Nothing
+                    paramsNoPos :: [(String,Type)]
+                    paramsNoPos = mapMaybe pnp _paramsIparams
+                    pnp :: (ParamName,Maybe Type) -> Maybe (String,Type)
+                    pnp (NamedParam _ n,Just t) = Just (n,t)
+                    pnp _ = Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/CreateFunction.ag"(line 79, column 9)
+              _paramsOpos =
+                  1
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/CreateFunction.ag"(line 88, column 9)
+              _tpe =
+                  Right $ Pseudo Void
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/CreateFunction.ag"(line 89, column 9)
+              _catUpdates =
+                  either (const []) id $ do
+                  let ps = mapMaybe lpt _paramsIparams
+                  rt <- lmt _rettypeInamedType
+                  return [CatCreateFunction FunName
+                                            (map toLower name_)
+                                            ps
+                                            rt
+                                            False]
+                  where
+                    lpt (_,Just t) = Just t
+                    lpt _ = Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/CreateFunction.ag"(line 101, column 9)
+              _backTree =
+                  CreateFunction ann_
+                                 name_
+                                 _paramsIannotatedTree
+                                 _rettypeIannotatedTree
+                                 rep_
+                                 lang_
+                                 _bodyIannotatedTree
+                                 vol_
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/CreateFunction.ag"(line 109, column 9)
+              _statementType =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/CreateFunction.ag"(line 110, column 9)
+              _bodyOcat =
+                  _lhsIinProducedCat
+              -- self rule
+              _annotatedTree =
+                  CreateFunction ann_ name_ _paramsIannotatedTree _rettypeIannotatedTree rep_ lang_ _bodyIannotatedTree vol_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  CreateFunction ann_ name_ _paramsIfixedUpIdentifiersTree _rettypeIfixedUpIdentifiersTree rep_ lang_ _bodyIfixedUpIdentifiersTree vol_
+              -- self rule
+              _originalTree =
+                  CreateFunction ann_ name_ _paramsIoriginalTree _rettypeIoriginalTree rep_ lang_ _bodyIoriginalTree vol_
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _paramsOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _paramsOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _paramsOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _rettypeOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _rettypeOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _rettypeOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _bodyOidenv =
+                  _lhsIidenv
+              ( _paramsIannotatedTree,_paramsIfixedUpIdentifiersTree,_paramsIoriginalTree,_paramsIparams) =
+                  params_ _paramsOcat _paramsOidenv _paramsOlib _paramsOpos 
+              ( _rettypeIannotatedTree,_rettypeIfixedUpIdentifiersTree,_rettypeInamedType,_rettypeIoriginalTree) =
+                  rettype_ _rettypeOcat _rettypeOidenv _rettypeOlib 
+              ( _bodyIannotatedTree,_bodyIfixedUpIdentifiersTree,_bodyIoriginalTree) =
+                  body_ _bodyOcat _bodyOidenv _bodyOlib 
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_CreateLanguage :: Annotation ->
+                                String ->
+                                T_Statement 
+sem_Statement_CreateLanguage ann_ name_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: Statement 
+              _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _tpe :: (Either [TypeError] Type)
+              _statementType :: (Maybe StatementType)
+              _catUpdates :: ([CatalogUpdate])
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 82, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                      (\a -> a {stType = _statementType
+                               ,catUpd = _catUpdates    }) $
+                  setTypeAddErrors _tpe     _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 88, column 9)
+              _lhsOcatUpdates =
+                  _catUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 89, column 9)
+              _lhsOlibUpdates =
+                  _libUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 94, column 9)
+              _libUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/MiscCreates.ag"(line 78, column 9)
+              _tpe =
+                  Right $ Pseudo Void
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/MiscCreates.ag"(line 79, column 9)
+              _backTree =
+                  CreateLanguage ann_ name_
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/MiscCreates.ag"(line 80, column 9)
+              _statementType =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/MiscCreates.ag"(line 81, column 9)
+              _catUpdates =
+                  [CatCreateFunction FunName "plpgsql_call_handler" [] (Pseudo LanguageHandler) False
+                  ,CatCreateFunction FunName "plpgsql_validator" [ScalarType "oid"] (Pseudo Void) False]
+              -- self rule
+              _annotatedTree =
+                  CreateLanguage ann_ name_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  CreateLanguage ann_ name_
+              -- self rule
+              _originalTree =
+                  CreateLanguage ann_ name_
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_CreateSequence :: Annotation ->
+                                String ->
+                                Integer ->
+                                Integer ->
+                                Integer ->
+                                Integer ->
+                                Integer ->
+                                T_Statement 
+sem_Statement_CreateSequence ann_ name_ incr_ min_ max_ start_ cache_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _lhsOannotatedTree :: Statement 
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 94, column 9)
+              _libUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 116, column 9)
+              _lhsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 117, column 9)
+              _lhsOlibUpdates =
+                  []
+              -- self rule
+              _annotatedTree =
+                  CreateSequence ann_ name_ incr_ min_ max_ start_ cache_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  CreateSequence ann_ name_ incr_ min_ max_ start_ cache_
+              -- self rule
+              _originalTree =
+                  CreateSequence ann_ name_ incr_ min_ max_ start_ cache_
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_CreateTable :: Annotation ->
+                             String ->
+                             T_AttributeDefList  ->
+                             T_ConstraintList  ->
+                             T_Statement 
+sem_Statement_CreateTable ann_ name_ atts_ cons_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: Statement 
+              _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _tpe :: (Either [TypeError] Type)
+              _catUpdates :: ([CatalogUpdate])
+              _attrs :: ([(String,Type)])
+              _statementType :: (Maybe StatementType)
+              _consOlib :: LocalBindings
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              _attsOcat :: Catalog
+              _attsOidenv :: IDEnv
+              _attsOlib :: LocalBindings
+              _consOcat :: Catalog
+              _consOidenv :: IDEnv
+              _attsIannotatedTree :: AttributeDefList 
+              _attsIattrs :: ([(String, Maybe Type)])
+              _attsIfixedUpIdentifiersTree :: AttributeDefList 
+              _attsIoriginalTree :: AttributeDefList 
+              _consIannotatedTree :: ConstraintList 
+              _consIfixedUpIdentifiersTree :: ConstraintList 
+              _consIoriginalTree :: ConstraintList 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 82, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                      (\a -> a {stType = _statementType
+                               ,catUpd = _catUpdates    }) $
+                  setTypeAddErrors _tpe     _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 88, column 9)
+              _lhsOcatUpdates =
+                  _catUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 89, column 9)
+              _lhsOlibUpdates =
+                  _libUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 94, column 9)
+              _libUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/CreateTable.ag"(line 31, column 9)
+              _tpe =
+                  Right $ Pseudo Void
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/CreateTable.ag"(line 32, column 9)
+              _catUpdates =
+                  [CatCreateTable name_ _attrs     defaultSystemColumns]
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/CreateTable.ag"(line 35, column 9)
+              _attrs =
+                  mapMaybe okAt _attsIattrs
+                  where
+                    okAt (s, Just t) = Just (s,t)
+                    okAt (_,Nothing) = Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/CreateTable.ag"(line 40, column 9)
+              _statementType =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/CreateTable.ag"(line 41, column 9)
+              _backTree =
+                  CreateTable ann_
+                              name_
+                              _attsIannotatedTree
+                              _consIannotatedTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/CreateTable.ag"(line 45, column 9)
+              _consOlib =
+                  case lbUpdate _lhsIcat
+                         (LBIds "attributedefs" Nothing _attrs    )
+                         _lhsIlib of
+                     Left x -> error $ "statement-createtable-cons.lib " ++ show x
+                     Right e -> e
+              -- self rule
+              _annotatedTree =
+                  CreateTable ann_ name_ _attsIannotatedTree _consIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  CreateTable ann_ name_ _attsIfixedUpIdentifiersTree _consIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  CreateTable ann_ name_ _attsIoriginalTree _consIoriginalTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _attsOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _attsOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _attsOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _consOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _consOidenv =
+                  _lhsIidenv
+              ( _attsIannotatedTree,_attsIattrs,_attsIfixedUpIdentifiersTree,_attsIoriginalTree) =
+                  atts_ _attsOcat _attsOidenv _attsOlib 
+              ( _consIannotatedTree,_consIfixedUpIdentifiersTree,_consIoriginalTree) =
+                  cons_ _consOcat _consOidenv _consOlib 
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_CreateTableAs :: Annotation ->
+                               String ->
+                               T_QueryExpr  ->
+                               T_Statement 
+sem_Statement_CreateTableAs ann_ name_ expr_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: Statement 
+              _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _exprOcsql :: LocalBindings
+              _tpe :: (Either [TypeError] Type)
+              _catUpdates :: ([CatalogUpdate])
+              _attrs :: (Either [TypeError] [(String,Type)])
+              _statementType :: (Maybe StatementType)
+              _exprOexpectedTypes :: ([Maybe Type])
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              _exprOcat :: Catalog
+              _exprOidenv :: IDEnv
+              _exprOlib :: LocalBindings
+              _exprIannotatedTree :: QueryExpr 
+              _exprIcidenv :: IDEnv
+              _exprIfixedUpIdentifiersTree :: QueryExpr 
+              _exprIlibUpdates :: ([LocalBindingsUpdate])
+              _exprIoriginalTree :: QueryExpr 
+              _exprIuType :: (Maybe [(String,Type)])
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 82, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                      (\a -> a {stType = _statementType
+                               ,catUpd = _catUpdates    }) $
+                  setTypeAddErrors _tpe     _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 88, column 9)
+              _lhsOcatUpdates =
+                  _catUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 89, column 9)
+              _lhsOlibUpdates =
+                  _libUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 94, column 9)
+              _libUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 122, column 21)
+              _exprOcsql =
+                  emptyBindings
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/CreateTable.ag"(line 64, column 9)
+              _tpe =
+                  CompositeType <$> lmt _exprIuType
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/CreateTable.ag"(line 65, column 9)
+              _catUpdates =
+                  either (const []) id $ do
+                  ats <- _attrs
+                  return [CatCreateTable name_ ats defaultSystemColumns]
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/CreateTable.ag"(line 71, column 9)
+              _attrs =
+                  lmt _exprIuType
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/CreateTable.ag"(line 73, column 9)
+              _backTree =
+                  CreateTableAs ann_ name_ _exprIannotatedTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/CreateTable.ag"(line 74, column 9)
+              _statementType =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 175, column 32)
+              _exprOexpectedTypes =
+                  []
+              -- self rule
+              _annotatedTree =
+                  CreateTableAs ann_ name_ _exprIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  CreateTableAs ann_ name_ _exprIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  CreateTableAs ann_ name_ _exprIoriginalTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _exprOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _exprOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _exprOlib =
+                  _lhsIlib
+              ( _exprIannotatedTree,_exprIcidenv,_exprIfixedUpIdentifiersTree,_exprIlibUpdates,_exprIoriginalTree,_exprIuType) =
+                  expr_ _exprOcat _exprOcsql _exprOexpectedTypes _exprOidenv _exprOlib 
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_CreateTrigger :: Annotation ->
+                               String ->
+                               TriggerWhen ->
+                               ([TriggerEvent]) ->
+                               String ->
+                               TriggerFire ->
+                               String ->
+                               T_ScalarExprList  ->
+                               T_Statement 
+sem_Statement_CreateTrigger ann_ name_ wh_ events_ tbl_ firing_ fnName_ fnArgs_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _fnArgsOexpectedTypes :: ([Maybe Type])
+              _lhsOannotatedTree :: Statement 
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              _fnArgsOcat :: Catalog
+              _fnArgsOidenv :: IDEnv
+              _fnArgsOlib :: LocalBindings
+              _fnArgsIannotatedTree :: ScalarExprList 
+              _fnArgsIfixedUpIdentifiersTree :: ScalarExprList 
+              _fnArgsIoriginalTree :: ScalarExprList 
+              _fnArgsIuType :: ([Maybe Type])
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 116, column 9)
+              _lhsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 117, column 9)
+              _lhsOlibUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 153, column 21)
+              _fnArgsOexpectedTypes =
+                  []
+              -- self rule
+              _annotatedTree =
+                  CreateTrigger ann_ name_ wh_ events_ tbl_ firing_ fnName_ _fnArgsIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  CreateTrigger ann_ name_ wh_ events_ tbl_ firing_ fnName_ _fnArgsIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  CreateTrigger ann_ name_ wh_ events_ tbl_ firing_ fnName_ _fnArgsIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _fnArgsOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _fnArgsOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _fnArgsOlib =
+                  _lhsIlib
+              ( _fnArgsIannotatedTree,_fnArgsIfixedUpIdentifiersTree,_fnArgsIoriginalTree,_fnArgsIuType) =
+                  fnArgs_ _fnArgsOcat _fnArgsOexpectedTypes _fnArgsOidenv _fnArgsOlib 
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_CreateType :: Annotation ->
+                            String ->
+                            T_TypeAttributeDefList  ->
+                            T_Statement 
+sem_Statement_CreateType ann_ name_ atts_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: Statement 
+              _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _tpe :: (Either [TypeError] Type)
+              _statementType :: (Maybe StatementType)
+              _catUpdates :: ([CatalogUpdate])
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              _attsOcat :: Catalog
+              _attsOidenv :: IDEnv
+              _attsOlib :: LocalBindings
+              _attsIannotatedTree :: TypeAttributeDefList 
+              _attsIattrs :: ([(String, Maybe Type)])
+              _attsIfixedUpIdentifiersTree :: TypeAttributeDefList 
+              _attsIoriginalTree :: TypeAttributeDefList 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 82, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                      (\a -> a {stType = _statementType
+                               ,catUpd = _catUpdates    }) $
+                  setTypeAddErrors _tpe     _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 88, column 9)
+              _lhsOcatUpdates =
+                  _catUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 89, column 9)
+              _lhsOlibUpdates =
+                  _libUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 94, column 9)
+              _libUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/MiscCreates.ag"(line 48, column 9)
+              _tpe =
+                  Right $ Pseudo Void
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/MiscCreates.ag"(line 49, column 9)
+              _attrs =
+                  mapMaybe okAt _attsIattrs
+                  where
+                    okAt (s, Just t) = Just (s,t)
+                    okAt (_,Nothing) = Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/MiscCreates.ag"(line 53, column 9)
+              _backTree =
+                  CreateType ann_ name_ _attsIannotatedTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/MiscCreates.ag"(line 54, column 9)
+              _statementType =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/MiscCreates.ag"(line 55, column 9)
+              _catUpdates =
+                  [CatCreateComposite name_ _attrs    ]
+              -- self rule
+              _annotatedTree =
+                  CreateType ann_ name_ _attsIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  CreateType ann_ name_ _attsIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  CreateType ann_ name_ _attsIoriginalTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _attsOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _attsOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _attsOlib =
+                  _lhsIlib
+              ( _attsIannotatedTree,_attsIattrs,_attsIfixedUpIdentifiersTree,_attsIoriginalTree) =
+                  atts_ _attsOcat _attsOidenv _attsOlib 
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_CreateView :: Annotation ->
+                            String ->
+                            (Maybe [String]) ->
+                            T_QueryExpr  ->
+                            T_Statement 
+sem_Statement_CreateView ann_ name_ colNames_ expr_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: Statement 
+              _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _exprOcsql :: LocalBindings
+              _tpe :: (Either [TypeError] Type)
+              _catUpdates :: ([CatalogUpdate])
+              _statementType :: (Maybe StatementType)
+              _exprOexpectedTypes :: ([Maybe Type])
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              _exprOcat :: Catalog
+              _exprOidenv :: IDEnv
+              _exprOlib :: LocalBindings
+              _exprIannotatedTree :: QueryExpr 
+              _exprIcidenv :: IDEnv
+              _exprIfixedUpIdentifiersTree :: QueryExpr 
+              _exprIlibUpdates :: ([LocalBindingsUpdate])
+              _exprIoriginalTree :: QueryExpr 
+              _exprIuType :: (Maybe [(String,Type)])
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 82, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                      (\a -> a {stType = _statementType
+                               ,catUpd = _catUpdates    }) $
+                  setTypeAddErrors _tpe     _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 88, column 9)
+              _lhsOcatUpdates =
+                  _catUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 89, column 9)
+              _lhsOlibUpdates =
+                  _libUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 94, column 9)
+              _libUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 123, column 18)
+              _exprOcsql =
+                  emptyBindings
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/MiscCreates.ag"(line 15, column 9)
+              _tpe =
+                  Right $ Pseudo Void
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/MiscCreates.ag"(line 16, column 9)
+              _backTree =
+                  CreateView ann_ name_ colNames_ _exprIannotatedTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/MiscCreates.ag"(line 17, column 9)
+              _catUpdates =
+                  maybe [] (\a -> [CatCreateView name_ a]) _exprIuType
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/MiscCreates.ag"(line 19, column 9)
+              _statementType =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 175, column 32)
+              _exprOexpectedTypes =
+                  []
+              -- self rule
+              _annotatedTree =
+                  CreateView ann_ name_ colNames_ _exprIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  CreateView ann_ name_ colNames_ _exprIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  CreateView ann_ name_ colNames_ _exprIoriginalTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _exprOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _exprOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _exprOlib =
+                  _lhsIlib
+              ( _exprIannotatedTree,_exprIcidenv,_exprIfixedUpIdentifiersTree,_exprIlibUpdates,_exprIoriginalTree,_exprIuType) =
+                  expr_ _exprOcat _exprOcsql _exprOexpectedTypes _exprOidenv _exprOlib 
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_Delete :: Annotation ->
+                        T_SQIdentifier  ->
+                        T_TableRefList  ->
+                        T_MaybeBoolExpr  ->
+                        T_MaybeSelectList  ->
+                        T_Statement 
+sem_Statement_Delete ann_ table_ using_ whr_ returning_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: Statement 
+              _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _tpe :: (Either [TypeError] Type)
+              _statementType :: (Maybe StatementType)
+              _catUpdates :: ([CatalogUpdate])
+              _whrOlib :: LocalBindings
+              _returningOlib :: LocalBindings
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              _tableOcat :: Catalog
+              _tableOidenv :: IDEnv
+              _tableOlib :: LocalBindings
+              _usingOcat :: Catalog
+              _usingOidenv :: IDEnv
+              _usingOlib :: LocalBindings
+              _whrOcat :: Catalog
+              _whrOidenv :: IDEnv
+              _returningOcat :: Catalog
+              _returningOidenv :: IDEnv
+              _tableIannotatedTree :: SQIdentifier 
+              _tableIfixedUpIdentifiersTree :: SQIdentifier 
+              _tableIoriginalTree :: SQIdentifier 
+              _tableItbAnnotatedTree :: SQIdentifier 
+              _tableItbUType :: (Maybe ([(String,Type)],[(String,Type)]))
+              _usingIannotatedTree :: TableRefList 
+              _usingIfixedUpIdentifiersTree :: TableRefList 
+              _usingIlibUpdates :: ([LocalBindingsUpdate])
+              _usingInewLib2 :: LocalBindings
+              _usingIoriginalTree :: TableRefList 
+              _usingItrefIDs :: ([(String,[String])])
+              _whrIannotatedTree :: MaybeBoolExpr 
+              _whrIfixedUpIdentifiersTree :: MaybeBoolExpr 
+              _whrIoriginalTree :: MaybeBoolExpr 
+              _returningIannotatedTree :: MaybeSelectList 
+              _returningIfixedUpIdentifiersTree :: MaybeSelectList 
+              _returningIlistType :: ([(String,Maybe Type)])
+              _returningIoriginalTree :: MaybeSelectList 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 82, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                      (\a -> a {stType = _statementType
+                               ,catUpd = _catUpdates    }) $
+                  setTypeAddErrors _tpe     _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 88, column 9)
+              _lhsOcatUpdates =
+                  _catUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 89, column 9)
+              _lhsOlibUpdates =
+                  _libUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 94, column 9)
+              _libUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Dml/Delete.ag"(line 13, column 9)
+              _tpe =
+                  Right $ Pseudo Void
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Dml/Delete.ag"(line 14, column 9)
+              _statementType =
+                  do
+                  pt <- sequence $ getPlaceholderTypes _whrIannotatedTree
+                  lt <- liftList _returningIlistType
+                  return (pt,lt)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Dml/Delete.ag"(line 19, column 9)
+              _backTree =
+                  Delete ann_ _tableItbAnnotatedTree _usingIannotatedTree _whrIannotatedTree _returningIannotatedTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Dml/Delete.ag"(line 20, column 9)
+              _catUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Dml/Delete.ag"(line 22, column 9)
+              _lib =
+                  either (const _lhsIlib) id $ do
+                  a <- lmt (allAtts <$> _tableItbUType)
+                  lbUpdate _lhsIcat (LBIds "delete table attrs" (Just $ getTName _tableIannotatedTree) a) _lhsIlib
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Dml/Delete.ag"(line 26, column 9)
+              _whrOlib =
+                  _lib
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Dml/Delete.ag"(line 27, column 9)
+              _returningOlib =
+                  _lib
+              -- self rule
+              _annotatedTree =
+                  Delete ann_ _tableIannotatedTree _usingIannotatedTree _whrIannotatedTree _returningIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Delete ann_ _tableIfixedUpIdentifiersTree _usingIfixedUpIdentifiersTree _whrIfixedUpIdentifiersTree _returningIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  Delete ann_ _tableIoriginalTree _usingIoriginalTree _whrIoriginalTree _returningIoriginalTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _tableOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _tableOidenv =
+                  _lhsIidenv
+              -- copy rule (from local)
+              _tableOlib =
+                  _lib
+              -- copy rule (down)
+              _usingOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _usingOidenv =
+                  _lhsIidenv
+              -- copy rule (from local)
+              _usingOlib =
+                  _lib
+              -- copy rule (down)
+              _whrOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _whrOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _returningOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _returningOidenv =
+                  _lhsIidenv
+              ( _tableIannotatedTree,_tableIfixedUpIdentifiersTree,_tableIoriginalTree,_tableItbAnnotatedTree,_tableItbUType) =
+                  table_ _tableOcat _tableOidenv _tableOlib 
+              ( _usingIannotatedTree,_usingIfixedUpIdentifiersTree,_usingIlibUpdates,_usingInewLib2,_usingIoriginalTree,_usingItrefIDs) =
+                  using_ _usingOcat _usingOidenv _usingOlib 
+              ( _whrIannotatedTree,_whrIfixedUpIdentifiersTree,_whrIoriginalTree) =
+                  whr_ _whrOcat _whrOidenv _whrOlib 
+              ( _returningIannotatedTree,_returningIfixedUpIdentifiersTree,_returningIlistType,_returningIoriginalTree) =
+                  returning_ _returningOcat _returningOidenv _returningOlib 
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_DropFunction :: Annotation ->
+                              IfExists ->
+                              T_StringTypeNameListPairList  ->
+                              Cascade ->
+                              T_Statement 
+sem_Statement_DropFunction ann_ ifE_ sigs_ cascade_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: Statement 
+              _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _tpe :: (Either [TypeError] Type)
+              _catUpdates :: ([CatalogUpdate])
+              _statementType :: (Maybe StatementType)
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              _sigsOcat :: Catalog
+              _sigsOidenv :: IDEnv
+              _sigsOlib :: LocalBindings
+              _sigsIannotatedTree :: StringTypeNameListPairList 
+              _sigsIfixedUpIdentifiersTree :: StringTypeNameListPairList 
+              _sigsIfnSigs :: ([(String,[Maybe Type])])
+              _sigsIoriginalTree :: StringTypeNameListPairList 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 82, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                      (\a -> a {stType = _statementType
+                               ,catUpd = _catUpdates    }) $
+                  setTypeAddErrors _tpe     _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 88, column 9)
+              _lhsOcatUpdates =
+                  _catUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 89, column 9)
+              _lhsOlibUpdates =
+                  _libUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 94, column 9)
+              _libUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/Drops.ag"(line 10, column 9)
+              _tpe =
+                  Right $ Pseudo Void
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/Drops.ag"(line 11, column 9)
+              _backTree =
+                  DropFunction ann_ ifE_ _sigsIannotatedTree cascade_
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/Drops.ag"(line 12, column 9)
+              _catUpdates =
+                  either (const []) id $
+                  Right $ map mcu $ mapMaybe goodSig _sigsIfnSigs
+                  where
+                    mcu :: (String,[Type]) -> CatalogUpdate
+                    mcu (nm,args) = CatDropFunction ifE nm args
+                    ifE = ifE_ == IfExists
+                    goodSig :: (String,[Maybe Type]) -> Maybe (String,[Type])
+                    goodSig (s, ts) = do
+                                  ts1 <- sequence ts
+                                  return (s,ts1)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/Drops.ag"(line 23, column 9)
+              _statementType =
+                  Nothing
+              -- self rule
+              _annotatedTree =
+                  DropFunction ann_ ifE_ _sigsIannotatedTree cascade_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  DropFunction ann_ ifE_ _sigsIfixedUpIdentifiersTree cascade_
+              -- self rule
+              _originalTree =
+                  DropFunction ann_ ifE_ _sigsIoriginalTree cascade_
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _sigsOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _sigsOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _sigsOlib =
+                  _lhsIlib
+              ( _sigsIannotatedTree,_sigsIfixedUpIdentifiersTree,_sigsIfnSigs,_sigsIoriginalTree) =
+                  sigs_ _sigsOcat _sigsOidenv _sigsOlib 
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_DropSomething :: Annotation ->
+                               DropType ->
+                               IfExists ->
+                               ([String]) ->
+                               Cascade ->
+                               T_Statement 
+sem_Statement_DropSomething ann_ dropType_ ifE_ names_ cascade_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _lhsOannotatedTree :: Statement 
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 116, column 9)
+              _lhsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 117, column 9)
+              _lhsOlibUpdates =
+                  []
+              -- self rule
+              _annotatedTree =
+                  DropSomething ann_ dropType_ ifE_ names_ cascade_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  DropSomething ann_ dropType_ ifE_ names_ cascade_
+              -- self rule
+              _originalTree =
+                  DropSomething ann_ dropType_ ifE_ names_ cascade_
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_Execute :: Annotation ->
+                         T_ScalarExpr  ->
+                         T_Statement 
+sem_Statement_Execute ann_ expr_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _exprOexpectedType :: (Maybe Type)
+              _lhsOannotatedTree :: Statement 
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              _exprOcat :: Catalog
+              _exprOidenv :: IDEnv
+              _exprOlib :: LocalBindings
+              _exprIannotatedTree :: ScalarExpr 
+              _exprIfixedUpIdentifiersTree :: ScalarExpr 
+              _exprIoriginalTree :: ScalarExpr 
+              _exprIuType :: (Maybe Type)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 116, column 9)
+              _lhsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 117, column 9)
+              _lhsOlibUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 112, column 9)
+              _exprOexpectedType =
+                  Nothing
+              -- self rule
+              _annotatedTree =
+                  Execute ann_ _exprIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Execute ann_ _exprIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  Execute ann_ _exprIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _exprOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _exprOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _exprOlib =
+                  _lhsIlib
+              ( _exprIannotatedTree,_exprIfixedUpIdentifiersTree,_exprIoriginalTree,_exprIuType) =
+                  expr_ _exprOcat _exprOexpectedType _exprOidenv _exprOlib 
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_ExitStatement :: Annotation ->
+                               (Maybe String) ->
+                               T_Statement 
+sem_Statement_ExitStatement ann_ lb_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _lhsOannotatedTree :: Statement 
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 116, column 9)
+              _lhsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 117, column 9)
+              _lhsOlibUpdates =
+                  []
+              -- self rule
+              _annotatedTree =
+                  ExitStatement ann_ lb_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  ExitStatement ann_ lb_
+              -- self rule
+              _originalTree =
+                  ExitStatement ann_ lb_
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_ForIntegerStatement :: Annotation ->
+                                     (Maybe String) ->
+                                     T_ScalarExpr  ->
+                                     T_ScalarExpr  ->
+                                     T_ScalarExpr  ->
+                                     T_StatementList  ->
+                                     T_Statement 
+sem_Statement_ForIntegerStatement ann_ lb_ var_ from_ to_ sts_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: Statement 
+              _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _stsOcatUpdates :: ([CatalogUpdate])
+              _stsOlibUpdates :: ([LocalBindingsUpdate])
+              _tpe :: (Either [TypeError] Type)
+              _stsOlib :: LocalBindings
+              _catUpdates :: ([CatalogUpdate])
+              _statementType :: (Maybe StatementType)
+              _fromOexpectedType :: (Maybe Type)
+              _toOexpectedType :: (Maybe Type)
+              _varOexpectedType :: (Maybe Type)
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              _varOcat :: Catalog
+              _varOidenv :: IDEnv
+              _varOlib :: LocalBindings
+              _fromOcat :: Catalog
+              _fromOidenv :: IDEnv
+              _fromOlib :: LocalBindings
+              _toOcat :: Catalog
+              _toOidenv :: IDEnv
+              _toOlib :: LocalBindings
+              _stsOcat :: Catalog
+              _stsOidenv :: IDEnv
+              _varIannotatedTree :: ScalarExpr 
+              _varIfixedUpIdentifiersTree :: ScalarExpr 
+              _varIoriginalTree :: ScalarExpr 
+              _varIuType :: (Maybe Type)
+              _fromIannotatedTree :: ScalarExpr 
+              _fromIfixedUpIdentifiersTree :: ScalarExpr 
+              _fromIoriginalTree :: ScalarExpr 
+              _fromIuType :: (Maybe Type)
+              _toIannotatedTree :: ScalarExpr 
+              _toIfixedUpIdentifiersTree :: ScalarExpr 
+              _toIoriginalTree :: ScalarExpr 
+              _toIuType :: (Maybe Type)
+              _stsIannotatedTree :: StatementList 
+              _stsIfixedUpIdentifiersTree :: StatementList 
+              _stsIoriginalTree :: StatementList 
+              _stsIproducedCat :: Catalog
+              _stsIproducedLib :: LocalBindings
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 82, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                      (\a -> a {stType = _statementType
+                               ,catUpd = _catUpdates    }) $
+                  setTypeAddErrors _tpe     _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 88, column 9)
+              _lhsOcatUpdates =
+                  _catUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 89, column 9)
+              _lhsOlibUpdates =
+                  _libUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 94, column 9)
+              _libUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 138, column 9)
+              _stsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 139, column 9)
+              _stsOlibUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Plpgsql/Plpgsql.ag"(line 32, column 9)
+              _tpe =
+                  do
+                  fromType <- lmt _fromIuType
+                  toType <- lmt _toIuType
+                  errorWhen (fromType /= toType) [FromToTypesNotSame fromType toType]
+                  case _varIuType of
+                    Just t -> checkAssignmentValid _lhsIcat fromType t
+                    Nothing -> return ()
+                  return $ Pseudo Void
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Plpgsql/Plpgsql.ag"(line 41, column 9)
+              _implicitVar =
+                  case _varIannotatedTree of
+                      Identifier a i | errs a == [UnrecognisedIdentifier i] -> True
+                      _ -> False
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Plpgsql/Plpgsql.ag"(line 44, column 9)
+              _stsOlib =
+                  if _implicitVar
+                  then either (const _lhsIlib) id $ do
+                       ft <- lmt _fromIuType
+                       lbUpdate _lhsIcat
+                          (LBIds "local for loop variable" Nothing [((getName _varIannotatedTree),ft)]) _lhsIlib
+                  else _lhsIlib
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Plpgsql/Plpgsql.ag"(line 52, column 9)
+              _backTree =
+                  let i = if _implicitVar
+                          then let (Identifier a i') = _varIannotatedTree
+                               in Identifier a { errs = []} i'
+                          else _varIannotatedTree
+                  in ForIntegerStatement ann_ lb_ i _fromIannotatedTree _toIannotatedTree _stsIannotatedTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Plpgsql/Plpgsql.ag"(line 58, column 9)
+              _catUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Plpgsql/Plpgsql.ag"(line 59, column 9)
+              _statementType =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 113, column 27)
+              _fromOexpectedType =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 114, column 27)
+              _toOexpectedType =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 116, column 45)
+              _varOexpectedType =
+                  Nothing
+              -- self rule
+              _annotatedTree =
+                  ForIntegerStatement ann_ lb_ _varIannotatedTree _fromIannotatedTree _toIannotatedTree _stsIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  ForIntegerStatement ann_ lb_ _varIfixedUpIdentifiersTree _fromIfixedUpIdentifiersTree _toIfixedUpIdentifiersTree _stsIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  ForIntegerStatement ann_ lb_ _varIoriginalTree _fromIoriginalTree _toIoriginalTree _stsIoriginalTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _varOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _varOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _varOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _fromOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _fromOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _fromOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _toOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _toOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _toOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _stsOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _stsOidenv =
+                  _lhsIidenv
+              ( _varIannotatedTree,_varIfixedUpIdentifiersTree,_varIoriginalTree,_varIuType) =
+                  var_ _varOcat _varOexpectedType _varOidenv _varOlib 
+              ( _fromIannotatedTree,_fromIfixedUpIdentifiersTree,_fromIoriginalTree,_fromIuType) =
+                  from_ _fromOcat _fromOexpectedType _fromOidenv _fromOlib 
+              ( _toIannotatedTree,_toIfixedUpIdentifiersTree,_toIoriginalTree,_toIuType) =
+                  to_ _toOcat _toOexpectedType _toOidenv _toOlib 
+              ( _stsIannotatedTree,_stsIfixedUpIdentifiersTree,_stsIoriginalTree,_stsIproducedCat,_stsIproducedLib) =
+                  sts_ _stsOcat _stsOcatUpdates _stsOidenv _stsOlib _stsOlibUpdates 
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_ForQueryStatement :: Annotation ->
+                                   (Maybe String) ->
+                                   T_ScalarExpr  ->
+                                   T_QueryExpr  ->
+                                   T_StatementList  ->
+                                   T_Statement 
+sem_Statement_ForQueryStatement ann_ lb_ var_ sel_ sts_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: Statement 
+              _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _stsOcatUpdates :: ([CatalogUpdate])
+              _stsOlibUpdates :: ([LocalBindingsUpdate])
+              _selOcsql :: LocalBindings
+              _tpe :: (Either [TypeError] Type)
+              _stsOlib :: LocalBindings
+              _catUpdates :: ([CatalogUpdate])
+              _statementType :: (Maybe StatementType)
+              _varOexpectedType :: (Maybe Type)
+              _selOexpectedTypes :: ([Maybe Type])
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              _varOcat :: Catalog
+              _varOidenv :: IDEnv
+              _varOlib :: LocalBindings
+              _selOcat :: Catalog
+              _selOidenv :: IDEnv
+              _selOlib :: LocalBindings
+              _stsOcat :: Catalog
+              _stsOidenv :: IDEnv
+              _varIannotatedTree :: ScalarExpr 
+              _varIfixedUpIdentifiersTree :: ScalarExpr 
+              _varIoriginalTree :: ScalarExpr 
+              _varIuType :: (Maybe Type)
+              _selIannotatedTree :: QueryExpr 
+              _selIcidenv :: IDEnv
+              _selIfixedUpIdentifiersTree :: QueryExpr 
+              _selIlibUpdates :: ([LocalBindingsUpdate])
+              _selIoriginalTree :: QueryExpr 
+              _selIuType :: (Maybe [(String,Type)])
+              _stsIannotatedTree :: StatementList 
+              _stsIfixedUpIdentifiersTree :: StatementList 
+              _stsIoriginalTree :: StatementList 
+              _stsIproducedCat :: Catalog
+              _stsIproducedLib :: LocalBindings
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 82, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                      (\a -> a {stType = _statementType
+                               ,catUpd = _catUpdates    }) $
+                  setTypeAddErrors _tpe     _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 88, column 9)
+              _lhsOcatUpdates =
+                  _catUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 89, column 9)
+              _lhsOlibUpdates =
+                  _libUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 94, column 9)
+              _libUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 138, column 9)
+              _stsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 139, column 9)
+              _stsOlibUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 124, column 25)
+              _selOcsql =
+                  emptyBindings
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Plpgsql/Plpgsql.ag"(line 64, column 9)
+              _tpe =
+                  do
+                  st <- lmt (CompositeType <$> _selIuType)
+                  toType <- lmt _varIuType
+                  checkAssignmentValid _lhsIcat st toType
+                  return $ Pseudo Void
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Plpgsql/Plpgsql.ag"(line 74, column 9)
+              _stsOlib =
+                  either (const _lhsIlib) id $ do
+                  _ <- _tpe
+                  st <- lmt (CompositeType <$> _selIuType)
+                  lbUpdate _lhsIcat (LBIds "for loop record type" Nothing [(getName _varIannotatedTree,st)]) _lhsIlib
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Plpgsql/Plpgsql.ag"(line 80, column 9)
+              _backTree =
+                  ForQueryStatement ann_ lb_ _varIannotatedTree _selIannotatedTree _stsIannotatedTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Plpgsql/Plpgsql.ag"(line 81, column 9)
+              _catUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Plpgsql/Plpgsql.ag"(line 82, column 9)
+              _statementType =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 116, column 45)
+              _varOexpectedType =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 177, column 9)
+              _selOexpectedTypes =
+                  []
+              -- self rule
+              _annotatedTree =
+                  ForQueryStatement ann_ lb_ _varIannotatedTree _selIannotatedTree _stsIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  ForQueryStatement ann_ lb_ _varIfixedUpIdentifiersTree _selIfixedUpIdentifiersTree _stsIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  ForQueryStatement ann_ lb_ _varIoriginalTree _selIoriginalTree _stsIoriginalTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _varOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _varOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _varOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _selOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _selOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _selOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _stsOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _stsOidenv =
+                  _lhsIidenv
+              ( _varIannotatedTree,_varIfixedUpIdentifiersTree,_varIoriginalTree,_varIuType) =
+                  var_ _varOcat _varOexpectedType _varOidenv _varOlib 
+              ( _selIannotatedTree,_selIcidenv,_selIfixedUpIdentifiersTree,_selIlibUpdates,_selIoriginalTree,_selIuType) =
+                  sel_ _selOcat _selOcsql _selOexpectedTypes _selOidenv _selOlib 
+              ( _stsIannotatedTree,_stsIfixedUpIdentifiersTree,_stsIoriginalTree,_stsIproducedCat,_stsIproducedLib) =
+                  sts_ _stsOcat _stsOcatUpdates _stsOidenv _stsOlib _stsOlibUpdates 
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_If :: Annotation ->
+                    T_ScalarExprStatementListPairList  ->
+                    T_StatementList  ->
+                    T_Statement 
+sem_Statement_If ann_ cases_ els_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _elsOcatUpdates :: ([CatalogUpdate])
+              _elsOlibUpdates :: ([LocalBindingsUpdate])
+              _lhsOannotatedTree :: Statement 
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              _casesOcat :: Catalog
+              _casesOidenv :: IDEnv
+              _casesOlib :: LocalBindings
+              _elsOcat :: Catalog
+              _elsOidenv :: IDEnv
+              _elsOlib :: LocalBindings
+              _casesIannotatedTree :: ScalarExprStatementListPairList 
+              _casesIfixedUpIdentifiersTree :: ScalarExprStatementListPairList 
+              _casesIoriginalTree :: ScalarExprStatementListPairList 
+              _elsIannotatedTree :: StatementList 
+              _elsIfixedUpIdentifiersTree :: StatementList 
+              _elsIoriginalTree :: StatementList 
+              _elsIproducedCat :: Catalog
+              _elsIproducedLib :: LocalBindings
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 116, column 9)
+              _lhsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 117, column 9)
+              _lhsOlibUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 134, column 9)
+              _elsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 135, column 9)
+              _elsOlibUpdates =
+                  []
+              -- self rule
+              _annotatedTree =
+                  If ann_ _casesIannotatedTree _elsIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  If ann_ _casesIfixedUpIdentifiersTree _elsIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  If ann_ _casesIoriginalTree _elsIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _casesOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _casesOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _casesOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _elsOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _elsOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _elsOlib =
+                  _lhsIlib
+              ( _casesIannotatedTree,_casesIfixedUpIdentifiersTree,_casesIoriginalTree) =
+                  cases_ _casesOcat _casesOidenv _casesOlib 
+              ( _elsIannotatedTree,_elsIfixedUpIdentifiersTree,_elsIoriginalTree,_elsIproducedCat,_elsIproducedLib) =
+                  els_ _elsOcat _elsOcatUpdates _elsOidenv _elsOlib _elsOlibUpdates 
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_Insert :: Annotation ->
+                        T_SQIdentifier  ->
+                        ([String]) ->
+                        T_QueryExpr  ->
+                        T_MaybeSelectList  ->
+                        T_Statement 
+sem_Statement_Insert ann_ table_ targetCols_ insData_ returning_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: Statement 
+              _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _insDataOcsql :: LocalBindings
+              _tpe :: (Either [TypeError] Type)
+              _statementType :: (Maybe StatementType)
+              _columnTypes :: (Either [TypeError] [(String,Type)])
+              _catUpdates :: ([CatalogUpdate])
+              _insDataOexpectedTypes :: ([Maybe Type])
+              _returningOlib :: LocalBindings
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              _tableOcat :: Catalog
+              _tableOidenv :: IDEnv
+              _tableOlib :: LocalBindings
+              _insDataOcat :: Catalog
+              _insDataOidenv :: IDEnv
+              _insDataOlib :: LocalBindings
+              _returningOcat :: Catalog
+              _returningOidenv :: IDEnv
+              _tableIannotatedTree :: SQIdentifier 
+              _tableIfixedUpIdentifiersTree :: SQIdentifier 
+              _tableIoriginalTree :: SQIdentifier 
+              _tableItbAnnotatedTree :: SQIdentifier 
+              _tableItbUType :: (Maybe ([(String,Type)],[(String,Type)]))
+              _insDataIannotatedTree :: QueryExpr 
+              _insDataIcidenv :: IDEnv
+              _insDataIfixedUpIdentifiersTree :: QueryExpr 
+              _insDataIlibUpdates :: ([LocalBindingsUpdate])
+              _insDataIoriginalTree :: QueryExpr 
+              _insDataIuType :: (Maybe [(String,Type)])
+              _returningIannotatedTree :: MaybeSelectList 
+              _returningIfixedUpIdentifiersTree :: MaybeSelectList 
+              _returningIlistType :: ([(String,Maybe Type)])
+              _returningIoriginalTree :: MaybeSelectList 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 82, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                      (\a -> a {stType = _statementType
+                               ,catUpd = _catUpdates    }) $
+                  setTypeAddErrors _tpe     _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 88, column 9)
+              _lhsOcatUpdates =
+                  _catUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 89, column 9)
+              _lhsOlibUpdates =
+                  _libUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 94, column 9)
+              _libUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 125, column 14)
+              _insDataOcsql =
+                  emptyBindings
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Dml/Insert.ag"(line 14, column 9)
+              _tpe =
+                  either Left (const $ Right $ Pseudo Void) _columnTypes
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Dml/Insert.ag"(line 15, column 9)
+              _statementType =
+                  Just (catMaybes $ getPlaceholderTypes _insDataIannotatedTree
+                       ,fromMaybe [] $ liftList _returningIlistType)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Dml/Insert.ag"(line 20, column 9)
+              _columnTypes =
+                  do
+                  atts <- lmt (allAtts <$> _tableItbUType)
+                  pAtts <- lmt (fst <$> _tableItbUType)
+                  tAtts <- case targetCols_ of
+                                [] -> return pAtts
+                                _ -> mapM (lkpA atts) targetCols_
+                  expAtts <- lmt _insDataIuType
+                  checkAssignmentsValid _lhsIcat (map snd expAtts) (map snd tAtts)
+                  return tAtts
+                  where
+                    lkpA :: [(String,Type)] -> String -> E (String,Type)
+                    lkpA m n = maybe (Left [UnrecognisedIdentifier n])
+                                     (\t -> Right (n,t))
+                                     $ lookup n m
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Dml/Insert.ag"(line 36, column 9)
+              _backTree =
+                  Insert ann_ _tableItbAnnotatedTree
+                         targetCols_
+                         _insDataIannotatedTree
+                         _returningIannotatedTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Dml/Insert.ag"(line 40, column 9)
+              _catUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Dml/Insert.ag"(line 41, column 9)
+              _insDataOexpectedTypes =
+                  maybe [] id $ do
+                  ts <- etmt $ _columnTypes
+                  return $ map (Just . snd) ts
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Dml/Insert.ag"(line 45, column 9)
+              _returningOlib =
+                  either (const _lhsIlib) id $ do
+                    atts <- lmt (allAtts <$> _tableItbUType)
+                    lbUpdate _lhsIcat (LBIds "insert target table" (Just $ getTName _tableIannotatedTree) atts) _lhsIlib
+              -- self rule
+              _annotatedTree =
+                  Insert ann_ _tableIannotatedTree targetCols_ _insDataIannotatedTree _returningIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Insert ann_ _tableIfixedUpIdentifiersTree targetCols_ _insDataIfixedUpIdentifiersTree _returningIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  Insert ann_ _tableIoriginalTree targetCols_ _insDataIoriginalTree _returningIoriginalTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _tableOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _tableOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _tableOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _insDataOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _insDataOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _insDataOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _returningOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _returningOidenv =
+                  _lhsIidenv
+              ( _tableIannotatedTree,_tableIfixedUpIdentifiersTree,_tableIoriginalTree,_tableItbAnnotatedTree,_tableItbUType) =
+                  table_ _tableOcat _tableOidenv _tableOlib 
+              ( _insDataIannotatedTree,_insDataIcidenv,_insDataIfixedUpIdentifiersTree,_insDataIlibUpdates,_insDataIoriginalTree,_insDataIuType) =
+                  insData_ _insDataOcat _insDataOcsql _insDataOexpectedTypes _insDataOidenv _insDataOlib 
+              ( _returningIannotatedTree,_returningIfixedUpIdentifiersTree,_returningIlistType,_returningIoriginalTree) =
+                  returning_ _returningOcat _returningOidenv _returningOlib 
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_Into :: Annotation ->
+                      Bool ->
+                      T_ScalarExprList  ->
+                      T_Statement  ->
+                      T_Statement 
+sem_Statement_Into ann_ strict_ into_ stmt_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _intoOexpectedTypes :: ([Maybe Type])
+              _lhsOannotatedTree :: Statement 
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              _intoOcat :: Catalog
+              _intoOidenv :: IDEnv
+              _intoOlib :: LocalBindings
+              _stmtOcat :: Catalog
+              _stmtOidenv :: IDEnv
+              _stmtOinProducedCat :: Catalog
+              _stmtOlib :: LocalBindings
+              _intoIannotatedTree :: ScalarExprList 
+              _intoIfixedUpIdentifiersTree :: ScalarExprList 
+              _intoIoriginalTree :: ScalarExprList 
+              _intoIuType :: ([Maybe Type])
+              _stmtIannotatedTree :: Statement 
+              _stmtIcatUpdates :: ([CatalogUpdate])
+              _stmtIfixedUpIdentifiersTree :: Statement 
+              _stmtIlibUpdates :: ([LocalBindingsUpdate])
+              _stmtIoriginalTree :: Statement 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 116, column 9)
+              _lhsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 117, column 9)
+              _lhsOlibUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 117, column 12)
+              _intoOexpectedTypes =
+                  []
+              -- self rule
+              _annotatedTree =
+                  Into ann_ strict_ _intoIannotatedTree _stmtIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Into ann_ strict_ _intoIfixedUpIdentifiersTree _stmtIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  Into ann_ strict_ _intoIoriginalTree _stmtIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _intoOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _intoOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _intoOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _stmtOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _stmtOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _stmtOinProducedCat =
+                  _lhsIinProducedCat
+              -- copy rule (down)
+              _stmtOlib =
+                  _lhsIlib
+              ( _intoIannotatedTree,_intoIfixedUpIdentifiersTree,_intoIoriginalTree,_intoIuType) =
+                  into_ _intoOcat _intoOexpectedTypes _intoOidenv _intoOlib 
+              ( _stmtIannotatedTree,_stmtIcatUpdates,_stmtIfixedUpIdentifiersTree,_stmtIlibUpdates,_stmtIoriginalTree) =
+                  stmt_ _stmtOcat _stmtOidenv _stmtOinProducedCat _stmtOlib 
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_LoopStatement :: Annotation ->
+                               (Maybe String) ->
+                               T_StatementList  ->
+                               T_Statement 
+sem_Statement_LoopStatement ann_ lb_ sts_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _stsOcatUpdates :: ([CatalogUpdate])
+              _stsOlibUpdates :: ([LocalBindingsUpdate])
+              _lhsOannotatedTree :: Statement 
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              _stsOcat :: Catalog
+              _stsOidenv :: IDEnv
+              _stsOlib :: LocalBindings
+              _stsIannotatedTree :: StatementList 
+              _stsIfixedUpIdentifiersTree :: StatementList 
+              _stsIoriginalTree :: StatementList 
+              _stsIproducedCat :: Catalog
+              _stsIproducedLib :: LocalBindings
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 116, column 9)
+              _lhsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 117, column 9)
+              _lhsOlibUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 138, column 9)
+              _stsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 139, column 9)
+              _stsOlibUpdates =
+                  []
+              -- self rule
+              _annotatedTree =
+                  LoopStatement ann_ lb_ _stsIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  LoopStatement ann_ lb_ _stsIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  LoopStatement ann_ lb_ _stsIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _stsOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _stsOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _stsOlib =
+                  _lhsIlib
+              ( _stsIannotatedTree,_stsIfixedUpIdentifiersTree,_stsIoriginalTree,_stsIproducedCat,_stsIproducedLib) =
+                  sts_ _stsOcat _stsOcatUpdates _stsOidenv _stsOlib _stsOlibUpdates 
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_Notify :: Annotation ->
+                        String ->
+                        T_Statement 
+sem_Statement_Notify ann_ name_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _lhsOannotatedTree :: Statement 
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 94, column 9)
+              _libUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 116, column 9)
+              _lhsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 117, column 9)
+              _lhsOlibUpdates =
+                  []
+              -- self rule
+              _annotatedTree =
+                  Notify ann_ name_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Notify ann_ name_
+              -- self rule
+              _originalTree =
+                  Notify ann_ name_
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_NullStatement :: Annotation ->
+                               T_Statement 
+sem_Statement_NullStatement ann_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _lhsOannotatedTree :: Statement 
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 116, column 9)
+              _lhsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 117, column 9)
+              _lhsOlibUpdates =
+                  []
+              -- self rule
+              _annotatedTree =
+                  NullStatement ann_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  NullStatement ann_
+              -- self rule
+              _originalTree =
+                  NullStatement ann_
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_Perform :: Annotation ->
+                         T_ScalarExpr  ->
+                         T_Statement 
+sem_Statement_Perform ann_ expr_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _exprOexpectedType :: (Maybe Type)
+              _lhsOannotatedTree :: Statement 
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              _exprOcat :: Catalog
+              _exprOidenv :: IDEnv
+              _exprOlib :: LocalBindings
+              _exprIannotatedTree :: ScalarExpr 
+              _exprIfixedUpIdentifiersTree :: ScalarExpr 
+              _exprIoriginalTree :: ScalarExpr 
+              _exprIuType :: (Maybe Type)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 116, column 9)
+              _lhsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 117, column 9)
+              _lhsOlibUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 112, column 9)
+              _exprOexpectedType =
+                  Nothing
+              -- self rule
+              _annotatedTree =
+                  Perform ann_ _exprIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Perform ann_ _exprIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  Perform ann_ _exprIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _exprOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _exprOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _exprOlib =
+                  _lhsIlib
+              ( _exprIannotatedTree,_exprIfixedUpIdentifiersTree,_exprIoriginalTree,_exprIuType) =
+                  expr_ _exprOcat _exprOexpectedType _exprOidenv _exprOlib 
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_QueryStatement :: Annotation ->
+                                T_QueryExpr  ->
+                                T_Statement 
+sem_Statement_QueryStatement ann_ ex_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: Statement 
+              _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _tpe :: (Either [TypeError] Type)
+              _statementType :: (Maybe StatementType)
+              _catUpdates :: ([CatalogUpdate])
+              _exOcsql :: LocalBindings
+              _exOexpectedTypes :: ([Maybe Type])
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              _exOcat :: Catalog
+              _exOidenv :: IDEnv
+              _exOlib :: LocalBindings
+              _exIannotatedTree :: QueryExpr 
+              _exIcidenv :: IDEnv
+              _exIfixedUpIdentifiersTree :: QueryExpr 
+              _exIlibUpdates :: ([LocalBindingsUpdate])
+              _exIoriginalTree :: QueryExpr 
+              _exIuType :: (Maybe [(String,Type)])
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 82, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                      (\a -> a {stType = _statementType
+                               ,catUpd = _catUpdates    }) $
+                  setTypeAddErrors _tpe     _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 88, column 9)
+              _lhsOcatUpdates =
+                  _catUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 89, column 9)
+              _lhsOlibUpdates =
+                  _libUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 14, column 9)
+              _tpe =
+                  Right $ Pseudo Void
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 15, column 9)
+              _statementType =
+                  do
+                  pt <- sequence $ getPlaceholderTypes _exIannotatedTree
+                  st <- _exIuType
+                  return (pt
+                         ,case st of
+                            [(_,(Pseudo Void))] -> []
+                            t -> t)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 23, column 9)
+              _backTree =
+                  QueryStatement ann_ _exIannotatedTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 24, column 9)
+              _catUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 126, column 22)
+              _exOcsql =
+                  emptyBindings
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 137, column 9)
+              _libUpdates =
+                  _exIlibUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 178, column 22)
+              _exOexpectedTypes =
+                  []
+              -- self rule
+              _annotatedTree =
+                  QueryStatement ann_ _exIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  QueryStatement ann_ _exIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  QueryStatement ann_ _exIoriginalTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _exOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _exOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _exOlib =
+                  _lhsIlib
+              ( _exIannotatedTree,_exIcidenv,_exIfixedUpIdentifiersTree,_exIlibUpdates,_exIoriginalTree,_exIuType) =
+                  ex_ _exOcat _exOcsql _exOexpectedTypes _exOidenv _exOlib 
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_Raise :: Annotation ->
+                       RaiseType ->
+                       String ->
+                       T_ScalarExprList  ->
+                       T_Statement 
+sem_Statement_Raise ann_ level_ message_ args_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _argsOexpectedTypes :: ([Maybe Type])
+              _lhsOannotatedTree :: Statement 
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              _argsOcat :: Catalog
+              _argsOidenv :: IDEnv
+              _argsOlib :: LocalBindings
+              _argsIannotatedTree :: ScalarExprList 
+              _argsIfixedUpIdentifiersTree :: ScalarExprList 
+              _argsIoriginalTree :: ScalarExprList 
+              _argsIuType :: ([Maybe Type])
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 116, column 9)
+              _lhsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 117, column 9)
+              _lhsOlibUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 154, column 13)
+              _argsOexpectedTypes =
+                  []
+              -- self rule
+              _annotatedTree =
+                  Raise ann_ level_ message_ _argsIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Raise ann_ level_ message_ _argsIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  Raise ann_ level_ message_ _argsIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _argsOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _argsOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _argsOlib =
+                  _lhsIlib
+              ( _argsIannotatedTree,_argsIfixedUpIdentifiersTree,_argsIoriginalTree,_argsIuType) =
+                  args_ _argsOcat _argsOexpectedTypes _argsOidenv _argsOlib 
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_Return :: Annotation ->
+                        T_MaybeScalarExpr  ->
+                        T_Statement 
+sem_Statement_Return ann_ value_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: Statement 
+              _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _tpe :: (Either [TypeError] Type)
+              _catUpdates :: ([CatalogUpdate])
+              _statementType :: (Maybe StatementType)
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              _valueOcat :: Catalog
+              _valueOidenv :: IDEnv
+              _valueOlib :: LocalBindings
+              _valueIannotatedTree :: MaybeScalarExpr 
+              _valueIfixedUpIdentifiersTree :: MaybeScalarExpr 
+              _valueIoriginalTree :: MaybeScalarExpr 
+              _valueIuType :: (Maybe Type)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 82, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                      (\a -> a {stType = _statementType
+                               ,catUpd = _catUpdates    }) $
+                  setTypeAddErrors _tpe     _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 88, column 9)
+              _lhsOcatUpdates =
+                  _catUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 89, column 9)
+              _lhsOlibUpdates =
+                  _libUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 94, column 9)
+              _libUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Plpgsql/Plpgsql.ag"(line 12, column 9)
+              _tpe =
+                  maybe (Right $ Pseudo Void) Right _valueIuType
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Plpgsql/Plpgsql.ag"(line 13, column 9)
+              _backTree =
+                  Return ann_ _valueIannotatedTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Plpgsql/Plpgsql.ag"(line 14, column 9)
+              _catUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Plpgsql/Plpgsql.ag"(line 15, column 9)
+              _statementType =
+                  Nothing
+              -- self rule
+              _annotatedTree =
+                  Return ann_ _valueIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Return ann_ _valueIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  Return ann_ _valueIoriginalTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _valueOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _valueOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _valueOlib =
+                  _lhsIlib
+              ( _valueIannotatedTree,_valueIfixedUpIdentifiersTree,_valueIoriginalTree,_valueIuType) =
+                  value_ _valueOcat _valueOidenv _valueOlib 
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_ReturnNext :: Annotation ->
+                            T_ScalarExpr  ->
+                            T_Statement 
+sem_Statement_ReturnNext ann_ expr_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _exprOexpectedType :: (Maybe Type)
+              _lhsOannotatedTree :: Statement 
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              _exprOcat :: Catalog
+              _exprOidenv :: IDEnv
+              _exprOlib :: LocalBindings
+              _exprIannotatedTree :: ScalarExpr 
+              _exprIfixedUpIdentifiersTree :: ScalarExpr 
+              _exprIoriginalTree :: ScalarExpr 
+              _exprIuType :: (Maybe Type)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 116, column 9)
+              _lhsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 117, column 9)
+              _lhsOlibUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 112, column 9)
+              _exprOexpectedType =
+                  Nothing
+              -- self rule
+              _annotatedTree =
+                  ReturnNext ann_ _exprIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  ReturnNext ann_ _exprIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  ReturnNext ann_ _exprIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _exprOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _exprOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _exprOlib =
+                  _lhsIlib
+              ( _exprIannotatedTree,_exprIfixedUpIdentifiersTree,_exprIoriginalTree,_exprIuType) =
+                  expr_ _exprOcat _exprOexpectedType _exprOidenv _exprOlib 
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_ReturnQuery :: Annotation ->
+                             T_QueryExpr  ->
+                             T_Statement 
+sem_Statement_ReturnQuery ann_ sel_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _selOcsql :: LocalBindings
+              _selOexpectedTypes :: ([Maybe Type])
+              _lhsOannotatedTree :: Statement 
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              _selOcat :: Catalog
+              _selOidenv :: IDEnv
+              _selOlib :: LocalBindings
+              _selIannotatedTree :: QueryExpr 
+              _selIcidenv :: IDEnv
+              _selIfixedUpIdentifiersTree :: QueryExpr 
+              _selIlibUpdates :: ([LocalBindingsUpdate])
+              _selIoriginalTree :: QueryExpr 
+              _selIuType :: (Maybe [(String,Type)])
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 116, column 9)
+              _lhsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 117, column 9)
+              _lhsOlibUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 127, column 19)
+              _selOcsql =
+                  emptyBindings
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 177, column 9)
+              _selOexpectedTypes =
+                  []
+              -- self rule
+              _annotatedTree =
+                  ReturnQuery ann_ _selIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  ReturnQuery ann_ _selIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  ReturnQuery ann_ _selIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _selOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _selOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _selOlib =
+                  _lhsIlib
+              ( _selIannotatedTree,_selIcidenv,_selIfixedUpIdentifiersTree,_selIlibUpdates,_selIoriginalTree,_selIuType) =
+                  sel_ _selOcat _selOcsql _selOexpectedTypes _selOidenv _selOlib 
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_Set :: Annotation ->
+                     String ->
+                     ([SetValue]) ->
+                     T_Statement 
+sem_Statement_Set ann_ name_ values_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _lhsOannotatedTree :: Statement 
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 94, column 9)
+              _libUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 116, column 9)
+              _lhsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 117, column 9)
+              _lhsOlibUpdates =
+                  []
+              -- self rule
+              _annotatedTree =
+                  Set ann_ name_ values_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Set ann_ name_ values_
+              -- self rule
+              _originalTree =
+                  Set ann_ name_ values_
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_Truncate :: Annotation ->
+                          ([String]) ->
+                          RestartIdentity ->
+                          Cascade ->
+                          T_Statement 
+sem_Statement_Truncate ann_ tables_ restartIdentity_ cascade_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _lhsOannotatedTree :: Statement 
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 116, column 9)
+              _lhsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 117, column 9)
+              _lhsOlibUpdates =
+                  []
+              -- self rule
+              _annotatedTree =
+                  Truncate ann_ tables_ restartIdentity_ cascade_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Truncate ann_ tables_ restartIdentity_ cascade_
+              -- self rule
+              _originalTree =
+                  Truncate ann_ tables_ restartIdentity_ cascade_
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_Update :: Annotation ->
+                        T_SQIdentifier  ->
+                        T_ScalarExprList  ->
+                        T_TableRefList  ->
+                        T_MaybeBoolExpr  ->
+                        T_MaybeSelectList  ->
+                        T_Statement 
+sem_Statement_Update ann_ table_ assigns_ fromList_ whr_ returning_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: Statement 
+              _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _tpe :: (Either [TypeError] Type)
+              _statementType :: (Maybe StatementType)
+              _catUpdates :: ([CatalogUpdate])
+              _whrOlib :: LocalBindings
+              _assignsOlib :: LocalBindings
+              _returningOlib :: LocalBindings
+              _assignsOexpectedTypes :: ([Maybe Type])
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              _tableOcat :: Catalog
+              _tableOidenv :: IDEnv
+              _tableOlib :: LocalBindings
+              _assignsOcat :: Catalog
+              _assignsOidenv :: IDEnv
+              _fromListOcat :: Catalog
+              _fromListOidenv :: IDEnv
+              _fromListOlib :: LocalBindings
+              _whrOcat :: Catalog
+              _whrOidenv :: IDEnv
+              _returningOcat :: Catalog
+              _returningOidenv :: IDEnv
+              _tableIannotatedTree :: SQIdentifier 
+              _tableIfixedUpIdentifiersTree :: SQIdentifier 
+              _tableIoriginalTree :: SQIdentifier 
+              _tableItbAnnotatedTree :: SQIdentifier 
+              _tableItbUType :: (Maybe ([(String,Type)],[(String,Type)]))
+              _assignsIannotatedTree :: ScalarExprList 
+              _assignsIfixedUpIdentifiersTree :: ScalarExprList 
+              _assignsIoriginalTree :: ScalarExprList 
+              _assignsIuType :: ([Maybe Type])
+              _fromListIannotatedTree :: TableRefList 
+              _fromListIfixedUpIdentifiersTree :: TableRefList 
+              _fromListIlibUpdates :: ([LocalBindingsUpdate])
+              _fromListInewLib2 :: LocalBindings
+              _fromListIoriginalTree :: TableRefList 
+              _fromListItrefIDs :: ([(String,[String])])
+              _whrIannotatedTree :: MaybeBoolExpr 
+              _whrIfixedUpIdentifiersTree :: MaybeBoolExpr 
+              _whrIoriginalTree :: MaybeBoolExpr 
+              _returningIannotatedTree :: MaybeSelectList 
+              _returningIfixedUpIdentifiersTree :: MaybeSelectList 
+              _returningIlistType :: ([(String,Maybe Type)])
+              _returningIoriginalTree :: MaybeSelectList 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 82, column 9)
+              _lhsOannotatedTree =
+                  updateAnnotation
+                      (\a -> a {stType = _statementType
+                               ,catUpd = _catUpdates    }) $
+                  setTypeAddErrors _tpe     _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 88, column 9)
+              _lhsOcatUpdates =
+                  _catUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 89, column 9)
+              _lhsOlibUpdates =
+                  _libUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 94, column 9)
+              _libUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Dml/Update.ag"(line 13, column 9)
+              _tpe =
+                  Right $ Pseudo Void
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Dml/Update.ag"(line 18, column 9)
+              _statementType =
+                  do
+                  pt <- sequence $ getPlaceholderTypes _assignsIannotatedTree
+                                   ++ getPlaceholderTypes _whrIannotatedTree
+                  return (pt,fromMaybe [] $ liftList _returningIlistType)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Dml/Update.ag"(line 24, column 9)
+              _backTree =
+                  Update ann_
+                         _tableItbAnnotatedTree
+                         _assignsIannotatedTree
+                         _fromListIannotatedTree
+                         _whrIannotatedTree
+                         _returningIannotatedTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Dml/Update.ag"(line 30, column 9)
+              _catUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Dml/Update.ag"(line 35, column 9)
+              _lib =
+                  either (const _lhsIlib) id $ do
+                  a <- lmt (allAtts <$> _tableItbUType)
+                  lbUpdate _lhsIcat (LBIds "updated table attrs" (Just $ getTName _tableIannotatedTree) a) _lhsIlib
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Dml/Update.ag"(line 39, column 9)
+              _whrOlib =
+                  _lib
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Dml/Update.ag"(line 40, column 9)
+              _assignsOlib =
+                  _lib
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Dml/Update.ag"(line 41, column 9)
+              _returningOlib =
+                  _lib
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 155, column 14)
+              _assignsOexpectedTypes =
+                  []
+              -- self rule
+              _annotatedTree =
+                  Update ann_ _tableIannotatedTree _assignsIannotatedTree _fromListIannotatedTree _whrIannotatedTree _returningIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Update ann_ _tableIfixedUpIdentifiersTree _assignsIfixedUpIdentifiersTree _fromListIfixedUpIdentifiersTree _whrIfixedUpIdentifiersTree _returningIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  Update ann_ _tableIoriginalTree _assignsIoriginalTree _fromListIoriginalTree _whrIoriginalTree _returningIoriginalTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _tableOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _tableOidenv =
+                  _lhsIidenv
+              -- copy rule (from local)
+              _tableOlib =
+                  _lib
+              -- copy rule (down)
+              _assignsOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _assignsOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _fromListOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _fromListOidenv =
+                  _lhsIidenv
+              -- copy rule (from local)
+              _fromListOlib =
+                  _lib
+              -- copy rule (down)
+              _whrOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _whrOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _returningOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _returningOidenv =
+                  _lhsIidenv
+              ( _tableIannotatedTree,_tableIfixedUpIdentifiersTree,_tableIoriginalTree,_tableItbAnnotatedTree,_tableItbUType) =
+                  table_ _tableOcat _tableOidenv _tableOlib 
+              ( _assignsIannotatedTree,_assignsIfixedUpIdentifiersTree,_assignsIoriginalTree,_assignsIuType) =
+                  assigns_ _assignsOcat _assignsOexpectedTypes _assignsOidenv _assignsOlib 
+              ( _fromListIannotatedTree,_fromListIfixedUpIdentifiersTree,_fromListIlibUpdates,_fromListInewLib2,_fromListIoriginalTree,_fromListItrefIDs) =
+                  fromList_ _fromListOcat _fromListOidenv _fromListOlib 
+              ( _whrIannotatedTree,_whrIfixedUpIdentifiersTree,_whrIoriginalTree) =
+                  whr_ _whrOcat _whrOidenv _whrOlib 
+              ( _returningIannotatedTree,_returningIfixedUpIdentifiersTree,_returningIlistType,_returningIoriginalTree) =
+                  returning_ _returningOcat _returningOidenv _returningOlib 
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+sem_Statement_WhileStatement :: Annotation ->
+                                (Maybe String) ->
+                                T_ScalarExpr  ->
+                                T_StatementList  ->
+                                T_Statement 
+sem_Statement_WhileStatement ann_ lb_ expr_ sts_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIinProducedCat
+       _lhsIlib ->
+         (let _lhsOcatUpdates :: ([CatalogUpdate])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _stsOcatUpdates :: ([CatalogUpdate])
+              _stsOlibUpdates :: ([LocalBindingsUpdate])
+              _exprOexpectedType :: (Maybe Type)
+              _lhsOannotatedTree :: Statement 
+              _lhsOfixedUpIdentifiersTree :: Statement 
+              _lhsOoriginalTree :: Statement 
+              _exprOcat :: Catalog
+              _exprOidenv :: IDEnv
+              _exprOlib :: LocalBindings
+              _stsOcat :: Catalog
+              _stsOidenv :: IDEnv
+              _stsOlib :: LocalBindings
+              _exprIannotatedTree :: ScalarExpr 
+              _exprIfixedUpIdentifiersTree :: ScalarExpr 
+              _exprIoriginalTree :: ScalarExpr 
+              _exprIuType :: (Maybe Type)
+              _stsIannotatedTree :: StatementList 
+              _stsIfixedUpIdentifiersTree :: StatementList 
+              _stsIoriginalTree :: StatementList 
+              _stsIproducedCat :: Catalog
+              _stsIproducedLib :: LocalBindings
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 116, column 9)
+              _lhsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 117, column 9)
+              _lhsOlibUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 138, column 9)
+              _stsOcatUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 139, column 9)
+              _stsOlibUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 112, column 9)
+              _exprOexpectedType =
+                  Nothing
+              -- self rule
+              _annotatedTree =
+                  WhileStatement ann_ lb_ _exprIannotatedTree _stsIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  WhileStatement ann_ lb_ _exprIfixedUpIdentifiersTree _stsIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  WhileStatement ann_ lb_ _exprIoriginalTree _stsIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _exprOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _exprOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _exprOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _stsOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _stsOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _stsOlib =
+                  _lhsIlib
+              ( _exprIannotatedTree,_exprIfixedUpIdentifiersTree,_exprIoriginalTree,_exprIuType) =
+                  expr_ _exprOcat _exprOexpectedType _exprOidenv _exprOlib 
+              ( _stsIannotatedTree,_stsIfixedUpIdentifiersTree,_stsIoriginalTree,_stsIproducedCat,_stsIproducedLib) =
+                  sts_ _stsOcat _stsOcatUpdates _stsOidenv _stsOlib _stsOlibUpdates 
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOoriginalTree)))
+-- StatementList -----------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         catUpdates           : [CatalogUpdate]
+         idenv                : IDEnv
+         lib                  : LocalBindings
+         libUpdates           : [LocalBindingsUpdate]
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+         producedCat          : Catalog
+         producedLib          : LocalBindings
+   alternatives:
+      alternative Cons:
+         child hd             : Statement 
+         child tl             : StatementList 
+         visit 0:
+            local newCat      : _
+            local newLib      : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Nil:
+         visit 0:
+            local newCat      : _
+            local newLib      : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+type StatementList  = [Statement ]
+-- cata
+sem_StatementList :: StatementList  ->
+                     T_StatementList 
+sem_StatementList list  =
+    (Prelude.foldr sem_StatementList_Cons sem_StatementList_Nil (Prelude.map sem_Statement list) )
+-- semantic domain
+type T_StatementList  = Catalog ->
+                        ([CatalogUpdate]) ->
+                        IDEnv ->
+                        LocalBindings ->
+                        ([LocalBindingsUpdate]) ->
+                        ( StatementList ,StatementList ,StatementList ,Catalog,LocalBindings)
+data Inh_StatementList  = Inh_StatementList {cat_Inh_StatementList :: Catalog,catUpdates_Inh_StatementList :: ([CatalogUpdate]),idenv_Inh_StatementList :: IDEnv,lib_Inh_StatementList :: LocalBindings,libUpdates_Inh_StatementList :: ([LocalBindingsUpdate])}
+data Syn_StatementList  = Syn_StatementList {annotatedTree_Syn_StatementList :: StatementList ,fixedUpIdentifiersTree_Syn_StatementList :: StatementList ,originalTree_Syn_StatementList :: StatementList ,producedCat_Syn_StatementList :: Catalog,producedLib_Syn_StatementList :: LocalBindings}
+wrap_StatementList :: T_StatementList  ->
+                      Inh_StatementList  ->
+                      Syn_StatementList 
+wrap_StatementList sem (Inh_StatementList _lhsIcat _lhsIcatUpdates _lhsIidenv _lhsIlib _lhsIlibUpdates )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOproducedCat,_lhsOproducedLib) = sem _lhsIcat _lhsIcatUpdates _lhsIidenv _lhsIlib _lhsIlibUpdates 
+     in  (Syn_StatementList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree _lhsOproducedCat _lhsOproducedLib ))
+sem_StatementList_Cons :: T_Statement  ->
+                          T_StatementList  ->
+                          T_StatementList 
+sem_StatementList_Cons hd_ tl_  =
+    (\ _lhsIcat
+       _lhsIcatUpdates
+       _lhsIidenv
+       _lhsIlib
+       _lhsIlibUpdates ->
+         (let _hdOcat :: Catalog
+              _tlOcat :: Catalog
+              _hdOlib :: LocalBindings
+              _tlOlib :: LocalBindings
+              _lhsOproducedCat :: Catalog
+              _lhsOproducedLib :: LocalBindings
+              _tlOcatUpdates :: ([CatalogUpdate])
+              _tlOlibUpdates :: ([LocalBindingsUpdate])
+              _hdOinProducedCat :: Catalog
+              _lhsOannotatedTree :: StatementList 
+              _lhsOfixedUpIdentifiersTree :: StatementList 
+              _lhsOoriginalTree :: StatementList 
+              _hdOidenv :: IDEnv
+              _tlOidenv :: IDEnv
+              _hdIannotatedTree :: Statement 
+              _hdIcatUpdates :: ([CatalogUpdate])
+              _hdIfixedUpIdentifiersTree :: Statement 
+              _hdIlibUpdates :: ([LocalBindingsUpdate])
+              _hdIoriginalTree :: Statement 
+              _tlIannotatedTree :: StatementList 
+              _tlIfixedUpIdentifiersTree :: StatementList 
+              _tlIoriginalTree :: StatementList 
+              _tlIproducedCat :: Catalog
+              _tlIproducedLib :: LocalBindings
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 56, column 9)
+              _newCat =
+                  fromRight _lhsIcat $ updateCatalog _lhsIcat _lhsIcatUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 57, column 9)
+              _newLib =
+                  fromRight _lhsIlib $ foldM (flip $ lbUpdate _lhsIcat) _lhsIlib _lhsIlibUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 59, column 9)
+              _hdOcat =
+                  _newCat
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 60, column 9)
+              _tlOcat =
+                  _newCat
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 61, column 9)
+              _hdOlib =
+                  _newLib
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 62, column 9)
+              _tlOlib =
+                  _newLib
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 66, column 9)
+              _lhsOproducedCat =
+                  _tlIproducedCat
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 67, column 9)
+              _lhsOproducedLib =
+                  _tlIproducedLib
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 70, column 9)
+              _tlOcatUpdates =
+                  _hdIcatUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 71, column 9)
+              _tlOlibUpdates =
+                  _hdIlibUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 97, column 12)
+              _hdOinProducedCat =
+                  _tlIproducedCat
+              -- self rule
+              _annotatedTree =
+                  (:) _hdIannotatedTree _tlIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  (:) _hdIoriginalTree _tlIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _hdOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _tlOidenv =
+                  _lhsIidenv
+              ( _hdIannotatedTree,_hdIcatUpdates,_hdIfixedUpIdentifiersTree,_hdIlibUpdates,_hdIoriginalTree) =
+                  hd_ _hdOcat _hdOidenv _hdOinProducedCat _hdOlib 
+              ( _tlIannotatedTree,_tlIfixedUpIdentifiersTree,_tlIoriginalTree,_tlIproducedCat,_tlIproducedLib) =
+                  tl_ _tlOcat _tlOcatUpdates _tlOidenv _tlOlib _tlOlibUpdates 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOproducedCat,_lhsOproducedLib)))
+sem_StatementList_Nil :: T_StatementList 
+sem_StatementList_Nil  =
+    (\ _lhsIcat
+       _lhsIcatUpdates
+       _lhsIidenv
+       _lhsIlib
+       _lhsIlibUpdates ->
+         (let _lhsOproducedCat :: Catalog
+              _lhsOproducedLib :: LocalBindings
+              _lhsOannotatedTree :: StatementList 
+              _lhsOfixedUpIdentifiersTree :: StatementList 
+              _lhsOoriginalTree :: StatementList 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 56, column 9)
+              _newCat =
+                  fromRight _lhsIcat $ updateCatalog _lhsIcat _lhsIcatUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 57, column 9)
+              _newLib =
+                  fromRight _lhsIlib $ foldM (flip $ lbUpdate _lhsIcat) _lhsIlib _lhsIlibUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 73, column 9)
+              _lhsOproducedCat =
+                  _newCat
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 74, column 9)
+              _lhsOproducedLib =
+                  _newLib
+              -- self rule
+              _annotatedTree =
+                  []
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  []
+              -- self rule
+              _originalTree =
+                  []
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOproducedCat,_lhsOproducedLib)))
+-- StringTypeNameListPair --------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         fnSig                : (String,[Maybe Type])
+         originalTree         : SELF 
+   alternatives:
+      alternative Tuple:
+         child x1             : {String}
+         child x2             : TypeNameList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+type StringTypeNameListPair  = ( (String),TypeNameList )
+-- cata
+sem_StringTypeNameListPair :: StringTypeNameListPair  ->
+                              T_StringTypeNameListPair 
+sem_StringTypeNameListPair ( x1,x2)  =
+    (sem_StringTypeNameListPair_Tuple x1 (sem_TypeNameList x2 ) )
+-- semantic domain
+type T_StringTypeNameListPair  = Catalog ->
+                                 IDEnv ->
+                                 LocalBindings ->
+                                 ( StringTypeNameListPair ,StringTypeNameListPair ,((String,[Maybe Type])),StringTypeNameListPair )
+data Inh_StringTypeNameListPair  = Inh_StringTypeNameListPair {cat_Inh_StringTypeNameListPair :: Catalog,idenv_Inh_StringTypeNameListPair :: IDEnv,lib_Inh_StringTypeNameListPair :: LocalBindings}
+data Syn_StringTypeNameListPair  = Syn_StringTypeNameListPair {annotatedTree_Syn_StringTypeNameListPair :: StringTypeNameListPair ,fixedUpIdentifiersTree_Syn_StringTypeNameListPair :: StringTypeNameListPair ,fnSig_Syn_StringTypeNameListPair :: ((String,[Maybe Type])),originalTree_Syn_StringTypeNameListPair :: StringTypeNameListPair }
+wrap_StringTypeNameListPair :: T_StringTypeNameListPair  ->
+                               Inh_StringTypeNameListPair  ->
+                               Syn_StringTypeNameListPair 
+wrap_StringTypeNameListPair sem (Inh_StringTypeNameListPair _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOfnSig,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_StringTypeNameListPair _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOfnSig _lhsOoriginalTree ))
+sem_StringTypeNameListPair_Tuple :: String ->
+                                    T_TypeNameList  ->
+                                    T_StringTypeNameListPair 
+sem_StringTypeNameListPair_Tuple x1_ x2_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOfnSig :: ((String,[Maybe Type]))
+              _lhsOannotatedTree :: StringTypeNameListPair 
+              _lhsOfixedUpIdentifiersTree :: StringTypeNameListPair 
+              _lhsOoriginalTree :: StringTypeNameListPair 
+              _x2Ocat :: Catalog
+              _x2Oidenv :: IDEnv
+              _x2Olib :: LocalBindings
+              _x2IannotatedTree :: TypeNameList 
+              _x2IfixedUpIdentifiersTree :: TypeNameList 
+              _x2InamedTypes :: ([Maybe Type])
+              _x2IoriginalTree :: TypeNameList 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/Drops.ag"(line 32, column 13)
+              _lhsOfnSig =
+                  (x1_, _x2InamedTypes)
+              -- self rule
+              _annotatedTree =
+                  (x1_,_x2IannotatedTree)
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  (x1_,_x2IfixedUpIdentifiersTree)
+              -- self rule
+              _originalTree =
+                  (x1_,_x2IoriginalTree)
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _x2Ocat =
+                  _lhsIcat
+              -- copy rule (down)
+              _x2Oidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _x2Olib =
+                  _lhsIlib
+              ( _x2IannotatedTree,_x2IfixedUpIdentifiersTree,_x2InamedTypes,_x2IoriginalTree) =
+                  x2_ _x2Ocat _x2Oidenv _x2Olib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOfnSig,_lhsOoriginalTree)))
+-- StringTypeNameListPairList ----------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         fnSigs               : [(String,[Maybe Type])]
+         originalTree         : SELF 
+   alternatives:
+      alternative Cons:
+         child hd             : StringTypeNameListPair 
+         child tl             : StringTypeNameListPairList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Nil:
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+type StringTypeNameListPairList  = [StringTypeNameListPair ]
+-- cata
+sem_StringTypeNameListPairList :: StringTypeNameListPairList  ->
+                                  T_StringTypeNameListPairList 
+sem_StringTypeNameListPairList list  =
+    (Prelude.foldr sem_StringTypeNameListPairList_Cons sem_StringTypeNameListPairList_Nil (Prelude.map sem_StringTypeNameListPair list) )
+-- semantic domain
+type T_StringTypeNameListPairList  = Catalog ->
+                                     IDEnv ->
+                                     LocalBindings ->
+                                     ( StringTypeNameListPairList ,StringTypeNameListPairList ,([(String,[Maybe Type])]),StringTypeNameListPairList )
+data Inh_StringTypeNameListPairList  = Inh_StringTypeNameListPairList {cat_Inh_StringTypeNameListPairList :: Catalog,idenv_Inh_StringTypeNameListPairList :: IDEnv,lib_Inh_StringTypeNameListPairList :: LocalBindings}
+data Syn_StringTypeNameListPairList  = Syn_StringTypeNameListPairList {annotatedTree_Syn_StringTypeNameListPairList :: StringTypeNameListPairList ,fixedUpIdentifiersTree_Syn_StringTypeNameListPairList :: StringTypeNameListPairList ,fnSigs_Syn_StringTypeNameListPairList :: ([(String,[Maybe Type])]),originalTree_Syn_StringTypeNameListPairList :: StringTypeNameListPairList }
+wrap_StringTypeNameListPairList :: T_StringTypeNameListPairList  ->
+                                   Inh_StringTypeNameListPairList  ->
+                                   Syn_StringTypeNameListPairList 
+wrap_StringTypeNameListPairList sem (Inh_StringTypeNameListPairList _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOfnSigs,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_StringTypeNameListPairList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOfnSigs _lhsOoriginalTree ))
+sem_StringTypeNameListPairList_Cons :: T_StringTypeNameListPair  ->
+                                       T_StringTypeNameListPairList  ->
+                                       T_StringTypeNameListPairList 
+sem_StringTypeNameListPairList_Cons hd_ tl_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOfnSigs :: ([(String,[Maybe Type])])
+              _lhsOannotatedTree :: StringTypeNameListPairList 
+              _lhsOfixedUpIdentifiersTree :: StringTypeNameListPairList 
+              _lhsOoriginalTree :: StringTypeNameListPairList 
+              _hdOcat :: Catalog
+              _hdOidenv :: IDEnv
+              _hdOlib :: LocalBindings
+              _tlOcat :: Catalog
+              _tlOidenv :: IDEnv
+              _tlOlib :: LocalBindings
+              _hdIannotatedTree :: StringTypeNameListPair 
+              _hdIfixedUpIdentifiersTree :: StringTypeNameListPair 
+              _hdIfnSig :: ((String,[Maybe Type]))
+              _hdIoriginalTree :: StringTypeNameListPair 
+              _tlIannotatedTree :: StringTypeNameListPairList 
+              _tlIfixedUpIdentifiersTree :: StringTypeNameListPairList 
+              _tlIfnSigs :: ([(String,[Maybe Type])])
+              _tlIoriginalTree :: StringTypeNameListPairList 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/Drops.ag"(line 27, column 12)
+              _lhsOfnSigs =
+                  _hdIfnSig : _tlIfnSigs
+              -- self rule
+              _annotatedTree =
+                  (:) _hdIannotatedTree _tlIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  (:) _hdIoriginalTree _tlIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _hdOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _hdOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _hdOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _tlOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _tlOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _tlOlib =
+                  _lhsIlib
+              ( _hdIannotatedTree,_hdIfixedUpIdentifiersTree,_hdIfnSig,_hdIoriginalTree) =
+                  hd_ _hdOcat _hdOidenv _hdOlib 
+              ( _tlIannotatedTree,_tlIfixedUpIdentifiersTree,_tlIfnSigs,_tlIoriginalTree) =
+                  tl_ _tlOcat _tlOidenv _tlOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOfnSigs,_lhsOoriginalTree)))
+sem_StringTypeNameListPairList_Nil :: T_StringTypeNameListPairList 
+sem_StringTypeNameListPairList_Nil  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOfnSigs :: ([(String,[Maybe Type])])
+              _lhsOannotatedTree :: StringTypeNameListPairList 
+              _lhsOfixedUpIdentifiersTree :: StringTypeNameListPairList 
+              _lhsOoriginalTree :: StringTypeNameListPairList 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/Drops.ag"(line 28, column 11)
+              _lhsOfnSigs =
+                  []
+              -- self rule
+              _annotatedTree =
+                  []
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  []
+              -- self rule
+              _originalTree =
+                  []
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOfnSigs,_lhsOoriginalTree)))
+-- TableAlias --------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         expectedNumCols      : Maybe Int
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+   alternatives:
+      alternative FullAlias:
+         child ann            : {Annotation}
+         child tb             : {String}
+         child cols           : {[String]}
+         visit 0:
+            local errs        : _
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative NoAlias:
+         child ann            : {Annotation}
+         visit 0:
+            local backTree    : _
+            local errs        : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative TableAlias:
+         child ann            : {Annotation}
+         child tb             : {String}
+         visit 0:
+            local backTree    : _
+            local errs        : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+data TableAlias  = FullAlias (Annotation) (String) (([String])) 
+                 | NoAlias (Annotation) 
+                 | TableAlias (Annotation) (String) 
+                 deriving ( Data,Eq,Show,Typeable)
+-- cata
+sem_TableAlias :: TableAlias  ->
+                  T_TableAlias 
+sem_TableAlias (FullAlias _ann _tb _cols )  =
+    (sem_TableAlias_FullAlias _ann _tb _cols )
+sem_TableAlias (NoAlias _ann )  =
+    (sem_TableAlias_NoAlias _ann )
+sem_TableAlias (TableAlias _ann _tb )  =
+    (sem_TableAlias_TableAlias _ann _tb )
+-- semantic domain
+type T_TableAlias  = Catalog ->
+                     (Maybe Int) ->
+                     IDEnv ->
+                     LocalBindings ->
+                     ( TableAlias ,TableAlias ,TableAlias )
+data Inh_TableAlias  = Inh_TableAlias {cat_Inh_TableAlias :: Catalog,expectedNumCols_Inh_TableAlias :: (Maybe Int),idenv_Inh_TableAlias :: IDEnv,lib_Inh_TableAlias :: LocalBindings}
+data Syn_TableAlias  = Syn_TableAlias {annotatedTree_Syn_TableAlias :: TableAlias ,fixedUpIdentifiersTree_Syn_TableAlias :: TableAlias ,originalTree_Syn_TableAlias :: TableAlias }
+wrap_TableAlias :: T_TableAlias  ->
+                   Inh_TableAlias  ->
+                   Syn_TableAlias 
+wrap_TableAlias sem (Inh_TableAlias _lhsIcat _lhsIexpectedNumCols _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIexpectedNumCols _lhsIidenv _lhsIlib 
+     in  (Syn_TableAlias _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
+sem_TableAlias_FullAlias :: Annotation ->
+                            String ->
+                            ([String]) ->
+                            T_TableAlias 
+sem_TableAlias_FullAlias ann_ tb_ cols_  =
+    (\ _lhsIcat
+       _lhsIexpectedNumCols
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: TableAlias 
+              _lhsOfixedUpIdentifiersTree :: TableAlias 
+              _lhsOoriginalTree :: TableAlias 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 286, column 9)
+              _lhsOannotatedTree =
+                  addTypeErrors _errs     _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 288, column 9)
+              _errs =
+                  case _lhsIexpectedNumCols of
+                        Nothing -> []
+                        Just n -> if n == length cols_
+                                  then []
+                                  else [WrongNumberOfAliasCols n $ length cols_]
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 293, column 9)
+              _backTree =
+                  FullAlias ann_ tb_ cols_
+              -- self rule
+              _annotatedTree =
+                  FullAlias ann_ tb_ cols_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  FullAlias ann_ tb_ cols_
+              -- self rule
+              _originalTree =
+                  FullAlias ann_ tb_ cols_
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+sem_TableAlias_NoAlias :: Annotation ->
+                          T_TableAlias 
+sem_TableAlias_NoAlias ann_  =
+    (\ _lhsIcat
+       _lhsIexpectedNumCols
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: TableAlias 
+              _lhsOfixedUpIdentifiersTree :: TableAlias 
+              _lhsOoriginalTree :: TableAlias 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 286, column 9)
+              _lhsOannotatedTree =
+                  addTypeErrors _errs     _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 296, column 15)
+              _backTree =
+                  NoAlias ann_
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 297, column 15)
+              _errs =
+                  []
+              -- self rule
+              _annotatedTree =
+                  NoAlias ann_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  NoAlias ann_
+              -- self rule
+              _originalTree =
+                  NoAlias ann_
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+sem_TableAlias_TableAlias :: Annotation ->
+                             String ->
+                             T_TableAlias 
+sem_TableAlias_TableAlias ann_ tb_  =
+    (\ _lhsIcat
+       _lhsIexpectedNumCols
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOannotatedTree :: TableAlias 
+              _lhsOfixedUpIdentifiersTree :: TableAlias 
+              _lhsOoriginalTree :: TableAlias 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 286, column 9)
+              _lhsOannotatedTree =
+                  addTypeErrors _errs     _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 294, column 18)
+              _backTree =
+                  TableAlias ann_ tb_
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 295, column 18)
+              _errs =
+                  []
+              -- self rule
+              _annotatedTree =
+                  TableAlias ann_ tb_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  TableAlias ann_ tb_
+              -- self rule
+              _originalTree =
+                  TableAlias ann_ tb_
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+-- TableRef ----------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         libUpdates           : [LocalBindingsUpdate]
+         newLib2              : LocalBindings
+         originalTree         : SELF 
+         trefIDs              : [(String,[String])]
+   alternatives:
+      alternative FunTref:
+         child ann            : {Annotation}
+         child fn             : ScalarExpr 
+         child alias          : TableAlias 
+         visit 0:
+            local _tup2       : {([(String,[String])],TableRef)}
+            local errs        : _
+            local eqfunIdens  : {Either [TypeError] (String,[(String,Type)])}
+            local qfunIdens   : _
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative JoinTref:
+         child ann            : {Annotation}
+         child tbl            : TableRef 
+         child nat            : {Natural}
+         child joinType       : {JoinType}
+         child tbl1           : TableRef 
+         child onExpr         : OnExpr 
+         child alias          : TableAlias 
+         visit 0:
+            local _tup3       : _
+            local trefIDs     : _
+            local errs        : _
+            local joinErrors  : _
+            local libUpdates  : _
+            local newLib      : {Either [TypeError] LocalBindings}
+            local newLib2     : _
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative SubTref:
+         child ann            : {Annotation}
+         child sel            : QueryExpr 
+         child alias          : TableAlias 
+         visit 0:
+            local _tup4       : {([(String,[String])],TableRef)}
+            local errs        : _
+            local selectAttrs : {Either [TypeError] [(String,Type)]}
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Tref:
+         child ann            : {Annotation}
+         child tbl            : SQIdentifier 
+         child alias          : TableAlias 
+         visit 0:
+            local _tup5       : {([(String,[String])],TableRef)}
+            local errs        : _
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+data TableRef  = FunTref (Annotation) (ScalarExpr ) (TableAlias ) 
+               | JoinTref (Annotation) (TableRef ) (Natural) (JoinType) (TableRef ) (OnExpr ) (TableAlias ) 
+               | SubTref (Annotation) (QueryExpr ) (TableAlias ) 
+               | Tref (Annotation) (SQIdentifier ) (TableAlias ) 
+               deriving ( Data,Eq,Show,Typeable)
+-- cata
+sem_TableRef :: TableRef  ->
+                T_TableRef 
+sem_TableRef (FunTref _ann _fn _alias )  =
+    (sem_TableRef_FunTref _ann (sem_ScalarExpr _fn ) (sem_TableAlias _alias ) )
+sem_TableRef (JoinTref _ann _tbl _nat _joinType _tbl1 _onExpr _alias )  =
+    (sem_TableRef_JoinTref _ann (sem_TableRef _tbl ) _nat _joinType (sem_TableRef _tbl1 ) (sem_OnExpr _onExpr ) (sem_TableAlias _alias ) )
+sem_TableRef (SubTref _ann _sel _alias )  =
+    (sem_TableRef_SubTref _ann (sem_QueryExpr _sel ) (sem_TableAlias _alias ) )
+sem_TableRef (Tref _ann _tbl _alias )  =
+    (sem_TableRef_Tref _ann (sem_SQIdentifier _tbl ) (sem_TableAlias _alias ) )
+-- semantic domain
+type T_TableRef  = Catalog ->
+                   IDEnv ->
+                   LocalBindings ->
+                   ( TableRef ,TableRef ,([LocalBindingsUpdate]),LocalBindings,TableRef ,([(String,[String])]))
+data Inh_TableRef  = Inh_TableRef {cat_Inh_TableRef :: Catalog,idenv_Inh_TableRef :: IDEnv,lib_Inh_TableRef :: LocalBindings}
+data Syn_TableRef  = Syn_TableRef {annotatedTree_Syn_TableRef :: TableRef ,fixedUpIdentifiersTree_Syn_TableRef :: TableRef ,libUpdates_Syn_TableRef :: ([LocalBindingsUpdate]),newLib2_Syn_TableRef :: LocalBindings,originalTree_Syn_TableRef :: TableRef ,trefIDs_Syn_TableRef :: ([(String,[String])])}
+wrap_TableRef :: T_TableRef  ->
+                 Inh_TableRef  ->
+                 Syn_TableRef 
+wrap_TableRef sem (Inh_TableRef _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOnewLib2,_lhsOoriginalTree,_lhsOtrefIDs) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_TableRef _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOlibUpdates _lhsOnewLib2 _lhsOoriginalTree _lhsOtrefIDs ))
+sem_TableRef_FunTref :: Annotation ->
+                        T_ScalarExpr  ->
+                        T_TableAlias  ->
+                        T_TableRef 
+sem_TableRef_FunTref ann_ fn_ alias_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let __tup2 :: (([(String,[String])],TableRef))
+              _lhsOtrefIDs :: ([(String,[String])])
+              _lhsOfixedUpIdentifiersTree :: TableRef 
+              _lhsOannotatedTree :: TableRef 
+              _eqfunIdens :: (Either [TypeError] (String,[(String,Type)]))
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _lhsOnewLib2 :: LocalBindings
+              _aliasOexpectedNumCols :: (Maybe Int)
+              _fnOexpectedType :: (Maybe Type)
+              _lhsOoriginalTree :: TableRef 
+              _fnOcat :: Catalog
+              _fnOidenv :: IDEnv
+              _fnOlib :: LocalBindings
+              _aliasOcat :: Catalog
+              _aliasOidenv :: IDEnv
+              _aliasOlib :: LocalBindings
+              _fnIannotatedTree :: ScalarExpr 
+              _fnIfixedUpIdentifiersTree :: ScalarExpr 
+              _fnIoriginalTree :: ScalarExpr 
+              _fnIuType :: (Maybe Type)
+              _aliasIannotatedTree :: TableAlias 
+              _aliasIfixedUpIdentifiersTree :: TableAlias 
+              _aliasIoriginalTree :: TableAlias 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 382, column 15)
+              __tup2 =
+                  let (FunCall _ f _) = _fnIfixedUpIdentifiersTree
+                      (trs,al) = doAlias _aliasIannotatedTree [(f,[f])]
+                  in (trs,FunTref ann_ _fnIfixedUpIdentifiersTree al)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 382, column 15)
+              (_lhsOtrefIDs,_) =
+                  __tup2
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 382, column 15)
+              (_,_lhsOfixedUpIdentifiersTree) =
+                  __tup2
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 55, column 9)
+              _lhsOannotatedTree =
+                  addTypeErrors _errs     _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 102, column 9)
+              _errs =
+                  case _eqfunIdens of
+                    Left e -> e
+                    Right _ -> []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 108, column 9)
+              _eqfunIdens =
+                  funIdens _lhsIcat (getAlias "" _aliasIoriginalTree) _fnIannotatedTree _fnIuType
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 109, column 9)
+              _lhsOlibUpdates =
+                  [LBTref "fn"
+                                  (fst _qfunIdens    )
+                                  (snd _qfunIdens    )
+                                  []]
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 113, column 9)
+              _qfunIdens =
+                  fromRight ("",[]) _eqfunIdens
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 247, column 9)
+              _lhsOnewLib2 =
+                  emptyBindings
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 260, column 9)
+              _backTree =
+                  FunTref ann_ _fnIannotatedTree _aliasIannotatedTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 281, column 9)
+              _aliasOexpectedNumCols =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 120, column 15)
+              _fnOexpectedType =
+                  Nothing
+              -- self rule
+              _annotatedTree =
+                  FunTref ann_ _fnIannotatedTree _aliasIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  FunTref ann_ _fnIfixedUpIdentifiersTree _aliasIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  FunTref ann_ _fnIoriginalTree _aliasIoriginalTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _fnOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _fnOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _fnOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _aliasOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _aliasOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _aliasOlib =
+                  _lhsIlib
+              ( _fnIannotatedTree,_fnIfixedUpIdentifiersTree,_fnIoriginalTree,_fnIuType) =
+                  fn_ _fnOcat _fnOexpectedType _fnOidenv _fnOlib 
+              ( _aliasIannotatedTree,_aliasIfixedUpIdentifiersTree,_aliasIoriginalTree) =
+                  alias_ _aliasOcat _aliasOexpectedNumCols _aliasOidenv _aliasOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOnewLib2,_lhsOoriginalTree,_lhsOtrefIDs)))
+sem_TableRef_JoinTref :: Annotation ->
+                         T_TableRef  ->
+                         Natural ->
+                         JoinType ->
+                         T_TableRef  ->
+                         T_OnExpr  ->
+                         T_TableAlias  ->
+                         T_TableRef 
+sem_TableRef_JoinTref ann_ tbl_ nat_ joinType_ tbl1_ onExpr_ alias_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOfixedUpIdentifiersTree :: TableRef 
+              _lhsOtrefIDs :: ([(String,[String])])
+              _onExprOidenv :: IDEnv
+              _lhsOannotatedTree :: TableRef 
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _newLib :: (Either [TypeError] LocalBindings)
+              _lhsOnewLib2 :: LocalBindings
+              _onExprOlib :: LocalBindings
+              _aliasOexpectedNumCols :: (Maybe Int)
+              _lhsOoriginalTree :: TableRef 
+              _tblOcat :: Catalog
+              _tblOidenv :: IDEnv
+              _tblOlib :: LocalBindings
+              _tbl1Ocat :: Catalog
+              _tbl1Oidenv :: IDEnv
+              _tbl1Olib :: LocalBindings
+              _onExprOcat :: Catalog
+              _aliasOcat :: Catalog
+              _aliasOidenv :: IDEnv
+              _aliasOlib :: LocalBindings
+              _tblIannotatedTree :: TableRef 
+              _tblIfixedUpIdentifiersTree :: TableRef 
+              _tblIlibUpdates :: ([LocalBindingsUpdate])
+              _tblInewLib2 :: LocalBindings
+              _tblIoriginalTree :: TableRef 
+              _tblItrefIDs :: ([(String,[String])])
+              _tbl1IannotatedTree :: TableRef 
+              _tbl1IfixedUpIdentifiersTree :: TableRef 
+              _tbl1IlibUpdates :: ([LocalBindingsUpdate])
+              _tbl1InewLib2 :: LocalBindings
+              _tbl1IoriginalTree :: TableRef 
+              _tbl1ItrefIDs :: ([(String,[String])])
+              _onExprIannotatedTree :: OnExpr 
+              _onExprIfixedUpIdentifiersTree :: OnExpr 
+              _onExprIoriginalTree :: OnExpr 
+              _aliasIannotatedTree :: TableAlias 
+              _aliasIfixedUpIdentifiersTree :: TableAlias 
+              _aliasIoriginalTree :: TableAlias 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 388, column 9)
+              __tup3 =
+                  let (trs,al) = doAlias _aliasIannotatedTree $ _tblItrefIDs ++ _tbl1ItrefIDs
+                  in (trs, JoinTref ann_ _tblIfixedUpIdentifiersTree
+                                    nat_ joinType_ _tbl1IfixedUpIdentifiersTree
+                                    _onExprIfixedUpIdentifiersTree al)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 388, column 9)
+              (_trefIDs,_) =
+                  __tup3
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 388, column 9)
+              (_,_lhsOfixedUpIdentifiersTree) =
+                  __tup3
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 394, column 9)
+              _lhsOtrefIDs =
+                  _trefIDs
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 395, column 9)
+              _onExprOidenv =
+                  IDEnv _trefIDs
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 55, column 9)
+              _lhsOannotatedTree =
+                  addTypeErrors _errs     _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 118, column 9)
+              _errs =
+                  fromLeft [] _newLib
+                  ++ _joinErrors
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 120, column 9)
+              _lhsOlibUpdates =
+                  if _joinErrors     == []
+                  then _libUpdates
+                  else []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 125, column 9)
+              _joinErrors =
+                  fromLeft [] (foldM (flip $ lbUpdate _lhsIcat) _lhsIlib _libUpdates    )
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 126, column 9)
+              _libUpdates =
+                  case (_tblIlibUpdates, _tbl1IlibUpdates) of
+                    ([u1], [u2]) -> [LBJoinTref "join" u1 u2 jids
+                                                    (case _aliasIoriginalTree of
+                                                             NoAlias _ -> Nothing
+                                                             TableAlias _ t -> Just t
+                                                             FullAlias _ t _ -> Just t)]
+                    _ -> []
+                  where
+                    jids = case (nat_, _onExprIoriginalTree) of
+                                (Natural, _) -> Left ()
+                                (_,Just (JoinUsing _ s)) -> Right s
+                                _ -> Right []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 140, column 9)
+              _newLib =
+                  case (_tblIlibUpdates, _tbl1IlibUpdates) of
+                    ([u1],[u2]) -> lbUpdate _lhsIcat
+                                     (LBJoinTref "join" u1 u2 (Right []) Nothing) _lhsIlib
+                    _ -> Right _lhsIlib
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 220, column 9)
+              _newLib2 =
+                  let t0t :: [(String,Maybe Type)]
+                      t0t = getUnqualifiedBindings _tblInewLib2
+                      t1t = getUnqualifiedBindings _tbl1InewLib2
+                  in case _aliasIoriginalTree of
+                    (FullAlias _ n cs) ->
+                        createLocalBindings $ Just [(n,zip cs $ map snd (t0t ++ t1t))]
+                    (TableAlias _ n) ->
+                        createLocalBindings $ Just [(n, t0t ++ t1t)]
+                    NoAlias _ ->
+                        joinBindings _tblInewLib2 _tbl1InewLib2
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 233, column 9)
+              _lhsOnewLib2 =
+                  _newLib2
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 234, column 9)
+              _onExprOlib =
+                  _newLib2
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 262, column 9)
+              _backTree =
+                  JoinTref ann_
+                             _tblIannotatedTree
+                             nat_
+                             joinType_
+                             _tbl1IannotatedTree
+                             _onExprIannotatedTree
+                             _aliasIannotatedTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 281, column 9)
+              _aliasOexpectedNumCols =
+                  Nothing
+              -- self rule
+              _annotatedTree =
+                  JoinTref ann_ _tblIannotatedTree nat_ joinType_ _tbl1IannotatedTree _onExprIannotatedTree _aliasIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  JoinTref ann_ _tblIfixedUpIdentifiersTree nat_ joinType_ _tbl1IfixedUpIdentifiersTree _onExprIfixedUpIdentifiersTree _aliasIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  JoinTref ann_ _tblIoriginalTree nat_ joinType_ _tbl1IoriginalTree _onExprIoriginalTree _aliasIoriginalTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _tblOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _tblOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _tblOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _tbl1Ocat =
+                  _lhsIcat
+              -- copy rule (down)
+              _tbl1Oidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _tbl1Olib =
+                  _lhsIlib
+              -- copy rule (down)
+              _onExprOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _aliasOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _aliasOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _aliasOlib =
+                  _lhsIlib
+              ( _tblIannotatedTree,_tblIfixedUpIdentifiersTree,_tblIlibUpdates,_tblInewLib2,_tblIoriginalTree,_tblItrefIDs) =
+                  tbl_ _tblOcat _tblOidenv _tblOlib 
+              ( _tbl1IannotatedTree,_tbl1IfixedUpIdentifiersTree,_tbl1IlibUpdates,_tbl1InewLib2,_tbl1IoriginalTree,_tbl1ItrefIDs) =
+                  tbl1_ _tbl1Ocat _tbl1Oidenv _tbl1Olib 
+              ( _onExprIannotatedTree,_onExprIfixedUpIdentifiersTree,_onExprIoriginalTree) =
+                  onExpr_ _onExprOcat _onExprOidenv _onExprOlib 
+              ( _aliasIannotatedTree,_aliasIfixedUpIdentifiersTree,_aliasIoriginalTree) =
+                  alias_ _aliasOcat _aliasOexpectedNumCols _aliasOidenv _aliasOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOnewLib2,_lhsOoriginalTree,_lhsOtrefIDs)))
+sem_TableRef_SubTref :: Annotation ->
+                        T_QueryExpr  ->
+                        T_TableAlias  ->
+                        T_TableRef 
+sem_TableRef_SubTref ann_ sel_ alias_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let __tup4 :: (([(String,[String])],TableRef))
+              _lhsOtrefIDs :: ([(String,[String])])
+              _lhsOfixedUpIdentifiersTree :: TableRef 
+              _selOcsql :: LocalBindings
+              _lhsOannotatedTree :: TableRef 
+              _selectAttrs :: (Either [TypeError] [(String,Type)])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _lhsOnewLib2 :: LocalBindings
+              _aliasOexpectedNumCols :: (Maybe Int)
+              _selOexpectedTypes :: ([Maybe Type])
+              _lhsOoriginalTree :: TableRef 
+              _selOcat :: Catalog
+              _selOidenv :: IDEnv
+              _selOlib :: LocalBindings
+              _aliasOcat :: Catalog
+              _aliasOidenv :: IDEnv
+              _aliasOlib :: LocalBindings
+              _selIannotatedTree :: QueryExpr 
+              _selIcidenv :: IDEnv
+              _selIfixedUpIdentifiersTree :: QueryExpr 
+              _selIlibUpdates :: ([LocalBindingsUpdate])
+              _selIoriginalTree :: QueryExpr 
+              _selIuType :: (Maybe [(String,Type)])
+              _aliasIannotatedTree :: TableAlias 
+              _aliasIfixedUpIdentifiersTree :: TableAlias 
+              _aliasIoriginalTree :: TableAlias 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 377, column 15)
+              __tup4 =
+                  let IDEnv x = _selIcidenv
+                      (trs,al) = doAlias _aliasIannotatedTree x
+                  in (trs, SubTref ann_ _selIfixedUpIdentifiersTree al)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 377, column 15)
+              (_lhsOtrefIDs,_) =
+                  __tup4
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 377, column 15)
+              (_,_lhsOfixedUpIdentifiersTree) =
+                  __tup4
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 129, column 15)
+              _selOcsql =
+                  emptyBindings
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 55, column 9)
+              _lhsOannotatedTree =
+                  addTypeErrors _errs     _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 72, column 9)
+              _errs =
+                  case _selectAttrs     of
+                          Left e -> e
+                          Right _ -> []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 76, column 9)
+              _selectAttrs =
+                  lmt _selIuType
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 77, column 9)
+              _lhsOlibUpdates =
+                  [LBTref "sub query" (getAlias "" _aliasIoriginalTree)
+                                  (fromRight [] _selectAttrs    ) []]
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 237, column 9)
+              _lhsOnewLib2 =
+                  createLocalBindings $ do
+                  pu <- _selIuType
+                  let (n,cs) = case _aliasIoriginalTree of
+                                 (FullAlias _ n cs) -> (n,cs)
+                                 _ -> (n, [])
+                  return [(n,zip cs $ map (Just . snd) pu)]
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 256, column 9)
+              _backTree =
+                  SubTref ann_ _selIannotatedTree _aliasIannotatedTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 281, column 9)
+              _aliasOexpectedNumCols =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 180, column 15)
+              _selOexpectedTypes =
+                  []
+              -- self rule
+              _annotatedTree =
+                  SubTref ann_ _selIannotatedTree _aliasIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  SubTref ann_ _selIfixedUpIdentifiersTree _aliasIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  SubTref ann_ _selIoriginalTree _aliasIoriginalTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _selOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _selOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _selOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _aliasOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _aliasOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _aliasOlib =
+                  _lhsIlib
+              ( _selIannotatedTree,_selIcidenv,_selIfixedUpIdentifiersTree,_selIlibUpdates,_selIoriginalTree,_selIuType) =
+                  sel_ _selOcat _selOcsql _selOexpectedTypes _selOidenv _selOlib 
+              ( _aliasIannotatedTree,_aliasIfixedUpIdentifiersTree,_aliasIoriginalTree) =
+                  alias_ _aliasOcat _aliasOexpectedNumCols _aliasOidenv _aliasOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOnewLib2,_lhsOoriginalTree,_lhsOtrefIDs)))
+sem_TableRef_Tref :: Annotation ->
+                     T_SQIdentifier  ->
+                     T_TableAlias  ->
+                     T_TableRef 
+sem_TableRef_Tref ann_ tbl_ alias_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let __tup5 :: (([(String,[String])],TableRef))
+              _lhsOtrefIDs :: ([(String,[String])])
+              _lhsOfixedUpIdentifiersTree :: TableRef 
+              _lhsOannotatedTree :: TableRef 
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _lhsOnewLib2 :: LocalBindings
+              _aliasOexpectedNumCols :: (Maybe Int)
+              _lhsOoriginalTree :: TableRef 
+              _tblOcat :: Catalog
+              _tblOidenv :: IDEnv
+              _tblOlib :: LocalBindings
+              _aliasOcat :: Catalog
+              _aliasOidenv :: IDEnv
+              _aliasOlib :: LocalBindings
+              _tblIannotatedTree :: SQIdentifier 
+              _tblIfixedUpIdentifiersTree :: SQIdentifier 
+              _tblIoriginalTree :: SQIdentifier 
+              _tblItbAnnotatedTree :: SQIdentifier 
+              _tblItbUType :: (Maybe ([(String,Type)],[(String,Type)]))
+              _aliasIannotatedTree :: TableAlias 
+              _aliasIfixedUpIdentifiersTree :: TableAlias 
+              _aliasIoriginalTree :: TableAlias 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 369, column 12)
+              __tup5 =
+                  let tn = getTName _tblIfixedUpIdentifiersTree
+                      ids = case catCompositePublicAttrs _lhsIcat relationComposites tn of
+                               Right attrs -> [(tn, map fst attrs)]
+                               Left _ -> [(tn,[])]
+                      (trs,al) = doAlias _aliasIannotatedTree ids
+                  in (trs,Tref ann_ _tblIfixedUpIdentifiersTree al)
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 369, column 12)
+              (_lhsOtrefIDs,_) =
+                  __tup5
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 369, column 12)
+              (_,_lhsOfixedUpIdentifiersTree) =
+                  __tup5
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 55, column 9)
+              _lhsOannotatedTree =
+                  addTypeErrors _errs     _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 85, column 9)
+              _errs =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 86, column 9)
+              _lhsOlibUpdates =
+                  maybe [] id $ do
+                  let n = getTName _tblIannotatedTree
+                  (pu,pr) <- _tblItbUType
+                  return [LBTref ("tref: " ++ n)
+                            (getAlias n _aliasIoriginalTree)
+                            pu
+                            pr]
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 208, column 9)
+              _lhsOnewLib2 =
+                  createLocalBindings $ do
+                  let n = getTName _tblIannotatedTree
+                  (pu,pr) <- _tblItbUType
+                  let (n,cs) = case _aliasIoriginalTree of
+                                 (FullAlias _ n cs) -> (n,cs)
+                                 _ -> (n, [])
+                  return [(n,zip cs $ map (Just . snd) pu)
+                         ,(n,map (second Just) pr)]
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 258, column 9)
+              _backTree =
+                  Tref ann_ _tblItbAnnotatedTree _aliasIannotatedTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 275, column 9)
+              _aliasOexpectedNumCols =
+                  do
+                  let n = getTName _tblIannotatedTree
+                  (pu,_) <- _tblItbUType
+                  return $ length pu
+              -- self rule
+              _annotatedTree =
+                  Tref ann_ _tblIannotatedTree _aliasIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Tref ann_ _tblIfixedUpIdentifiersTree _aliasIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  Tref ann_ _tblIoriginalTree _aliasIoriginalTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _tblOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _tblOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _tblOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _aliasOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _aliasOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _aliasOlib =
+                  _lhsIlib
+              ( _tblIannotatedTree,_tblIfixedUpIdentifiersTree,_tblIoriginalTree,_tblItbAnnotatedTree,_tblItbUType) =
+                  tbl_ _tblOcat _tblOidenv _tblOlib 
+              ( _aliasIannotatedTree,_aliasIfixedUpIdentifiersTree,_aliasIoriginalTree) =
+                  alias_ _aliasOcat _aliasOexpectedNumCols _aliasOidenv _aliasOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOnewLib2,_lhsOoriginalTree,_lhsOtrefIDs)))
+-- TableRefList ------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         libUpdates           : [LocalBindingsUpdate]
+         newLib2              : LocalBindings
+         originalTree         : SELF 
+         trefIDs              : [(String,[String])]
+   alternatives:
+      alternative Cons:
+         child hd             : TableRef 
+         child tl             : TableRefList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Nil:
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+type TableRefList  = [TableRef ]
+-- cata
+sem_TableRefList :: TableRefList  ->
+                    T_TableRefList 
+sem_TableRefList list  =
+    (Prelude.foldr sem_TableRefList_Cons sem_TableRefList_Nil (Prelude.map sem_TableRef list) )
+-- semantic domain
+type T_TableRefList  = Catalog ->
+                       IDEnv ->
+                       LocalBindings ->
+                       ( TableRefList ,TableRefList ,([LocalBindingsUpdate]),LocalBindings,TableRefList ,([(String,[String])]))
+data Inh_TableRefList  = Inh_TableRefList {cat_Inh_TableRefList :: Catalog,idenv_Inh_TableRefList :: IDEnv,lib_Inh_TableRefList :: LocalBindings}
+data Syn_TableRefList  = Syn_TableRefList {annotatedTree_Syn_TableRefList :: TableRefList ,fixedUpIdentifiersTree_Syn_TableRefList :: TableRefList ,libUpdates_Syn_TableRefList :: ([LocalBindingsUpdate]),newLib2_Syn_TableRefList :: LocalBindings,originalTree_Syn_TableRefList :: TableRefList ,trefIDs_Syn_TableRefList :: ([(String,[String])])}
+wrap_TableRefList :: T_TableRefList  ->
+                     Inh_TableRefList  ->
+                     Syn_TableRefList 
+wrap_TableRefList sem (Inh_TableRefList _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOnewLib2,_lhsOoriginalTree,_lhsOtrefIDs) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_TableRefList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOlibUpdates _lhsOnewLib2 _lhsOoriginalTree _lhsOtrefIDs ))
+sem_TableRefList_Cons :: T_TableRef  ->
+                         T_TableRefList  ->
+                         T_TableRefList 
+sem_TableRefList_Cons hd_ tl_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOtrefIDs :: ([(String,[String])])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _lhsOnewLib2 :: LocalBindings
+              _lhsOannotatedTree :: TableRefList 
+              _lhsOfixedUpIdentifiersTree :: TableRefList 
+              _lhsOoriginalTree :: TableRefList 
+              _hdOcat :: Catalog
+              _hdOidenv :: IDEnv
+              _hdOlib :: LocalBindings
+              _tlOcat :: Catalog
+              _tlOidenv :: IDEnv
+              _tlOlib :: LocalBindings
+              _hdIannotatedTree :: TableRef 
+              _hdIfixedUpIdentifiersTree :: TableRef 
+              _hdIlibUpdates :: ([LocalBindingsUpdate])
+              _hdInewLib2 :: LocalBindings
+              _hdIoriginalTree :: TableRef 
+              _hdItrefIDs :: ([(String,[String])])
+              _tlIannotatedTree :: TableRefList 
+              _tlIfixedUpIdentifiersTree :: TableRefList 
+              _tlIlibUpdates :: ([LocalBindingsUpdate])
+              _tlInewLib2 :: LocalBindings
+              _tlIoriginalTree :: TableRefList 
+              _tlItrefIDs :: ([(String,[String])])
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 365, column 12)
+              _lhsOtrefIDs =
+                  _hdItrefIDs ++ _tlItrefIDs
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 61, column 9)
+              _lhsOlibUpdates =
+                  _hdIlibUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 204, column 9)
+              _lhsOnewLib2 =
+                  joinBindings _hdInewLib2 _tlInewLib2
+              -- self rule
+              _annotatedTree =
+                  (:) _hdIannotatedTree _tlIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  (:) _hdIoriginalTree _tlIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _hdOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _hdOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _hdOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _tlOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _tlOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _tlOlib =
+                  _lhsIlib
+              ( _hdIannotatedTree,_hdIfixedUpIdentifiersTree,_hdIlibUpdates,_hdInewLib2,_hdIoriginalTree,_hdItrefIDs) =
+                  hd_ _hdOcat _hdOidenv _hdOlib 
+              ( _tlIannotatedTree,_tlIfixedUpIdentifiersTree,_tlIlibUpdates,_tlInewLib2,_tlIoriginalTree,_tlItrefIDs) =
+                  tl_ _tlOcat _tlOidenv _tlOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOnewLib2,_lhsOoriginalTree,_lhsOtrefIDs)))
+sem_TableRefList_Nil :: T_TableRefList 
+sem_TableRefList_Nil  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOtrefIDs :: ([(String,[String])])
+              _lhsOlibUpdates :: ([LocalBindingsUpdate])
+              _lhsOnewLib2 :: LocalBindings
+              _lhsOannotatedTree :: TableRefList 
+              _lhsOfixedUpIdentifiersTree :: TableRefList 
+              _lhsOoriginalTree :: TableRefList 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/FixUpIdentifiers.ag"(line 366, column 11)
+              _lhsOtrefIDs =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 59, column 9)
+              _lhsOlibUpdates =
+                  []
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 202, column 9)
+              _lhsOnewLib2 =
+                  createLocalBindings $ Just []
+              -- self rule
+              _annotatedTree =
+                  []
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  []
+              -- self rule
+              _originalTree =
+                  []
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOlibUpdates,_lhsOnewLib2,_lhsOoriginalTree,_lhsOtrefIDs)))
+-- TypeAttributeDef --------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         attrName             : String
+         fixedUpIdentifiersTree : SELF 
+         namedType            : Maybe Type
+         originalTree         : SELF 
+   alternatives:
+      alternative TypeAttDef:
+         child ann            : {Annotation}
+         child name           : {String}
+         child typ            : TypeName 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+data TypeAttributeDef  = TypeAttDef (Annotation) (String) (TypeName ) 
+                       deriving ( Data,Eq,Show,Typeable)
+-- cata
+sem_TypeAttributeDef :: TypeAttributeDef  ->
+                        T_TypeAttributeDef 
+sem_TypeAttributeDef (TypeAttDef _ann _name _typ )  =
+    (sem_TypeAttributeDef_TypeAttDef _ann _name (sem_TypeName _typ ) )
+-- semantic domain
+type T_TypeAttributeDef  = Catalog ->
+                           IDEnv ->
+                           LocalBindings ->
+                           ( TypeAttributeDef ,String,TypeAttributeDef ,(Maybe Type),TypeAttributeDef )
+data Inh_TypeAttributeDef  = Inh_TypeAttributeDef {cat_Inh_TypeAttributeDef :: Catalog,idenv_Inh_TypeAttributeDef :: IDEnv,lib_Inh_TypeAttributeDef :: LocalBindings}
+data Syn_TypeAttributeDef  = Syn_TypeAttributeDef {annotatedTree_Syn_TypeAttributeDef :: TypeAttributeDef ,attrName_Syn_TypeAttributeDef :: String,fixedUpIdentifiersTree_Syn_TypeAttributeDef :: TypeAttributeDef ,namedType_Syn_TypeAttributeDef :: (Maybe Type),originalTree_Syn_TypeAttributeDef :: TypeAttributeDef }
+wrap_TypeAttributeDef :: T_TypeAttributeDef  ->
+                         Inh_TypeAttributeDef  ->
+                         Syn_TypeAttributeDef 
+wrap_TypeAttributeDef sem (Inh_TypeAttributeDef _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOattrName,_lhsOfixedUpIdentifiersTree,_lhsOnamedType,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_TypeAttributeDef _lhsOannotatedTree _lhsOattrName _lhsOfixedUpIdentifiersTree _lhsOnamedType _lhsOoriginalTree ))
+sem_TypeAttributeDef_TypeAttDef :: Annotation ->
+                                   String ->
+                                   T_TypeName  ->
+                                   T_TypeAttributeDef 
+sem_TypeAttributeDef_TypeAttDef ann_ name_ typ_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOattrName :: String
+              _lhsOnamedType :: (Maybe Type)
+              _lhsOannotatedTree :: TypeAttributeDef 
+              _lhsOfixedUpIdentifiersTree :: TypeAttributeDef 
+              _lhsOoriginalTree :: TypeAttributeDef 
+              _typOcat :: Catalog
+              _typOidenv :: IDEnv
+              _typOlib :: LocalBindings
+              _typIannotatedTree :: TypeName 
+              _typIfixedUpIdentifiersTree :: TypeName 
+              _typInamedType :: (Maybe Type)
+              _typIoriginalTree :: TypeName 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/MiscCreates.ag"(line 37, column 9)
+              _lhsOattrName =
+                  name_
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/MiscCreates.ag"(line 38, column 9)
+              _lhsOnamedType =
+                  _typInamedType
+              -- self rule
+              _annotatedTree =
+                  TypeAttDef ann_ name_ _typIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  TypeAttDef ann_ name_ _typIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  TypeAttDef ann_ name_ _typIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _typOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _typOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _typOlib =
+                  _lhsIlib
+              ( _typIannotatedTree,_typIfixedUpIdentifiersTree,_typInamedType,_typIoriginalTree) =
+                  typ_ _typOcat _typOidenv _typOlib 
+          in  ( _lhsOannotatedTree,_lhsOattrName,_lhsOfixedUpIdentifiersTree,_lhsOnamedType,_lhsOoriginalTree)))
+-- TypeAttributeDefList ----------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         attrs                : [(String, Maybe Type)]
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+   alternatives:
+      alternative Cons:
+         child hd             : TypeAttributeDef 
+         child tl             : TypeAttributeDefList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Nil:
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+type TypeAttributeDefList  = [TypeAttributeDef ]
+-- cata
+sem_TypeAttributeDefList :: TypeAttributeDefList  ->
+                            T_TypeAttributeDefList 
+sem_TypeAttributeDefList list  =
+    (Prelude.foldr sem_TypeAttributeDefList_Cons sem_TypeAttributeDefList_Nil (Prelude.map sem_TypeAttributeDef list) )
+-- semantic domain
+type T_TypeAttributeDefList  = Catalog ->
+                               IDEnv ->
+                               LocalBindings ->
+                               ( TypeAttributeDefList ,([(String, Maybe Type)]),TypeAttributeDefList ,TypeAttributeDefList )
+data Inh_TypeAttributeDefList  = Inh_TypeAttributeDefList {cat_Inh_TypeAttributeDefList :: Catalog,idenv_Inh_TypeAttributeDefList :: IDEnv,lib_Inh_TypeAttributeDefList :: LocalBindings}
+data Syn_TypeAttributeDefList  = Syn_TypeAttributeDefList {annotatedTree_Syn_TypeAttributeDefList :: TypeAttributeDefList ,attrs_Syn_TypeAttributeDefList :: ([(String, Maybe Type)]),fixedUpIdentifiersTree_Syn_TypeAttributeDefList :: TypeAttributeDefList ,originalTree_Syn_TypeAttributeDefList :: TypeAttributeDefList }
+wrap_TypeAttributeDefList :: T_TypeAttributeDefList  ->
+                             Inh_TypeAttributeDefList  ->
+                             Syn_TypeAttributeDefList 
+wrap_TypeAttributeDefList sem (Inh_TypeAttributeDefList _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOattrs,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_TypeAttributeDefList _lhsOannotatedTree _lhsOattrs _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
+sem_TypeAttributeDefList_Cons :: T_TypeAttributeDef  ->
+                                 T_TypeAttributeDefList  ->
+                                 T_TypeAttributeDefList 
+sem_TypeAttributeDefList_Cons hd_ tl_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOattrs :: ([(String, Maybe Type)])
+              _lhsOannotatedTree :: TypeAttributeDefList 
+              _lhsOfixedUpIdentifiersTree :: TypeAttributeDefList 
+              _lhsOoriginalTree :: TypeAttributeDefList 
+              _hdOcat :: Catalog
+              _hdOidenv :: IDEnv
+              _hdOlib :: LocalBindings
+              _tlOcat :: Catalog
+              _tlOidenv :: IDEnv
+              _tlOlib :: LocalBindings
+              _hdIannotatedTree :: TypeAttributeDef 
+              _hdIattrName :: String
+              _hdIfixedUpIdentifiersTree :: TypeAttributeDef 
+              _hdInamedType :: (Maybe Type)
+              _hdIoriginalTree :: TypeAttributeDef 
+              _tlIannotatedTree :: TypeAttributeDefList 
+              _tlIattrs :: ([(String, Maybe Type)])
+              _tlIfixedUpIdentifiersTree :: TypeAttributeDefList 
+              _tlIoriginalTree :: TypeAttributeDefList 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/MiscCreates.ag"(line 43, column 12)
+              _lhsOattrs =
+                  (_hdIattrName, _hdInamedType) : _tlIattrs
+              -- self rule
+              _annotatedTree =
+                  (:) _hdIannotatedTree _tlIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  (:) _hdIoriginalTree _tlIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _hdOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _hdOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _hdOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _tlOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _tlOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _tlOlib =
+                  _lhsIlib
+              ( _hdIannotatedTree,_hdIattrName,_hdIfixedUpIdentifiersTree,_hdInamedType,_hdIoriginalTree) =
+                  hd_ _hdOcat _hdOidenv _hdOlib 
+              ( _tlIannotatedTree,_tlIattrs,_tlIfixedUpIdentifiersTree,_tlIoriginalTree) =
+                  tl_ _tlOcat _tlOidenv _tlOlib 
+          in  ( _lhsOannotatedTree,_lhsOattrs,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+sem_TypeAttributeDefList_Nil :: T_TypeAttributeDefList 
+sem_TypeAttributeDefList_Nil  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOattrs :: ([(String, Maybe Type)])
+              _lhsOannotatedTree :: TypeAttributeDefList 
+              _lhsOfixedUpIdentifiersTree :: TypeAttributeDefList 
+              _lhsOoriginalTree :: TypeAttributeDefList 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/MiscCreates.ag"(line 44, column 11)
+              _lhsOattrs =
+                  []
+              -- self rule
+              _annotatedTree =
+                  []
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  []
+              -- self rule
+              _originalTree =
+                  []
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOattrs,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+-- TypeName ----------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         namedType            : Maybe Type
+         originalTree         : SELF 
+   alternatives:
+      alternative ArrayTypeName:
+         child ann            : {Annotation}
+         child typ            : TypeName 
+         visit 0:
+            local tpe         : _
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Prec2TypeName:
+         child ann            : {Annotation}
+         child tn             : {String}
+         child prec           : {Integer}
+         child prec1          : {Integer}
+         visit 0:
+            local tpe         : _
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative PrecTypeName:
+         child ann            : {Annotation}
+         child tn             : {String}
+         child prec           : {Integer}
+         visit 0:
+            local tpe         : _
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative SetOfTypeName:
+         child ann            : {Annotation}
+         child typ            : TypeName 
+         visit 0:
+            local tpe         : _
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative SimpleTypeName:
+         child ann            : {Annotation}
+         child tn             : {String}
+         visit 0:
+            local tpe         : _
+            local backTree    : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+data TypeName  = ArrayTypeName (Annotation) (TypeName ) 
+               | Prec2TypeName (Annotation) (String) (Integer) (Integer) 
+               | PrecTypeName (Annotation) (String) (Integer) 
+               | SetOfTypeName (Annotation) (TypeName ) 
+               | SimpleTypeName (Annotation) (String) 
+               deriving ( Data,Eq,Show,Typeable)
+-- cata
+sem_TypeName :: TypeName  ->
+                T_TypeName 
+sem_TypeName (ArrayTypeName _ann _typ )  =
+    (sem_TypeName_ArrayTypeName _ann (sem_TypeName _typ ) )
+sem_TypeName (Prec2TypeName _ann _tn _prec _prec1 )  =
+    (sem_TypeName_Prec2TypeName _ann _tn _prec _prec1 )
+sem_TypeName (PrecTypeName _ann _tn _prec )  =
+    (sem_TypeName_PrecTypeName _ann _tn _prec )
+sem_TypeName (SetOfTypeName _ann _typ )  =
+    (sem_TypeName_SetOfTypeName _ann (sem_TypeName _typ ) )
+sem_TypeName (SimpleTypeName _ann _tn )  =
+    (sem_TypeName_SimpleTypeName _ann _tn )
+-- semantic domain
+type T_TypeName  = Catalog ->
+                   IDEnv ->
+                   LocalBindings ->
+                   ( TypeName ,TypeName ,(Maybe Type),TypeName )
+data Inh_TypeName  = Inh_TypeName {cat_Inh_TypeName :: Catalog,idenv_Inh_TypeName :: IDEnv,lib_Inh_TypeName :: LocalBindings}
+data Syn_TypeName  = Syn_TypeName {annotatedTree_Syn_TypeName :: TypeName ,fixedUpIdentifiersTree_Syn_TypeName :: TypeName ,namedType_Syn_TypeName :: (Maybe Type),originalTree_Syn_TypeName :: TypeName }
+wrap_TypeName :: T_TypeName  ->
+                 Inh_TypeName  ->
+                 Syn_TypeName 
+wrap_TypeName sem (Inh_TypeName _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOnamedType,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_TypeName _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOnamedType _lhsOoriginalTree ))
+sem_TypeName_ArrayTypeName :: Annotation ->
+                              T_TypeName  ->
+                              T_TypeName 
+sem_TypeName_ArrayTypeName ann_ typ_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOnamedType :: (Maybe Type)
+              _lhsOannotatedTree :: TypeName 
+              _lhsOfixedUpIdentifiersTree :: TypeName 
+              _lhsOoriginalTree :: TypeName 
+              _typOcat :: Catalog
+              _typOidenv :: IDEnv
+              _typOlib :: LocalBindings
+              _typIannotatedTree :: TypeName 
+              _typIfixedUpIdentifiersTree :: TypeName 
+              _typInamedType :: (Maybe Type)
+              _typIoriginalTree :: TypeName 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 19, column 10)
+              _lhsOnamedType =
+                  etmt _tpe
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 20, column 10)
+              _lhsOannotatedTree =
+                  addTypeErrors (tes _tpe    ) _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 27, column 9)
+              _tpe =
+                  lmt _typInamedType >>=  Right . ArrayType
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 28, column 9)
+              _backTree =
+                  ArrayTypeName ann_ _typIannotatedTree
+              -- self rule
+              _annotatedTree =
+                  ArrayTypeName ann_ _typIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  ArrayTypeName ann_ _typIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  ArrayTypeName ann_ _typIoriginalTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _typOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _typOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _typOlib =
+                  _lhsIlib
+              ( _typIannotatedTree,_typIfixedUpIdentifiersTree,_typInamedType,_typIoriginalTree) =
+                  typ_ _typOcat _typOidenv _typOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOnamedType,_lhsOoriginalTree)))
+sem_TypeName_Prec2TypeName :: Annotation ->
+                              String ->
+                              Integer ->
+                              Integer ->
+                              T_TypeName 
+sem_TypeName_Prec2TypeName ann_ tn_ prec_ prec1_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOnamedType :: (Maybe Type)
+              _lhsOannotatedTree :: TypeName 
+              _lhsOfixedUpIdentifiersTree :: TypeName 
+              _lhsOoriginalTree :: TypeName 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 19, column 10)
+              _lhsOnamedType =
+                  etmt _tpe
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 20, column 10)
+              _lhsOannotatedTree =
+                  addTypeErrors (tes _tpe    ) _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 36, column 9)
+              _tpe =
+                  catLookupType _lhsIcat $ canonicalizeTypeName tn_
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 37, column 9)
+              _backTree =
+                  Prec2TypeName ann_ tn_ prec_ prec1_
+              -- self rule
+              _annotatedTree =
+                  Prec2TypeName ann_ tn_ prec_ prec1_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  Prec2TypeName ann_ tn_ prec_ prec1_
+              -- self rule
+              _originalTree =
+                  Prec2TypeName ann_ tn_ prec_ prec1_
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOnamedType,_lhsOoriginalTree)))
+sem_TypeName_PrecTypeName :: Annotation ->
+                             String ->
+                             Integer ->
+                             T_TypeName 
+sem_TypeName_PrecTypeName ann_ tn_ prec_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOnamedType :: (Maybe Type)
+              _lhsOannotatedTree :: TypeName 
+              _lhsOfixedUpIdentifiersTree :: TypeName 
+              _lhsOoriginalTree :: TypeName 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 19, column 10)
+              _lhsOnamedType =
+                  etmt _tpe
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 20, column 10)
+              _lhsOannotatedTree =
+                  addTypeErrors (tes _tpe    ) _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 33, column 9)
+              _tpe =
+                  catLookupType _lhsIcat $ canonicalizeTypeName tn_
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 34, column 9)
+              _backTree =
+                  PrecTypeName ann_ tn_ prec_
+              -- self rule
+              _annotatedTree =
+                  PrecTypeName ann_ tn_ prec_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  PrecTypeName ann_ tn_ prec_
+              -- self rule
+              _originalTree =
+                  PrecTypeName ann_ tn_ prec_
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOnamedType,_lhsOoriginalTree)))
+sem_TypeName_SetOfTypeName :: Annotation ->
+                              T_TypeName  ->
+                              T_TypeName 
+sem_TypeName_SetOfTypeName ann_ typ_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOnamedType :: (Maybe Type)
+              _lhsOannotatedTree :: TypeName 
+              _lhsOfixedUpIdentifiersTree :: TypeName 
+              _lhsOoriginalTree :: TypeName 
+              _typOcat :: Catalog
+              _typOidenv :: IDEnv
+              _typOlib :: LocalBindings
+              _typIannotatedTree :: TypeName 
+              _typIfixedUpIdentifiersTree :: TypeName 
+              _typInamedType :: (Maybe Type)
+              _typIoriginalTree :: TypeName 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 19, column 10)
+              _lhsOnamedType =
+                  etmt _tpe
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 20, column 10)
+              _lhsOannotatedTree =
+                  addTypeErrors (tes _tpe    ) _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 30, column 9)
+              _tpe =
+                  lmt _typInamedType >>=  Right . SetOfType
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 31, column 9)
+              _backTree =
+                  SetOfTypeName ann_ _typIannotatedTree
+              -- self rule
+              _annotatedTree =
+                  SetOfTypeName ann_ _typIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  SetOfTypeName ann_ _typIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  SetOfTypeName ann_ _typIoriginalTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _typOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _typOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _typOlib =
+                  _lhsIlib
+              ( _typIannotatedTree,_typIfixedUpIdentifiersTree,_typInamedType,_typIoriginalTree) =
+                  typ_ _typOcat _typOidenv _typOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOnamedType,_lhsOoriginalTree)))
+sem_TypeName_SimpleTypeName :: Annotation ->
+                               String ->
+                               T_TypeName 
+sem_TypeName_SimpleTypeName ann_ tn_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOnamedType :: (Maybe Type)
+              _lhsOannotatedTree :: TypeName 
+              _lhsOfixedUpIdentifiersTree :: TypeName 
+              _lhsOoriginalTree :: TypeName 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 19, column 10)
+              _lhsOnamedType =
+                  etmt _tpe
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 20, column 10)
+              _lhsOannotatedTree =
+                  addTypeErrors (tes _tpe    ) _backTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 24, column 9)
+              _tpe =
+                  catLookupType _lhsIcat $ canonicalizeTypeName tn_
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 25, column 9)
+              _backTree =
+                  SimpleTypeName ann_ tn_
+              -- self rule
+              _annotatedTree =
+                  SimpleTypeName ann_ tn_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  SimpleTypeName ann_ tn_
+              -- self rule
+              _originalTree =
+                  SimpleTypeName ann_ tn_
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOnamedType,_lhsOoriginalTree)))
+-- TypeNameList ------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         namedTypes           : [Maybe Type]
+         originalTree         : SELF 
+   alternatives:
+      alternative Cons:
+         child hd             : TypeName 
+         child tl             : TypeNameList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Nil:
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+type TypeNameList  = [TypeName ]
+-- cata
+sem_TypeNameList :: TypeNameList  ->
+                    T_TypeNameList 
+sem_TypeNameList list  =
+    (Prelude.foldr sem_TypeNameList_Cons sem_TypeNameList_Nil (Prelude.map sem_TypeName list) )
+-- semantic domain
+type T_TypeNameList  = Catalog ->
+                       IDEnv ->
+                       LocalBindings ->
+                       ( TypeNameList ,TypeNameList ,([Maybe Type]),TypeNameList )
+data Inh_TypeNameList  = Inh_TypeNameList {cat_Inh_TypeNameList :: Catalog,idenv_Inh_TypeNameList :: IDEnv,lib_Inh_TypeNameList :: LocalBindings}
+data Syn_TypeNameList  = Syn_TypeNameList {annotatedTree_Syn_TypeNameList :: TypeNameList ,fixedUpIdentifiersTree_Syn_TypeNameList :: TypeNameList ,namedTypes_Syn_TypeNameList :: ([Maybe Type]),originalTree_Syn_TypeNameList :: TypeNameList }
+wrap_TypeNameList :: T_TypeNameList  ->
+                     Inh_TypeNameList  ->
+                     Syn_TypeNameList 
+wrap_TypeNameList sem (Inh_TypeNameList _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOnamedTypes,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_TypeNameList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOnamedTypes _lhsOoriginalTree ))
+sem_TypeNameList_Cons :: T_TypeName  ->
+                         T_TypeNameList  ->
+                         T_TypeNameList 
+sem_TypeNameList_Cons hd_ tl_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOnamedTypes :: ([Maybe Type])
+              _lhsOannotatedTree :: TypeNameList 
+              _lhsOfixedUpIdentifiersTree :: TypeNameList 
+              _lhsOoriginalTree :: TypeNameList 
+              _hdOcat :: Catalog
+              _hdOidenv :: IDEnv
+              _hdOlib :: LocalBindings
+              _tlOcat :: Catalog
+              _tlOidenv :: IDEnv
+              _tlOlib :: LocalBindings
+              _hdIannotatedTree :: TypeName 
+              _hdIfixedUpIdentifiersTree :: TypeName 
+              _hdInamedType :: (Maybe Type)
+              _hdIoriginalTree :: TypeName 
+              _tlIannotatedTree :: TypeNameList 
+              _tlIfixedUpIdentifiersTree :: TypeNameList 
+              _tlInamedTypes :: ([Maybe Type])
+              _tlIoriginalTree :: TypeNameList 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/Drops.ag"(line 37, column 12)
+              _lhsOnamedTypes =
+                  _hdInamedType : _tlInamedTypes
+              -- self rule
+              _annotatedTree =
+                  (:) _hdIannotatedTree _tlIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  (:) _hdIoriginalTree _tlIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _hdOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _hdOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _hdOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _tlOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _tlOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _tlOlib =
+                  _lhsIlib
+              ( _hdIannotatedTree,_hdIfixedUpIdentifiersTree,_hdInamedType,_hdIoriginalTree) =
+                  hd_ _hdOcat _hdOidenv _hdOlib 
+              ( _tlIannotatedTree,_tlIfixedUpIdentifiersTree,_tlInamedTypes,_tlIoriginalTree) =
+                  tl_ _tlOcat _tlOidenv _tlOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOnamedTypes,_lhsOoriginalTree)))
+sem_TypeNameList_Nil :: T_TypeNameList 
+sem_TypeNameList_Nil  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOnamedTypes :: ([Maybe Type])
+              _lhsOannotatedTree :: TypeNameList 
+              _lhsOfixedUpIdentifiersTree :: TypeNameList 
+              _lhsOoriginalTree :: TypeNameList 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Ddl/Drops.ag"(line 38, column 11)
+              _lhsOnamedTypes =
+                  []
+              -- self rule
+              _annotatedTree =
+                  []
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  []
+              -- self rule
+              _originalTree =
+                  []
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOnamedTypes,_lhsOoriginalTree)))
+-- VarDef ------------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         def                  : (String,Maybe Type)
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+   alternatives:
+      alternative ParamAlias:
+         child ann            : {Annotation}
+         child name           : {String}
+         child i              : {Integer}
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative VarAlias:
+         child ann            : {Annotation}
+         child name           : {String}
+         child aliased        : {String}
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative VarDef:
+         child ann            : {Annotation}
+         child name           : {String}
+         child typ            : TypeName 
+         child value          : {Maybe ScalarExpr}
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+data VarDef  = ParamAlias (Annotation) (String) (Integer) 
+             | VarAlias (Annotation) (String) (String) 
+             | VarDef (Annotation) (String) (TypeName ) ((Maybe ScalarExpr)) 
+             deriving ( Data,Eq,Show,Typeable)
+-- cata
+sem_VarDef :: VarDef  ->
+              T_VarDef 
+sem_VarDef (ParamAlias _ann _name _i )  =
+    (sem_VarDef_ParamAlias _ann _name _i )
+sem_VarDef (VarAlias _ann _name _aliased )  =
+    (sem_VarDef_VarAlias _ann _name _aliased )
+sem_VarDef (VarDef _ann _name _typ _value )  =
+    (sem_VarDef_VarDef _ann _name (sem_TypeName _typ ) _value )
+-- semantic domain
+type T_VarDef  = Catalog ->
+                 IDEnv ->
+                 LocalBindings ->
+                 ( VarDef ,((String,Maybe Type)),VarDef ,VarDef )
+data Inh_VarDef  = Inh_VarDef {cat_Inh_VarDef :: Catalog,idenv_Inh_VarDef :: IDEnv,lib_Inh_VarDef :: LocalBindings}
+data Syn_VarDef  = Syn_VarDef {annotatedTree_Syn_VarDef :: VarDef ,def_Syn_VarDef :: ((String,Maybe Type)),fixedUpIdentifiersTree_Syn_VarDef :: VarDef ,originalTree_Syn_VarDef :: VarDef }
+wrap_VarDef :: T_VarDef  ->
+               Inh_VarDef  ->
+               Syn_VarDef 
+wrap_VarDef sem (Inh_VarDef _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOdef,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_VarDef _lhsOannotatedTree _lhsOdef _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
+sem_VarDef_ParamAlias :: Annotation ->
+                         String ->
+                         Integer ->
+                         T_VarDef 
+sem_VarDef_ParamAlias ann_ name_ i_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOdef :: ((String,Maybe Type))
+              _lhsOannotatedTree :: VarDef 
+              _lhsOfixedUpIdentifiersTree :: VarDef 
+              _lhsOoriginalTree :: VarDef 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Plpgsql/Block.ag"(line 14, column 18)
+              _lhsOdef =
+                  (name_, Nothing)
+              -- self rule
+              _annotatedTree =
+                  ParamAlias ann_ name_ i_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  ParamAlias ann_ name_ i_
+              -- self rule
+              _originalTree =
+                  ParamAlias ann_ name_ i_
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOdef,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+sem_VarDef_VarAlias :: Annotation ->
+                       String ->
+                       String ->
+                       T_VarDef 
+sem_VarDef_VarAlias ann_ name_ aliased_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOdef :: ((String,Maybe Type))
+              _lhsOannotatedTree :: VarDef 
+              _lhsOfixedUpIdentifiersTree :: VarDef 
+              _lhsOoriginalTree :: VarDef 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Plpgsql/Block.ag"(line 13, column 16)
+              _lhsOdef =
+                  (name_, Nothing)
+              -- self rule
+              _annotatedTree =
+                  VarAlias ann_ name_ aliased_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  VarAlias ann_ name_ aliased_
+              -- self rule
+              _originalTree =
+                  VarAlias ann_ name_ aliased_
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOdef,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+sem_VarDef_VarDef :: Annotation ->
+                     String ->
+                     T_TypeName  ->
+                     (Maybe ScalarExpr) ->
+                     T_VarDef 
+sem_VarDef_VarDef ann_ name_ typ_ value_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOdef :: ((String,Maybe Type))
+              _lhsOannotatedTree :: VarDef 
+              _lhsOfixedUpIdentifiersTree :: VarDef 
+              _lhsOoriginalTree :: VarDef 
+              _typOcat :: Catalog
+              _typOidenv :: IDEnv
+              _typOlib :: LocalBindings
+              _typIannotatedTree :: TypeName 
+              _typIfixedUpIdentifiersTree :: TypeName 
+              _typInamedType :: (Maybe Type)
+              _typIoriginalTree :: TypeName 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Plpgsql/Block.ag"(line 10, column 14)
+              _lhsOdef =
+                  (name_, if _typInamedType == Just (Pseudo Record)
+                          then Just (PgRecord Nothing)
+                          else _typInamedType)
+              -- self rule
+              _annotatedTree =
+                  VarDef ann_ name_ _typIannotatedTree value_
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  VarDef ann_ name_ _typIfixedUpIdentifiersTree value_
+              -- self rule
+              _originalTree =
+                  VarDef ann_ name_ _typIoriginalTree value_
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _typOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _typOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _typOlib =
+                  _lhsIlib
+              ( _typIannotatedTree,_typIfixedUpIdentifiersTree,_typInamedType,_typIoriginalTree) =
+                  typ_ _typOcat _typOidenv _typOlib 
+          in  ( _lhsOannotatedTree,_lhsOdef,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+-- VarDefList --------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         defs                 : [(String,Maybe Type)]
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+   alternatives:
+      alternative Cons:
+         child hd             : VarDef 
+         child tl             : VarDefList 
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Nil:
+         visit 0:
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+type VarDefList  = [VarDef ]
+-- cata
+sem_VarDefList :: VarDefList  ->
+                  T_VarDefList 
+sem_VarDefList list  =
+    (Prelude.foldr sem_VarDefList_Cons sem_VarDefList_Nil (Prelude.map sem_VarDef list) )
+-- semantic domain
+type T_VarDefList  = Catalog ->
+                     IDEnv ->
+                     LocalBindings ->
+                     ( VarDefList ,([(String,Maybe Type)]),VarDefList ,VarDefList )
+data Inh_VarDefList  = Inh_VarDefList {cat_Inh_VarDefList :: Catalog,idenv_Inh_VarDefList :: IDEnv,lib_Inh_VarDefList :: LocalBindings}
+data Syn_VarDefList  = Syn_VarDefList {annotatedTree_Syn_VarDefList :: VarDefList ,defs_Syn_VarDefList :: ([(String,Maybe Type)]),fixedUpIdentifiersTree_Syn_VarDefList :: VarDefList ,originalTree_Syn_VarDefList :: VarDefList }
+wrap_VarDefList :: T_VarDefList  ->
+                   Inh_VarDefList  ->
+                   Syn_VarDefList 
+wrap_VarDefList sem (Inh_VarDefList _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOdefs,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_VarDefList _lhsOannotatedTree _lhsOdefs _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
+sem_VarDefList_Cons :: T_VarDef  ->
+                       T_VarDefList  ->
+                       T_VarDefList 
+sem_VarDefList_Cons hd_ tl_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOdefs :: ([(String,Maybe Type)])
+              _lhsOannotatedTree :: VarDefList 
+              _lhsOfixedUpIdentifiersTree :: VarDefList 
+              _lhsOoriginalTree :: VarDefList 
+              _hdOcat :: Catalog
+              _hdOidenv :: IDEnv
+              _hdOlib :: LocalBindings
+              _tlOcat :: Catalog
+              _tlOidenv :: IDEnv
+              _tlOlib :: LocalBindings
+              _hdIannotatedTree :: VarDef 
+              _hdIdef :: ((String,Maybe Type))
+              _hdIfixedUpIdentifiersTree :: VarDef 
+              _hdIoriginalTree :: VarDef 
+              _tlIannotatedTree :: VarDefList 
+              _tlIdefs :: ([(String,Maybe Type)])
+              _tlIfixedUpIdentifiersTree :: VarDefList 
+              _tlIoriginalTree :: VarDefList 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Plpgsql/Block.ag"(line 17, column 12)
+              _lhsOdefs =
+                  _hdIdef : _tlIdefs
+              -- self rule
+              _annotatedTree =
+                  (:) _hdIannotatedTree _tlIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  (:) _hdIoriginalTree _tlIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _hdOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _hdOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _hdOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _tlOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _tlOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _tlOlib =
+                  _lhsIlib
+              ( _hdIannotatedTree,_hdIdef,_hdIfixedUpIdentifiersTree,_hdIoriginalTree) =
+                  hd_ _hdOcat _hdOidenv _hdOlib 
+              ( _tlIannotatedTree,_tlIdefs,_tlIfixedUpIdentifiersTree,_tlIoriginalTree) =
+                  tl_ _tlOcat _tlOidenv _tlOlib 
+          in  ( _lhsOannotatedTree,_lhsOdefs,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+sem_VarDefList_Nil :: T_VarDefList 
+sem_VarDefList_Nil  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOdefs :: ([(String,Maybe Type)])
+              _lhsOannotatedTree :: VarDefList 
+              _lhsOfixedUpIdentifiersTree :: VarDefList 
+              _lhsOoriginalTree :: VarDefList 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/Plpgsql/Block.ag"(line 18, column 11)
+              _lhsOdefs =
+                  []
+              -- self rule
+              _annotatedTree =
+                  []
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  []
+              -- self rule
+              _originalTree =
+                  []
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOdefs,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+-- WithQuery ---------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         catUpdates           : [CatalogUpdate]
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+   alternatives:
+      alternative WithQuery:
+         child ann            : {Annotation}
+         child name           : {String}
+         child colAliases     : {Maybe [String]}
+         child ex             : QueryExpr 
+         visit 0:
+            local tpe         : _
+            local backTree    : _
+            local attrs       : _
+            local catUpdates  : _
+            local statementType : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+data WithQuery  = WithQuery (Annotation) (String) ((Maybe [String])) (QueryExpr ) 
+                deriving ( Data,Eq,Show,Typeable)
+-- cata
+sem_WithQuery :: WithQuery  ->
+                 T_WithQuery 
+sem_WithQuery (WithQuery _ann _name _colAliases _ex )  =
+    (sem_WithQuery_WithQuery _ann _name _colAliases (sem_QueryExpr _ex ) )
+-- semantic domain
+type T_WithQuery  = Catalog ->
+                    IDEnv ->
+                    LocalBindings ->
+                    ( WithQuery ,([CatalogUpdate]),WithQuery ,WithQuery )
+data Inh_WithQuery  = Inh_WithQuery {cat_Inh_WithQuery :: Catalog,idenv_Inh_WithQuery :: IDEnv,lib_Inh_WithQuery :: LocalBindings}
+data Syn_WithQuery  = Syn_WithQuery {annotatedTree_Syn_WithQuery :: WithQuery ,catUpdates_Syn_WithQuery :: ([CatalogUpdate]),fixedUpIdentifiersTree_Syn_WithQuery :: WithQuery ,originalTree_Syn_WithQuery :: WithQuery }
+wrap_WithQuery :: T_WithQuery  ->
+                  Inh_WithQuery  ->
+                  Syn_WithQuery 
+wrap_WithQuery sem (Inh_WithQuery _lhsIcat _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIidenv _lhsIlib 
+     in  (Syn_WithQuery _lhsOannotatedTree _lhsOcatUpdates _lhsOfixedUpIdentifiersTree _lhsOoriginalTree ))
+sem_WithQuery_WithQuery :: Annotation ->
+                           String ->
+                           (Maybe [String]) ->
+                           T_QueryExpr  ->
+                           T_WithQuery 
+sem_WithQuery_WithQuery ann_ name_ colAliases_ ex_  =
+    (\ _lhsIcat
+       _lhsIidenv
+       _lhsIlib ->
+         (let _exOcsql :: LocalBindings
+              _exOexpectedTypes :: ([Maybe Type])
+              _lhsOannotatedTree :: WithQuery 
+              _lhsOfixedUpIdentifiersTree :: WithQuery 
+              _lhsOoriginalTree :: WithQuery 
+              _lhsOcatUpdates :: ([CatalogUpdate])
+              _exOcat :: Catalog
+              _exOidenv :: IDEnv
+              _exOlib :: LocalBindings
+              _exIannotatedTree :: QueryExpr 
+              _exIcidenv :: IDEnv
+              _exIfixedUpIdentifiersTree :: QueryExpr 
+              _exIlibUpdates :: ([LocalBindingsUpdate])
+              _exIoriginalTree :: QueryExpr 
+              _exIuType :: (Maybe [(String,Type)])
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 131, column 17)
+              _exOcsql =
+                  emptyBindings
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 272, column 9)
+              _tpe =
+                  Right $ Pseudo Void
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 273, column 9)
+              _backTree =
+                  WithQuery ann_ name_ colAliases_ _exIannotatedTree
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 274, column 9)
+              _attrs =
+                  maybe [] id $ _exIuType
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 275, column 9)
+              _catUpdates =
+                  [CatCreateView name_ _attrs    ]
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 276, column 9)
+              _statementType =
+                  Nothing
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/ParameterizedStatements.ag"(line 182, column 17)
+              _exOexpectedTypes =
+                  []
+              -- self rule
+              _annotatedTree =
+                  WithQuery ann_ name_ colAliases_ _exIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  WithQuery ann_ name_ colAliases_ _exIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  WithQuery ann_ name_ colAliases_ _exIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (from local)
+              _lhsOcatUpdates =
+                  _catUpdates
+              -- copy rule (down)
+              _exOcat =
+                  _lhsIcat
+              -- copy rule (down)
+              _exOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _exOlib =
+                  _lhsIlib
+              ( _exIannotatedTree,_exIcidenv,_exIfixedUpIdentifiersTree,_exIlibUpdates,_exIoriginalTree,_exIuType) =
+                  ex_ _exOcat _exOcsql _exOexpectedTypes _exOidenv _exOlib 
+          in  ( _lhsOannotatedTree,_lhsOcatUpdates,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree)))
+-- WithQueryList -----------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         cat                  : Catalog
+         catUpdates           : [CatalogUpdate]
+         idenv                : IDEnv
+         lib                  : LocalBindings
+      synthesized attributes:
+         annotatedTree        : SELF 
+         fixedUpIdentifiersTree : SELF 
+         originalTree         : SELF 
+         producedCat          : Catalog
+   alternatives:
+      alternative Cons:
+         child hd             : WithQuery 
+         child tl             : WithQueryList 
+         visit 0:
+            local newCat      : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+      alternative Nil:
+         visit 0:
+            local newCat      : _
+            local annotatedTree : _
+            local fixedUpIdentifiersTree : _
+            local originalTree : _
+-}
+type WithQueryList  = [WithQuery ]
+-- cata
+sem_WithQueryList :: WithQueryList  ->
+                     T_WithQueryList 
+sem_WithQueryList list  =
+    (Prelude.foldr sem_WithQueryList_Cons sem_WithQueryList_Nil (Prelude.map sem_WithQuery list) )
+-- semantic domain
+type T_WithQueryList  = Catalog ->
+                        ([CatalogUpdate]) ->
+                        IDEnv ->
+                        LocalBindings ->
+                        ( WithQueryList ,WithQueryList ,WithQueryList ,Catalog)
+data Inh_WithQueryList  = Inh_WithQueryList {cat_Inh_WithQueryList :: Catalog,catUpdates_Inh_WithQueryList :: ([CatalogUpdate]),idenv_Inh_WithQueryList :: IDEnv,lib_Inh_WithQueryList :: LocalBindings}
+data Syn_WithQueryList  = Syn_WithQueryList {annotatedTree_Syn_WithQueryList :: WithQueryList ,fixedUpIdentifiersTree_Syn_WithQueryList :: WithQueryList ,originalTree_Syn_WithQueryList :: WithQueryList ,producedCat_Syn_WithQueryList :: Catalog}
+wrap_WithQueryList :: T_WithQueryList  ->
+                      Inh_WithQueryList  ->
+                      Syn_WithQueryList 
+wrap_WithQueryList sem (Inh_WithQueryList _lhsIcat _lhsIcatUpdates _lhsIidenv _lhsIlib )  =
+    (let ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOproducedCat) = sem _lhsIcat _lhsIcatUpdates _lhsIidenv _lhsIlib 
+     in  (Syn_WithQueryList _lhsOannotatedTree _lhsOfixedUpIdentifiersTree _lhsOoriginalTree _lhsOproducedCat ))
+sem_WithQueryList_Cons :: T_WithQuery  ->
+                          T_WithQueryList  ->
+                          T_WithQueryList 
+sem_WithQueryList_Cons hd_ tl_  =
+    (\ _lhsIcat
+       _lhsIcatUpdates
+       _lhsIidenv
+       _lhsIlib ->
+         (let _hdOcat :: Catalog
+              _tlOcat :: Catalog
+              _lhsOproducedCat :: Catalog
+              _tlOcatUpdates :: ([CatalogUpdate])
+              _lhsOannotatedTree :: WithQueryList 
+              _lhsOfixedUpIdentifiersTree :: WithQueryList 
+              _lhsOoriginalTree :: WithQueryList 
+              _hdOidenv :: IDEnv
+              _hdOlib :: LocalBindings
+              _tlOidenv :: IDEnv
+              _tlOlib :: LocalBindings
+              _hdIannotatedTree :: WithQuery 
+              _hdIcatUpdates :: ([CatalogUpdate])
+              _hdIfixedUpIdentifiersTree :: WithQuery 
+              _hdIoriginalTree :: WithQuery 
+              _tlIannotatedTree :: WithQueryList 
+              _tlIfixedUpIdentifiersTree :: WithQueryList 
+              _tlIoriginalTree :: WithQueryList 
+              _tlIproducedCat :: Catalog
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 256, column 9)
+              _newCat =
+                  fromRight _lhsIcat $ updateCatalog _lhsIcat _lhsIcatUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 258, column 9)
+              _hdOcat =
+                  _newCat
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 259, column 9)
+              _tlOcat =
+                  _newCat
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 263, column 9)
+              _lhsOproducedCat =
+                  _tlIproducedCat
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 266, column 9)
+              _tlOcatUpdates =
+                  _hdIcatUpdates
+              -- self rule
+              _annotatedTree =
+                  (:) _hdIannotatedTree _tlIannotatedTree
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  (:) _hdIfixedUpIdentifiersTree _tlIfixedUpIdentifiersTree
+              -- self rule
+              _originalTree =
+                  (:) _hdIoriginalTree _tlIoriginalTree
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+              -- copy rule (down)
+              _hdOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _hdOlib =
+                  _lhsIlib
+              -- copy rule (down)
+              _tlOidenv =
+                  _lhsIidenv
+              -- copy rule (down)
+              _tlOlib =
+                  _lhsIlib
+              ( _hdIannotatedTree,_hdIcatUpdates,_hdIfixedUpIdentifiersTree,_hdIoriginalTree) =
+                  hd_ _hdOcat _hdOidenv _hdOlib 
+              ( _tlIannotatedTree,_tlIfixedUpIdentifiersTree,_tlIoriginalTree,_tlIproducedCat) =
+                  tl_ _tlOcat _tlOcatUpdates _tlOidenv _tlOlib 
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOproducedCat)))
+sem_WithQueryList_Nil :: T_WithQueryList 
+sem_WithQueryList_Nil  =
+    (\ _lhsIcat
+       _lhsIcatUpdates
+       _lhsIidenv
+       _lhsIlib ->
+         (let _lhsOproducedCat :: Catalog
+              _lhsOannotatedTree :: WithQueryList 
+              _lhsOfixedUpIdentifiersTree :: WithQueryList 
+              _lhsOoriginalTree :: WithQueryList 
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 256, column 9)
+              _newCat =
+                  fromRight _lhsIcat $ updateCatalog _lhsIcat _lhsIcatUpdates
+              -- "src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryStatement.ag"(line 268, column 9)
+              _lhsOproducedCat =
+                  _newCat
+              -- self rule
+              _annotatedTree =
+                  []
+              -- self rule
+              _fixedUpIdentifiersTree =
+                  []
+              -- self rule
+              _originalTree =
+                  []
+              -- self rule
+              _lhsOannotatedTree =
+                  _annotatedTree
+              -- self rule
+              _lhsOfixedUpIdentifiersTree =
+                  _fixedUpIdentifiersTree
+              -- self rule
+              _lhsOoriginalTree =
+                  _originalTree
+          in  ( _lhsOannotatedTree,_lhsOfixedUpIdentifiersTree,_lhsOoriginalTree,_lhsOproducedCat)))
diff --git a/src/Database/HsSqlPpp/Internals/Catalog/CatalogInternal.lhs b/src/Database/HsSqlPpp/Internals/Catalog/CatalogInternal.lhs
new file mode 100644
--- /dev/null
+++ b/src/Database/HsSqlPpp/Internals/Catalog/CatalogInternal.lhs
@@ -0,0 +1,531 @@
+
+This module contains the implementation of the Catalog data types
+and functions, and provides the api for the other type checking
+modules.
+
+> {-# LANGUAGE DeriveDataTypeable #-}
+>
+> module Database.HsSqlPpp.Internals.Catalog.CatalogInternal
+>     (
+>      Catalog
+>     ,CastContext(..)
+>     ,CompositeFlavour(..)
+>     ,relationComposites
+>     ,CompositeDef
+>     ,FunctionPrototype
+>     ,DomainDefinition
+>     ,FunFlav(..)
+>     ,emptyCatalog
+>     ,defaultCatalog
+>     ,CatalogUpdate(..)
+>     ,ppCatUpdate
+>     ,updateCatalog
+>     ,deconstructCatalog
+>     -- type checker stuff
+>     ,catCompositeDef
+>     ,catCompositeAttrsPair
+>     ,catCompositeAttrs
+>     ,catCompositePublicAttrs
+>     ,catTypeCategory
+>     ,catPreferredType
+>     ,catCast
+>     ,catDomainBaseType
+>     ,catLookupFns
+>     ,catTypeExists
+>     ,catLookupType
+>     ,OperatorType(..)
+>     ,getOperatorType
+>     ,isOperatorName
+>     -- comparing catalogs
+>     ,CatalogDiff(..)
+>     ,compareCatalogs
+>     ,ppCatDiff
+>     ) where
+>
+> import Control.Monad
+> import Data.List
+> import Data.Data
+> -- import Debug.Trace
+> import Data.Char
+>
+> import Database.HsSqlPpp.Internals.TypeType
+> import Database.HsSqlPpp.Utils.Utils
+>
+> -- | The main datatype, this holds the catalog and context
+> -- information to type check against.
+> data Catalog = Catalog
+>                    {catTypeNames :: [(String, Type)]
+>                    ,catDomainDefs :: [DomainDefinition]
+>                    ,catCasts :: [(Type,Type,CastContext)]
+>                    ,catTypeCategories :: [(Type,String,Bool)]
+>                    ,catPrefixOperators :: [FunctionPrototype]
+>                    ,catPostfixOperators :: [FunctionPrototype]
+>                    ,catBinaryOperators :: [FunctionPrototype]
+>                    ,catFunctions :: [FunctionPrototype]
+>                    ,catAggregates :: [FunctionPrototype]
+>                    ,catWindowFunctions :: [FunctionPrototype]
+>                    ,catAttrDefs :: [CompositeDef]
+>                    ,catUpdates :: [CatalogUpdate]}
+>                    deriving Show
+>
+> -- | Represents an empty catalog. This doesn't contain things
+> -- like the \'and\' operator, 'defaultCatalog' contains these.
+> emptyCatalog :: Catalog
+> emptyCatalog = Catalog [] [] [] [] [] [] [] [] [] [] [] []
+>
+> -- | Represents what you probably want to use as a starting point if
+> -- you are building an catalog from scratch. It contains
+> -- information on built in function like things that aren't in the
+> -- PostgreSQL catalog, such as greatest, coalesce, keyword operators
+> -- like \'and\', etc..
+> defaultCatalog :: Catalog
+> defaultCatalog =
+>   emptyCatalog {catTypeNames = pseudoTypes
+>                ,catBinaryOperators = pe : keywordOperatorTypes
+>                ,catFunctions = specialFunctionTypes}
+>   where
+>     pe = ("=", [Pseudo AnyElement, Pseudo AnyElement], typeBool, False)
+>
+> -- | Use to note what the flavour of a cast is, i.e. if/when it can
+> -- be used implicitly.
+> data CastContext = ImplicitCastContext
+>                  | AssignmentCastContext
+>                  | ExplicitCastContext
+>                    deriving (Eq,Show,Ord,Typeable,Data)
+>
+> -- | Used to distinguish between standalone composite types, and
+> -- automatically generated ones, generated from a table or view
+> -- respectively.
+> data CompositeFlavour = Composite | TableComposite | ViewComposite
+>                         deriving (Eq,Ord,Show)
+>
+> relationComposites :: [CompositeFlavour]
+> relationComposites = [TableComposite,ViewComposite]
+>
+> -- | Provides the definition of a composite type. The components are
+> -- composite (or table or view) name, the flavour of the composite,
+> -- the types of the composite attributes, and the types of the
+> -- system columns iff the composite represents a table type (the
+> -- third and fourth components are always 'CompositeType's).
+> type CompositeDef = (String, CompositeFlavour, Type, Type)
+>
+> -- | The components are: function (or operator) name, argument
+> -- types, return type and is variadic.
+> type FunctionPrototype = (String, [Type], Type, Bool)
+>
+> -- | The components are domain type, base type (todo: add check
+> -- constraint).
+> type DomainDefinition = (Type,Type)
+>
+> data CatalogUpdate =
+>     -- | add a new scalar type with the name given, also creates
+>     -- an array type automatically
+>     CatCreateScalar Type String Bool
+>     -- | add a new domain to the catalog
+>   | CatCreateDomain Type Type
+>     -- | add a new composite type to the catalog
+>   | CatCreateComposite String [(String,Type)]
+>     -- | add a new cast to the catalog
+>   | CatCreateCast Type Type CastContext
+>     -- | add a new table to the catalog with the given public and private columns
+>     -- also creates the composite type to go with this table
+>   | CatCreateTable String [(String,Type)] [(String,Type)]
+>     -- | add the view to the catalog, using the column names and types supplied
+>   | CatCreateView String [(String,Type)]
+>     -- | add a new function to the catalog
+>   | CatCreateFunction FunFlav String [Type] Type Bool
+>     -- | drop a function from the catalog
+>   | CatDropFunction Bool String [Type]
+>     deriving (Eq,Ord,Typeable,Data,Show)
+>
+> -- | attempt to show a readable representation of a 'CatalogUpdate' value
+> ppCatUpdate :: CatalogUpdate -> String
+> ppCatUpdate (CatCreateScalar t c p) =
+>   "CatCreateScalar " ++ show t ++ "(" ++ c ++ "," ++ show p ++ ")"
+> ppCatUpdate (CatCreateDomain t b) =
+>   "CatCreateDomain " ++ show t ++ " as " ++ show b
+> ppCatUpdate (CatCreateComposite nm flds) =
+>   "CatCreateComposite " ++ nm ++ showFlds flds
+> ppCatUpdate (CatCreateCast s t ctx) =
+>   "CatCreateCast " ++ show s ++ "->" ++ show t ++ " " ++ show ctx
+> ppCatUpdate (CatCreateTable nm flds1 flds2) =
+>   "CatCreateTable " ++ nm ++ showFlds flds1 ++ showFlds flds2
+> ppCatUpdate (CatCreateView nm flds) =
+>   "CatCreateView " ++ nm ++ showFlds flds
+> ppCatUpdate (CatCreateFunction flav nm args ret vdc) =
+>   "CatCreateFunction " ++ show flav ++ " " ++ nm
+>   ++ " returns " ++ show ret
+>   ++ "(" ++ intercalate "," (map show args) ++ ")"
+>   ++ if vdc then " variadic" else ""
+> ppCatUpdate (CatDropFunction _ nm args) =
+>   "CatDropFunction " ++ nm ++ "(" ++ show args ++ ")"
+>
+> showFlds :: [(String,Type)] -> String
+> showFlds flds = "(\n" ++ sfs flds ++ ")"
+>                 where
+>                   sfs ((nm,t):fs) = "    " ++ show nm
+>                                     ++ " " ++ show t ++ "\n" ++ sfs fs
+>                   sfs [] = ""
+>
+> data FunFlav = FunPrefix | FunPostfix | FunBinary
+>              | FunName | FunAgg | FunWindow
+>                deriving (Eq,Show,Ord,Typeable,Data)
+>
+> -- | Applies a list of 'CatalogUpdate's to an 'Catalog' value
+> -- to produce a new Catalog value.
+> updateCatalog :: Catalog
+>                   -> [CatalogUpdate]
+>                   -> Either [TypeError] Catalog
+> updateCatalog cat' eus =
+>   foldM updateCat' (cat' {catUpdates = catUpdates cat' ++ eus}) eus
+>   where
+>     updateCat' cat (CatCreateScalar ty catl pref) = do
+>       errorWhen (not allowed)
+>         [BadCatalogUpdate $ "can only add scalar types\
+>                             \this way, got " ++ show ty]
+>       let ScalarType nm = ty
+>       return $ addTypeWithArray cat nm ty catl pref
+>       where
+>         allowed = case ty of
+>                           ScalarType _ -> True
+>                           _ -> False
+>
+>     updateCat' cat (CatCreateDomain ty baseTy) = do
+>       errorWhen (not allowed)
+>         [BadCatalogUpdate $ "can only add domain types\
+>                             \this way, got " ++ show ty]
+>       errorWhen (not baseAllowed)
+>         [BadCatalogUpdate $ "can only add domain types\
+>                                 \based on scalars, got "
+>                                 ++ show baseTy]
+>       let DomainType nm = ty
+>       catl <- catTypeCategory cat baseTy
+>       return (addTypeWithArray cat nm ty catl False) {
+>                              catDomainDefs =
+>                                (ty,baseTy):catDomainDefs cat
+>                              ,catCasts =
+>                                (ty,baseTy,ImplicitCastContext):catCasts cat}
+>       where
+>         allowed = case ty of
+>                           DomainType _ -> True
+>                           _ -> False
+>         baseAllowed = case baseTy of
+>                                   ScalarType _ -> True
+>                                   _ -> False
+>     updateCat' cat (CatCreateComposite nm flds) =
+>       return $ (addTypeWithArray cat nm (NamedCompositeType nm) "C" False) {
+>                   catAttrDefs =
+>                     (nm,Composite,CompositeType flds, CompositeType [])
+>                     : catAttrDefs cat}
+>
+>     updateCat' cat (CatCreateCast src tgt ctx) =
+>       return $ cat {catCasts = (src,tgt,ctx):catCasts cat}
+>
+>     updateCat' cat (CatCreateTable nm attrs sysAttrs) = do
+>       checkTypeDoesntExist cat nm (NamedCompositeType nm)
+>       return $ (addTypeWithArray cat nm
+>                   (NamedCompositeType nm) "C" False) {
+>                   catAttrDefs =
+>                     (nm,TableComposite
+>                     ,CompositeType attrs
+>                     , CompositeType sysAttrs)
+>                     : catAttrDefs cat}
+>
+>     updateCat' cat (CatCreateView nm attrs) = do
+>       checkTypeDoesntExist cat nm (NamedCompositeType nm)
+>       return $ (addTypeWithArray cat nm
+>                   (NamedCompositeType nm) "C" False) {
+>                   catAttrDefs =
+>                     (nm,ViewComposite,CompositeType attrs, CompositeType [])
+>                     : catAttrDefs cat}
+>
+>     updateCat' cat (CatCreateFunction f nm args ret vdc) =
+>         return $ case f of
+>           FunPrefix -> cat {catPrefixOperators =
+>                               fp : catPrefixOperators cat}
+>           FunPostfix -> cat {catPostfixOperators =
+>                                fp : catPostfixOperators cat}
+>           FunBinary -> cat {catBinaryOperators =
+>                               fp : catBinaryOperators cat}
+>           FunAgg -> cat {catAggregates =
+>                            fp : catAggregates cat}
+>           FunWindow -> cat {catWindowFunctions =
+>                               fp : catWindowFunctions cat}
+>           FunName -> cat {catFunctions =
+>                             fp : catFunctions cat}
+>         where fp = (nm,args,ret,vdc)
+>
+>     updateCat' cat (CatDropFunction _ifexists nm args) = do
+>         let matches =  filter matchingFn (catFunctions cat)
+>         errorWhen (null matches)
+>                   [BadCatalogUpdate
+>                    $ "couldn't find function to drop "
+>                      ++ show nm ++ "(" ++ show args++")"]
+>         errorWhen (length matches > 1)
+>                   [BadCatalogUpdate
+>                    $ "multiple matching functions to drop "
+>                      ++ show nm ++ "(" ++ show args++")"]
+>         return cat {catFunctions = filter (not . matchingFn)
+>                                           (catFunctions cat)
+>                    ,catUpdates = filter (not.matchingUpdate)
+>                                         (catUpdates cat)}
+>         where
+>           matchingFn (nm1,a1,_,_) =
+>             map toLower nm == map toLower nm1 && args == a1
+>           matchingUpdate (CatDropFunction _ nm2 a2)
+>                          | map toLower nm2 == map toLower nm
+>                            && a2 == args = True
+>           matchingUpdate (CatCreateFunction _ nm2 a2 _ _)
+>                          | map toLower nm2 == map toLower nm
+>                            && a2 == args = True
+>           matchingUpdate _ = False
+
+todo:
+look for matching function in list, if not found then error
+remove from list, and remove from update list
+
+>     addTypeWithArray cat nm ty catl pref =
+>       cat {catTypeNames =
+>                ('_':nm,ArrayType ty)
+>                : (nm,ty)
+>                : catTypeNames cat
+>           ,catTypeCategories =
+>                (ArrayType ty,"A",False)
+>                : (ty,catl,pref)
+>                : catTypeCategories cat}
+>     checkTypeDoesntExist cat nm ty = do
+>         errorWhen (any (==nm) $ map fst $ catTypeNames cat)
+>             [TypeAlreadyExists ty]
+>         errorWhen (any (==ty) $ map snd $ catTypeNames cat)
+>             [TypeAlreadyExists ty]
+>         return ()
+> {-
+>  | Takes part an 'Catalog' value to produce a list of 'CatalogUpdate's.
+>  You can use this to look inside the Catalog data type e.g. if you want to
+>  examine a catalog. It should be the case that:
+>  @
+>   updateCatalog emptyCatalog (deconstructCatalog cat) = cat
+>  @ -}
+> deconstructCatalog :: Catalog -> [CatalogUpdate]
+> deconstructCatalog = catUpdates
+
+--------------------------------------------------------------------------------
+
+= type checking stuff
+
+> catCompositeDef :: Catalog -> [CompositeFlavour] -> String
+>                 -> Either [TypeError] CompositeDef
+> catCompositeDef cat flvs nm = do
+>   let c = filter m $ catAttrDefs cat
+>   errorWhen (null c)
+>             [UnrecognisedRelation nm]
+>   case c of
+>     (_,fl1,r,s):[] -> return (nm,fl1,r,s)
+>     _ -> Left [InternalError $ "problem getting attributes for: "
+>                                ++ show nm ++ ", " ++ show c]
+>   where
+>     m (n,t,_,_) = n == nm && (null flvs || t `elem` flvs)
+>
+> catCompositeAttrsPair :: Catalog -> [CompositeFlavour] -> String
+>                       -> Either [TypeError] ([(String,Type)],[(String,Type)])
+> catCompositeAttrsPair cat flvs ty = do
+>    (_,_,CompositeType a,CompositeType b) <- catCompositeDef cat flvs ty
+>    return (a,b)
+>
+> catCompositeAttrs :: Catalog -> [CompositeFlavour] -> String
+>                   -> Either [TypeError] [(String,Type)]
+> catCompositeAttrs cat flvs ty = do
+>   (a,b) <- catCompositeAttrsPair cat flvs ty
+>   return $ a ++ b
+>
+> catCompositePublicAttrs :: Catalog -> [CompositeFlavour] -> String
+>                   -> Either [TypeError] [(String,Type)]
+> catCompositePublicAttrs cat flvs ty = do
+>   (a,_) <- catCompositeAttrsPair cat flvs ty
+>   return a
+>
+> catTypeCategory :: Catalog -> Type -> Either [TypeError] String
+> catTypeCategory cat ty =
+>   fmap fst $ catGetCategoryInfo cat ty
+>
+> catPreferredType :: Catalog -> Type -> Either [TypeError] Bool
+> catPreferredType cat ty =
+>   fmap snd $ catGetCategoryInfo cat ty
+>
+> catCast :: Catalog -> CastContext -> Type -> Type -> Either [TypeError] Bool
+> catCast cat ctx from to = {-trace ("check cast " ++ show from ++ show to) $-}
+>     case from of
+>       t@(DomainType _) -> do
+>                 baseType <- catDomainBaseType cat t
+>                 cc <- catCast cat ctx baseType to
+>                 return $ (baseType == to) ||
+>                                (cc ||
+>                                   any (== (from, to, ctx)) (catCasts cat))
+>       _ -> Right $ any (==(from,to,ctx)) (catCasts cat)
+>
+> catDomainBaseType :: Catalog -> Type -> Either [TypeError] Type
+> catDomainBaseType cat ty =
+>   --check type is domain, check it exists in main list
+>   case lookup ty (catDomainDefs cat) of
+>       Nothing -> Left [DomainDefNotFound ty]
+>       Just t -> Right t
+>
+> catLookupFns :: Catalog -> String -> [FunctionPrototype]
+> catLookupFns cat name =
+>     filter (\(nm,_,_,_) -> map toLower nm == map toLower name) catGetAllFns
+>     where
+>     catGetAllFns =
+>         concat [catPrefixOperators cat
+>                ,catPostfixOperators cat
+>                ,catBinaryOperators cat
+>                ,catFunctions cat
+>                ,catAggregates cat
+>                ,catWindowFunctions cat]
+
+== internal support for type checker fns above
+
+> catGetCategoryInfo :: Catalog -> Type -> Either [TypeError] (String, Bool)
+> catGetCategoryInfo cat ty =
+>   case ty of
+>     SetOfType _ -> Right ("", False)
+>     AnonymousRecordType _ -> Right ("", False)
+>     ArrayType (Pseudo _) -> Right ("A",False)
+>     Pseudo _ -> Right ("P",False)
+>     _ -> let l = filter (\(t,_,_) -> ty == t) $ catTypeCategories cat
+>          in if null l
+>               then Left [InternalError $ "no type category for " ++ show ty]
+>               else let (_,c,p):_ =l
+>                    in Right (c,p)
+>
+> catTypeExists :: Catalog -> Type -> Either [TypeError] Type
+> catTypeExists cat t =
+>     errorWhen (t `notElem` map snd (catTypeNames cat))
+>               [UnknownTypeError t] >>
+>     Right t
+>
+> catLookupType :: Catalog -> String -> Either [TypeError] Type
+> catLookupType cat name =
+>     liftME [UnknownTypeName name] $
+>       lookup name (catTypeNames cat)
+>
+
+================================================================================
+
+= built in stuff
+
+keyword operators, all of these are built in and don't appear in any
+postgresql catalog
+
+This is wrong, these need to be separated into prefix, postfix, binary
+
+> keywordOperatorTypes :: [FunctionPrototype]
+> keywordOperatorTypes = [
+>   ("!and", [typeBool, typeBool], typeBool, False)
+>  ,("!or", [typeBool, typeBool], typeBool, False)
+>  ,("!like", [ScalarType "text", ScalarType "text"], typeBool, False)
+>  ,("!like", [ScalarType "char", ScalarType "char"], typeBool, False)
+>  ,("!like", [ScalarType "varchar", ScalarType "varchar"], typeBool, False)
+>  ,("!notlike", [ScalarType "text", ScalarType "text"], typeBool, False)
+>  ,("!notlike", [ScalarType "char", ScalarType "char"], typeBool, False)
+>  ,("!notlike", [ScalarType "varchar", ScalarType "varchar"], typeBool, False)
+>  ,("!not", [typeBool], typeBool, False)
+>  ,("!isnull", [Pseudo AnyElement], typeBool, False)
+>  ,("!isnotnull", [Pseudo AnyElement], typeBool, False)
+>  ,("!arrayctor", [ArrayType $ Pseudo AnyElement], Pseudo AnyArray, True)
+>  ,("!between", [Pseudo AnyElement
+>                ,Pseudo AnyElement
+>                ,Pseudo AnyElement], typeBool, False)
+>  ,("!substring",[ScalarType "text",typeInt,typeInt],ScalarType "text",False)
+>  ,("!substring",[ScalarType "varchar",typeInt,typeInt],ScalarType "varchar",False)
+>  ,("!substring",[ScalarType "char",typeInt,typeInt],ScalarType "char",False)
+>  ,("!arraysub", [Pseudo AnyArray,typeInt], Pseudo AnyElement, False)
+>  ]
+>
+> -- these look like functions, but don't appear in the postgresql catalog.
+>
+> specialFunctionTypes :: [FunctionPrototype]
+> specialFunctionTypes = [
+>   ("coalesce", [ArrayType $ Pseudo AnyElement], Pseudo AnyElement, True)
+>  ,("nullif", [Pseudo AnyElement, Pseudo AnyElement], Pseudo AnyElement,False)
+>  ,("greatest", [ArrayType $ Pseudo AnyElement], Pseudo AnyElement,True)
+>  ,("least", [ArrayType $ Pseudo AnyElement], Pseudo AnyElement,True)
+>  ]
+>
+> pseudoTypes :: [(String, Type)]
+> pseudoTypes =
+>     [("any",Pseudo Any)
+>     ,("anyarray",Pseudo AnyArray)
+>     ,("anyelement",Pseudo AnyElement)
+>     ,("anyenum",Pseudo AnyEnum)
+>     ,("anynonarray",Pseudo AnyNonArray)
+>     ,("cstring",Pseudo Cstring)
+>     ,("record",Pseudo Record)
+>     ,("trigger",Pseudo Trigger)
+>     ,("void",Pseudo Void)
+>     ,("_cstring",ArrayType $ Pseudo Cstring)
+>     ,("_record",ArrayType $ Pseudo Record)
+>     --,Pseudo Internal
+>     --,Pseudo LanguageHandler
+>     --,Pseudo Opaque
+>     ]
+
+================================================================================
+
+= getOperatorType
+
+used by the pretty printer, not sure this is a very good design
+
+for now, assume that all the overloaded operators that have the
+same name are all either binary, prefix or postfix, otherwise the
+getoperatortype would need the types of the arguments to determine
+the operator type, and the parser would have to be a lot cleverer
+although, parsec handles - being unary and binary without breaking
+a sweat, so maybe this isn't too difficult?
+
+this is why binary @ operator isn't currently supported
+
+> data OperatorType = BinaryOp | PrefixOp | PostfixOp
+>                   deriving (Eq,Show)
+>
+> getOperatorType :: Catalog -> String -> Either [TypeError] OperatorType
+> getOperatorType cat s =
+>   case () of
+>           _ | s `elem` ["!and", "!or","!like","!notlike","."] -> Right BinaryOp
+>             | s `elem` ["!not"] -> Right PrefixOp
+>             | s `elem` ["!isnull", "!isnotnull"] -> Right PostfixOp
+>             | any (\(x,_,_,_) -> x == s) (catBinaryOperators cat) ->
+>                       Right BinaryOp
+>             | any (\(x,_,_,_) -> x == s || (x=="-" && s=="u-"))
+>                   (catPrefixOperators cat) ->
+>                       Right PrefixOp
+>             | any (\(x,_,_,_) -> x == s) (catPostfixOperators cat) ->
+>                       Right PostfixOp
+>             | otherwise ->
+>                 Left [InternalError $ "don't know flavour of operator " ++ s]
+>
+> isOperatorName :: String -> Bool
+> isOperatorName = any (`elem` "+-*/<>=~!@#%^&|`?.")
+
+================================================================================
+
+> -- | items in first catalog and not second, items in second and not first.
+> data CatalogDiff = CatalogDiff [CatalogUpdate] [CatalogUpdate]
+>                deriving Show
+>
+> -- | find differences between two catalogs
+> compareCatalogs :: Catalog -> Catalog -> Catalog -> CatalogDiff
+> compareCatalogs base start end =
+>         let baseCatBits = deconstructCatalog base
+>             startCatBits = deconstructCatalog start \\ baseCatBits
+>             endCatBits = deconstructCatalog end \\ baseCatBits
+>             missing = sort $ endCatBits \\ startCatBits
+>             extras = sort $ startCatBits \\ endCatBits
+>         in CatalogDiff missing extras
+>
+> -- | print a catdiff in a more human readable way than show.
+> ppCatDiff :: CatalogDiff -> String
+> ppCatDiff (CatalogDiff missing extr) =
+>     "\nmissing:\n"
+>     ++ intercalate "\n" (map ppCatUpdate missing)
+>     ++ "\nextra:\n"
+>     ++ intercalate "\n" (map ppCatUpdate extr)
diff --git a/src/Database/HsSqlPpp/Internals/Catalog/DefaultTemplate1Catalog.lhs b/src/Database/HsSqlPpp/Internals/Catalog/DefaultTemplate1Catalog.lhs
new file mode 100644
--- /dev/null
+++ b/src/Database/HsSqlPpp/Internals/Catalog/DefaultTemplate1Catalog.lhs
@@ -0,0 +1,13044 @@
+
+
+
+
+This file is auto generated, to regenerate run
+MUMBLE MUMBLE SOMETHING
+
+from the project root (i.e. where the cabal file is located).
+
+> module Database.HsSqlPpp.Internals.Catalog.DefaultTemplate1Catalog
+>      (defaultTemplate1Catalog) where
+>
+> import Database.HsSqlPpp.Internals.Catalog.CatalogInternal
+> import Database.HsSqlPpp.Internals.TypeType
+>
+> defaultTemplate1Catalog :: Catalog
+> defaultTemplate1Catalog =
+>     (\l -> case l of
+>              Left x -> error $ show x
+>              Right e -> e) $
+>      updateCatalog defaultCatalog
+
+ 
+>        [CatCreateScalar (ScalarType "bool") "B" True,
+>         CatCreateScalar (ScalarType "bytea") "U" False,
+>         CatCreateScalar (ScalarType "char") "S" False,
+>         CatCreateScalar (ScalarType "name") "S" False,
+>         CatCreateScalar (ScalarType "int8") "N" False,
+>         CatCreateScalar (ScalarType "int2") "N" False,
+>         CatCreateScalar (ScalarType "int2vector") "A" False,
+>         CatCreateScalar (ScalarType "int4") "N" False,
+>         CatCreateScalar (ScalarType "regproc") "N" False,
+>         CatCreateScalar (ScalarType "text") "S" True,
+>         CatCreateScalar (ScalarType "oid") "N" True,
+>         CatCreateScalar (ScalarType "tid") "U" False,
+>         CatCreateScalar (ScalarType "xid") "U" False,
+>         CatCreateScalar (ScalarType "cid") "U" False,
+>         CatCreateScalar (ScalarType "oidvector") "A" False,
+>         CatCreateScalar (ScalarType "xml") "U" False,
+>         CatCreateScalar (ScalarType "point") "G" False,
+>         CatCreateScalar (ScalarType "lseg") "G" False,
+>         CatCreateScalar (ScalarType "path") "G" False,
+>         CatCreateScalar (ScalarType "box") "G" False,
+>         CatCreateScalar (ScalarType "polygon") "G" False,
+>         CatCreateScalar (ScalarType "line") "G" False,
+>         CatCreateScalar (ScalarType "float4") "N" False,
+>         CatCreateScalar (ScalarType "float8") "N" True,
+>         CatCreateScalar (ScalarType "abstime") "D" False,
+>         CatCreateScalar (ScalarType "reltime") "T" False,
+>         CatCreateScalar (ScalarType "tinterval") "T" False,
+>         CatCreateScalar (ScalarType "circle") "G" False,
+>         CatCreateScalar (ScalarType "money") "N" False,
+>         CatCreateScalar (ScalarType "macaddr") "U" False,
+>         CatCreateScalar (ScalarType "inet") "I" True,
+>         CatCreateScalar (ScalarType "cidr") "I" False,
+>         CatCreateScalar (ScalarType "aclitem") "U" False,
+>         CatCreateScalar (ScalarType "bpchar") "S" False,
+>         CatCreateScalar (ScalarType "varchar") "S" False,
+>         CatCreateScalar (ScalarType "date") "D" False,
+>         CatCreateScalar (ScalarType "time") "D" False,
+>         CatCreateScalar (ScalarType "timestamp") "D" False,
+>         CatCreateScalar (ScalarType "timestamptz") "D" True,
+>         CatCreateScalar (ScalarType "interval") "T" True,
+>         CatCreateScalar (ScalarType "timetz") "D" False,
+>         CatCreateScalar (ScalarType "bit") "V" False,
+>         CatCreateScalar (ScalarType "varbit") "V" True,
+>         CatCreateScalar (ScalarType "numeric") "N" False,
+>         CatCreateScalar (ScalarType "refcursor") "U" False,
+>         CatCreateScalar (ScalarType "regprocedure") "N" False,
+>         CatCreateScalar (ScalarType "regoper") "N" False,
+>         CatCreateScalar (ScalarType "regoperator") "N" False,
+>         CatCreateScalar (ScalarType "regclass") "N" False,
+>         CatCreateScalar (ScalarType "regtype") "N" False,
+>         CatCreateScalar (ScalarType "uuid") "U" False,
+>         CatCreateScalar (ScalarType "tsvector") "U" False,
+>         CatCreateScalar (ScalarType "gtsvector") "U" False,
+>         CatCreateScalar (ScalarType "tsquery") "U" False,
+>         CatCreateScalar (ScalarType "regconfig") "N" False,
+>         CatCreateScalar (ScalarType "regdictionary") "N" False,
+>         CatCreateScalar (ScalarType "txid_snapshot") "U" False,
+>         CatCreateDomain (DomainType "information_schema.cardinal_number")
+>           (ScalarType "int4"),
+>         CatCreateDomain (DomainType "information_schema.character_data")
+>           (ScalarType "varchar"),
+>         CatCreateDomain (DomainType "information_schema.sql_identifier")
+>           (ScalarType "varchar"),
+>         CatCreateDomain (DomainType "information_schema.time_stamp")
+>           (ScalarType "timestamptz"),
+>         CatCreateCast (ScalarType "int8") (ScalarType "int2")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "int8") (ScalarType "int4")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "int8") (ScalarType "float4")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int8") (ScalarType "float8")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int8") (ScalarType "numeric")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int2") (ScalarType "int8")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int2") (ScalarType "int4")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int2") (ScalarType "float4")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int2") (ScalarType "float8")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int2") (ScalarType "numeric")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int4") (ScalarType "int8")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int4") (ScalarType "int2")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "int4") (ScalarType "float4")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int4") (ScalarType "float8")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int4") (ScalarType "numeric")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "float4") (ScalarType "int8")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "float4") (ScalarType "int2")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "float4") (ScalarType "int4")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "float4") (ScalarType "float8")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "float4") (ScalarType "numeric")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "float8") (ScalarType "int8")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "float8") (ScalarType "int2")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "float8") (ScalarType "int4")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "float8") (ScalarType "float4")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "float8") (ScalarType "numeric")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "numeric") (ScalarType "int8")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "numeric") (ScalarType "int2")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "numeric") (ScalarType "int4")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "numeric") (ScalarType "float4")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "numeric") (ScalarType "float8")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int4") (ScalarType "bool")
+>           ExplicitCastContext,
+>         CatCreateCast (ScalarType "bool") (ScalarType "int4")
+>           ExplicitCastContext,
+>         CatCreateCast (ScalarType "int8") (ScalarType "oid")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int2") (ScalarType "oid")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int4") (ScalarType "oid")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "oid") (ScalarType "int8")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "oid") (ScalarType "int4")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "oid") (ScalarType "regproc")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "regproc") (ScalarType "oid")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int8") (ScalarType "regproc")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int2") (ScalarType "regproc")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int4") (ScalarType "regproc")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "regproc") (ScalarType "int8")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "regproc") (ScalarType "int4")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "regproc") (ScalarType "regprocedure")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "regprocedure") (ScalarType "regproc")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "oid") (ScalarType "regprocedure")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "regprocedure") (ScalarType "oid")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int8") (ScalarType "regprocedure")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int2") (ScalarType "regprocedure")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int4") (ScalarType "regprocedure")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "regprocedure") (ScalarType "int8")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "regprocedure") (ScalarType "int4")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "oid") (ScalarType "regoper")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "regoper") (ScalarType "oid")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int8") (ScalarType "regoper")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int2") (ScalarType "regoper")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int4") (ScalarType "regoper")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "regoper") (ScalarType "int8")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "regoper") (ScalarType "int4")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "regoper") (ScalarType "regoperator")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "regoperator") (ScalarType "regoper")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "oid") (ScalarType "regoperator")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "regoperator") (ScalarType "oid")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int8") (ScalarType "regoperator")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int2") (ScalarType "regoperator")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int4") (ScalarType "regoperator")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "regoperator") (ScalarType "int8")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "regoperator") (ScalarType "int4")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "oid") (ScalarType "regclass")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "regclass") (ScalarType "oid")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int8") (ScalarType "regclass")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int2") (ScalarType "regclass")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int4") (ScalarType "regclass")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "regclass") (ScalarType "int8")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "regclass") (ScalarType "int4")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "oid") (ScalarType "regtype")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "regtype") (ScalarType "oid")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int8") (ScalarType "regtype")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int2") (ScalarType "regtype")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int4") (ScalarType "regtype")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "regtype") (ScalarType "int8")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "regtype") (ScalarType "int4")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "oid") (ScalarType "regconfig")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "regconfig") (ScalarType "oid")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int8") (ScalarType "regconfig")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int2") (ScalarType "regconfig")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int4") (ScalarType "regconfig")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "regconfig") (ScalarType "int8")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "regconfig") (ScalarType "int4")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "oid") (ScalarType "regdictionary")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "regdictionary") (ScalarType "oid")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int8") (ScalarType "regdictionary")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int2") (ScalarType "regdictionary")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int4") (ScalarType "regdictionary")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "regdictionary") (ScalarType "int8")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "regdictionary") (ScalarType "int4")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "text") (ScalarType "regclass")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "varchar") (ScalarType "regclass")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "text") (ScalarType "bpchar")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "text") (ScalarType "varchar")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "bpchar") (ScalarType "text")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "bpchar") (ScalarType "varchar")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "varchar") (ScalarType "text")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "varchar") (ScalarType "bpchar")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "char") (ScalarType "text")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "char") (ScalarType "bpchar")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "char") (ScalarType "varchar")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "name") (ScalarType "text")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "name") (ScalarType "bpchar")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "name") (ScalarType "varchar")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "text") (ScalarType "char")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "bpchar") (ScalarType "char")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "varchar") (ScalarType "char")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "text") (ScalarType "name")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "bpchar") (ScalarType "name")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "varchar") (ScalarType "name")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "char") (ScalarType "int4")
+>           ExplicitCastContext,
+>         CatCreateCast (ScalarType "int4") (ScalarType "char")
+>           ExplicitCastContext,
+>         CatCreateCast (ScalarType "abstime") (ScalarType "date")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "abstime") (ScalarType "time")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "abstime") (ScalarType "timestamp")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "abstime") (ScalarType "timestamptz")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "reltime") (ScalarType "interval")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "date") (ScalarType "timestamp")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "date") (ScalarType "timestamptz")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "time") (ScalarType "interval")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "time") (ScalarType "timetz")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "timestamp") (ScalarType "abstime")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "timestamp") (ScalarType "date")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "timestamp") (ScalarType "time")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "timestamp") (ScalarType "timestamptz")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "timestamptz") (ScalarType "abstime")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "timestamptz") (ScalarType "date")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "timestamptz") (ScalarType "time")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "timestamptz") (ScalarType "timestamp")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "timestamptz") (ScalarType "timetz")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "interval") (ScalarType "reltime")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "interval") (ScalarType "time")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "timetz") (ScalarType "time")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "int4") (ScalarType "abstime")
+>           ExplicitCastContext,
+>         CatCreateCast (ScalarType "abstime") (ScalarType "int4")
+>           ExplicitCastContext,
+>         CatCreateCast (ScalarType "int4") (ScalarType "reltime")
+>           ExplicitCastContext,
+>         CatCreateCast (ScalarType "reltime") (ScalarType "int4")
+>           ExplicitCastContext,
+>         CatCreateCast (ScalarType "lseg") (ScalarType "point")
+>           ExplicitCastContext,
+>         CatCreateCast (ScalarType "path") (ScalarType "point")
+>           ExplicitCastContext,
+>         CatCreateCast (ScalarType "path") (ScalarType "polygon")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "box") (ScalarType "point")
+>           ExplicitCastContext,
+>         CatCreateCast (ScalarType "box") (ScalarType "lseg")
+>           ExplicitCastContext,
+>         CatCreateCast (ScalarType "box") (ScalarType "polygon")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "box") (ScalarType "circle")
+>           ExplicitCastContext,
+>         CatCreateCast (ScalarType "polygon") (ScalarType "point")
+>           ExplicitCastContext,
+>         CatCreateCast (ScalarType "polygon") (ScalarType "path")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "polygon") (ScalarType "box")
+>           ExplicitCastContext,
+>         CatCreateCast (ScalarType "polygon") (ScalarType "circle")
+>           ExplicitCastContext,
+>         CatCreateCast (ScalarType "circle") (ScalarType "point")
+>           ExplicitCastContext,
+>         CatCreateCast (ScalarType "circle") (ScalarType "box")
+>           ExplicitCastContext,
+>         CatCreateCast (ScalarType "circle") (ScalarType "polygon")
+>           ExplicitCastContext,
+>         CatCreateCast (ScalarType "cidr") (ScalarType "inet")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "inet") (ScalarType "cidr")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "bit") (ScalarType "varbit")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "varbit") (ScalarType "bit")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "int8") (ScalarType "bit")
+>           ExplicitCastContext,
+>         CatCreateCast (ScalarType "int4") (ScalarType "bit")
+>           ExplicitCastContext,
+>         CatCreateCast (ScalarType "bit") (ScalarType "int8")
+>           ExplicitCastContext,
+>         CatCreateCast (ScalarType "bit") (ScalarType "int4")
+>           ExplicitCastContext,
+>         CatCreateCast (ScalarType "cidr") (ScalarType "text")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "inet") (ScalarType "text")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "bool") (ScalarType "text")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "xml") (ScalarType "text")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "text") (ScalarType "xml")
+>           ExplicitCastContext,
+>         CatCreateCast (ScalarType "cidr") (ScalarType "varchar")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "inet") (ScalarType "varchar")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "bool") (ScalarType "varchar")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "xml") (ScalarType "varchar")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "varchar") (ScalarType "xml")
+>           ExplicitCastContext,
+>         CatCreateCast (ScalarType "cidr") (ScalarType "bpchar")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "inet") (ScalarType "bpchar")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "bool") (ScalarType "bpchar")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "xml") (ScalarType "bpchar")
+>           AssignmentCastContext,
+>         CatCreateCast (ScalarType "bpchar") (ScalarType "xml")
+>           ExplicitCastContext,
+>         CatCreateCast (ScalarType "bpchar") (ScalarType "bpchar")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "varchar") (ScalarType "varchar")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "time") (ScalarType "time")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "timestamp") (ScalarType "timestamp")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "timestamptz") (ScalarType "timestamptz")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "interval") (ScalarType "interval")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "timetz") (ScalarType "timetz")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "bit") (ScalarType "bit")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "varbit") (ScalarType "varbit")
+>           ImplicitCastContext,
+>         CatCreateCast (ScalarType "numeric") (ScalarType "numeric")
+>           ImplicitCastContext,
+>         CatCreateFunction FunPrefix "~" [ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunPrefix "~" [ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunPrefix "~" [ScalarType "int2"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunPrefix "~" [ScalarType "bit"]
+>           (ScalarType "bit")
+>           False,
+>         CatCreateFunction FunPrefix "~" [ScalarType "inet"]
+>           (ScalarType "inet")
+>           False,
+>         CatCreateFunction FunPrefix "||/" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunPrefix "|/" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunPrefix "|" [ScalarType "tinterval"]
+>           (ScalarType "abstime")
+>           False,
+>         CatCreateFunction FunPrefix "@@" [ScalarType "circle"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunPrefix "@@" [ScalarType "lseg"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunPrefix "@@" [ScalarType "path"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunPrefix "@@" [ScalarType "polygon"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunPrefix "@@" [ScalarType "box"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunPrefix "@-@" [ScalarType "path"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunPrefix "@-@" [ScalarType "lseg"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunPrefix "@" [ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunPrefix "@" [ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunPrefix "@" [ScalarType "int2"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunPrefix "@" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunPrefix "@" [ScalarType "float4"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunPrefix "@" [ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunPrefix "?|" [ScalarType "line"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunPrefix "?|" [ScalarType "lseg"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunPrefix "?-" [ScalarType "lseg"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunPrefix "?-" [ScalarType "line"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunPrefix "-" [ScalarType "interval"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunPrefix "-" [ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunPrefix "-" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunPrefix "-" [ScalarType "float4"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunPrefix "-" [ScalarType "int2"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunPrefix "-" [ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunPrefix "-" [ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunPrefix "+" [ScalarType "int2"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunPrefix "+" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunPrefix "+" [ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunPrefix "+" [ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunPrefix "+" [ScalarType "float4"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunPrefix "+" [ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunPrefix "#" [ScalarType "path"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunPrefix "#" [ScalarType "polygon"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunPrefix "!!" [ScalarType "int8"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunPrefix "!!" [ScalarType "tsquery"]
+>           (ScalarType "tsquery")
+>           False,
+>         CatCreateFunction FunPostfix "!" [ScalarType "int8"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunBinary "~~*"
+>           [ScalarType "name", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "~~*"
+>           [ScalarType "bpchar", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "~~*"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "~~"
+>           [ScalarType "bpchar", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "~~"
+>           [ScalarType "bytea", ScalarType "bytea"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "~~"
+>           [ScalarType "name", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "~~"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "~>~"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "~>~"
+>           [ScalarType "bpchar", ScalarType "bpchar"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "~>=~"
+>           [ScalarType "bpchar", ScalarType "bpchar"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "~>=~"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "~="
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "~="
+>           [ScalarType "tinterval", ScalarType "tinterval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "~="
+>           [ScalarType "polygon", ScalarType "polygon"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "~="
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "~="
+>           [ScalarType "point", ScalarType "point"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "~<~"
+>           [ScalarType "bpchar", ScalarType "bpchar"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "~<~"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "~<=~"
+>           [ScalarType "bpchar", ScalarType "bpchar"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "~<=~"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "~*"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "~*"
+>           [ScalarType "bpchar", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "~*"
+>           [ScalarType "name", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "~"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "~"
+>           [ScalarType "bpchar", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "~"
+>           [ArrayType (ScalarType "aclitem"), ScalarType "aclitem"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "~"
+>           [ScalarType "circle", ScalarType "point"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "~"
+>           [ScalarType "polygon", ScalarType "point"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "~"
+>           [ScalarType "path", ScalarType "point"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "~"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "~"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "~"
+>           [ScalarType "polygon", ScalarType "polygon"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "~"
+>           [ScalarType "name", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "||" [Pseudo AnyArray, Pseudo AnyArray]
+>           (Pseudo AnyArray)
+>           False,
+>         CatCreateFunction FunBinary "||"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunBinary "||"
+>           [ScalarType "varbit", ScalarType "varbit"]
+>           (ScalarType "varbit")
+>           False,
+>         CatCreateFunction FunBinary "||"
+>           [Pseudo AnyElement, Pseudo AnyArray]
+>           (Pseudo AnyArray)
+>           False,
+>         CatCreateFunction FunBinary "||"
+>           [ScalarType "tsquery", ScalarType "tsquery"]
+>           (ScalarType "tsquery")
+>           False,
+>         CatCreateFunction FunBinary "||"
+>           [ScalarType "bytea", ScalarType "bytea"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunBinary "||"
+>           [Pseudo AnyNonArray, ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunBinary "||"
+>           [ScalarType "tsvector", ScalarType "tsvector"]
+>           (ScalarType "tsvector")
+>           False,
+>         CatCreateFunction FunBinary "||"
+>           [Pseudo AnyArray, Pseudo AnyElement]
+>           (Pseudo AnyArray)
+>           False,
+>         CatCreateFunction FunBinary "||"
+>           [ScalarType "text", Pseudo AnyNonArray]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunBinary "|>>"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "|>>"
+>           [ScalarType "polygon", ScalarType "polygon"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "|>>"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "|&>"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "|&>"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "|&>"
+>           [ScalarType "polygon", ScalarType "polygon"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "|"
+>           [ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunBinary "|"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunBinary "|"
+>           [ScalarType "int2", ScalarType "int2"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunBinary "|"
+>           [ScalarType "inet", ScalarType "inet"]
+>           (ScalarType "inet")
+>           False,
+>         CatCreateFunction FunBinary "|"
+>           [ScalarType "bit", ScalarType "bit"]
+>           (ScalarType "bit")
+>           False,
+>         CatCreateFunction FunBinary "^"
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunBinary "^"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunBinary "@@@"
+>           [ScalarType "tsquery", ScalarType "tsvector"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "@@@"
+>           [ScalarType "tsvector", ScalarType "tsquery"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "@@"
+>           [ScalarType "text", ScalarType "tsquery"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "@@"
+>           [ScalarType "tsquery", ScalarType "tsvector"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "@@"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "@@"
+>           [ScalarType "tsvector", ScalarType "tsquery"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "@>" [Pseudo AnyArray, Pseudo AnyArray]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "@>"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "@>"
+>           [ScalarType "tsquery", ScalarType "tsquery"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "@>"
+>           [ScalarType "polygon", ScalarType "point"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "@>"
+>           [ScalarType "path", ScalarType "point"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "@>"
+>           [ArrayType (ScalarType "aclitem"), ScalarType "aclitem"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "@>"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "@>"
+>           [ScalarType "polygon", ScalarType "polygon"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "@>"
+>           [ScalarType "circle", ScalarType "point"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "?||"
+>           [ScalarType "line", ScalarType "line"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "?||"
+>           [ScalarType "lseg", ScalarType "lseg"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "?|"
+>           [ScalarType "point", ScalarType "point"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "?-|"
+>           [ScalarType "line", ScalarType "line"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "?-|"
+>           [ScalarType "lseg", ScalarType "lseg"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "?-"
+>           [ScalarType "point", ScalarType "point"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "?#"
+>           [ScalarType "lseg", ScalarType "lseg"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "?#"
+>           [ScalarType "path", ScalarType "path"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "?#"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "?#"
+>           [ScalarType "lseg", ScalarType "line"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "?#"
+>           [ScalarType "line", ScalarType "line"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "?#"
+>           [ScalarType "lseg", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "?#"
+>           [ScalarType "line", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">^"
+>           [ScalarType "point", ScalarType "point"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">^"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">>="
+>           [ScalarType "inet", ScalarType "inet"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">>"
+>           [ScalarType "polygon", ScalarType "polygon"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">>"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">>"
+>           [ScalarType "point", ScalarType "point"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">>"
+>           [ScalarType "int8", ScalarType "int4"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunBinary ">>"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunBinary ">>"
+>           [ScalarType "int2", ScalarType "int4"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunBinary ">>"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">>"
+>           [ScalarType "inet", ScalarType "inet"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">>"
+>           [ScalarType "bit", ScalarType "int4"]
+>           (ScalarType "bit")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "uuid", ScalarType "uuid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "macaddr", ScalarType "macaddr"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "bpchar", ScalarType "bpchar"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "char", ScalarType "char"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "bytea", ScalarType "bytea"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "int2", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">=" [Pseudo AnyEnum, Pseudo AnyEnum]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "lseg", ScalarType "lseg"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">=" [Pseudo AnyArray, Pseudo AnyArray]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "timestamp", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "date", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "time", ScalarType "time"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "timetz", ScalarType "timetz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "float4", ScalarType "float8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "varbit", ScalarType "varbit"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "int4", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "name", ScalarType "name"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "tsvector", ScalarType "tsvector"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "date", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "tsquery", ScalarType "tsquery"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "float8", ScalarType "float4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "bool", ScalarType "bool"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">=" [Pseudo Record, Pseudo Record]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "int2", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "timestamptz", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "timestamp", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "timestamptz", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "bit", ScalarType "bit"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "timestamp", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "abstime", ScalarType "abstime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "path", ScalarType "path"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "timestamptz", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "int8", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "int2", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "oid", ScalarType "oid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "tinterval", ScalarType "tinterval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "date", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "tid", ScalarType "tid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "money", ScalarType "money"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "oidvector", ScalarType "oidvector"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "interval", ScalarType "interval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "reltime", ScalarType "reltime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "int4", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "inet", ScalarType "inet"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "int8", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">="
+>           [ScalarType "float4", ScalarType "float4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "timestamptz", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "inet", ScalarType "inet"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "macaddr", ScalarType "macaddr"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "bpchar", ScalarType "bpchar"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "int4", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "int8", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "char", ScalarType "char"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">" [Pseudo AnyArray, Pseudo AnyArray]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "int4", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "timestamp", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "interval", ScalarType "interval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">" [Pseudo AnyEnum, Pseudo AnyEnum]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "reltime", ScalarType "reltime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "timestamptz", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "int2", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "lseg", ScalarType "lseg"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "tinterval", ScalarType "tinterval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "date", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "timestamp", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "time", ScalarType "time"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "uuid", ScalarType "uuid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "bytea", ScalarType "bytea"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "timetz", ScalarType "timetz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "bit", ScalarType "bit"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "name", ScalarType "name"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "float4", ScalarType "float8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "oidvector", ScalarType "oidvector"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "path", ScalarType "path"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">" [Pseudo Record, Pseudo Record]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "int2", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "timestamp", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "bool", ScalarType "bool"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "varbit", ScalarType "varbit"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "oid", ScalarType "oid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "tsvector", ScalarType "tsvector"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "float8", ScalarType "float4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "int2", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "date", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "date", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "timestamptz", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "money", ScalarType "money"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "tsquery", ScalarType "tsquery"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "float4", ScalarType "float4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "tid", ScalarType "tid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "int8", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary ">"
+>           [ScalarType "abstime", ScalarType "abstime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "timestamp", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "int4", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "reltime", ScalarType "reltime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "bytea", ScalarType "bytea"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "int2", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "date", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "oid", ScalarType "oid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "interval", ScalarType "interval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "date", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "oidvector", ScalarType "oidvector"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "float4", ScalarType "float4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "int8", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "timestamp", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "int2", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "varbit", ScalarType "varbit"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "timestamptz", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "timestamp", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "path", ScalarType "path"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "bit", ScalarType "bit"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "timestamptz", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "int8", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "tinterval", ScalarType "tinterval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "money", ScalarType "money"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "tid", ScalarType "tid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "aclitem", ScalarType "aclitem"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "uuid", ScalarType "uuid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "int2vector", ScalarType "int2vector"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "=" [Pseudo Record, Pseudo Record]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "cid", ScalarType "cid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "xid", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "bpchar", ScalarType "bpchar"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "inet", ScalarType "inet"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "=" [Pseudo AnyArray, Pseudo AnyArray]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "macaddr", ScalarType "macaddr"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "line", ScalarType "line"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "=" [Pseudo AnyEnum, Pseudo AnyEnum]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "xid", ScalarType "xid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "tsvector", ScalarType "tsvector"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "date", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "time", ScalarType "time"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "timetz", ScalarType "timetz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "float4", ScalarType "float8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "float8", ScalarType "float4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "int4", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "lseg", ScalarType "lseg"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "int2", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "name", ScalarType "name"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "tsquery", ScalarType "tsquery"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "char", ScalarType "char"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "bool", ScalarType "bool"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "timestamptz", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "="
+>           [ScalarType "abstime", ScalarType "abstime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<^"
+>           [ScalarType "point", ScalarType "point"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<^"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<@"
+>           [ScalarType "tsquery", ScalarType "tsquery"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<@" [Pseudo AnyArray, Pseudo AnyArray]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<@"
+>           [ScalarType "lseg", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<@"
+>           [ScalarType "lseg", ScalarType "line"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<@"
+>           [ScalarType "point", ScalarType "line"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<@"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<@"
+>           [ScalarType "point", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<@"
+>           [ScalarType "point", ScalarType "polygon"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<@"
+>           [ScalarType "point", ScalarType "path"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<@"
+>           [ScalarType "point", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<@"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<@"
+>           [ScalarType "polygon", ScalarType "polygon"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<@"
+>           [ScalarType "point", ScalarType "lseg"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<?>"
+>           [ScalarType "abstime", ScalarType "tinterval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "float4", ScalarType "float4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>" [Pseudo AnyArray, Pseudo AnyArray]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "timetz", ScalarType "timetz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "reltime", ScalarType "reltime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "int4", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "int8", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "tsvector", ScalarType "tsvector"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "interval", ScalarType "interval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "time", ScalarType "time"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "date", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "oidvector", ScalarType "oidvector"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "int4", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "lseg", ScalarType "lseg"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "char", ScalarType "char"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "int2", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "oid", ScalarType "oid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "bytea", ScalarType "bytea"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "point", ScalarType "point"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "timestamptz", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "int8", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "date", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "bit", ScalarType "bit"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "int2", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "abstime", ScalarType "abstime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "date", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "tsquery", ScalarType "tsquery"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "name", ScalarType "name"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "tinterval", ScalarType "tinterval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "int2", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "timestamp", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "money", ScalarType "money"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "float8", ScalarType "float4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>" [Pseudo AnyEnum, Pseudo AnyEnum]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "timestamp", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "timestamptz", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "timestamp", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "uuid", ScalarType "uuid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "varbit", ScalarType "varbit"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "tid", ScalarType "tid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "bool", ScalarType "bool"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "float4", ScalarType "float8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "inet", ScalarType "inet"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "timestamptz", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>" [Pseudo Record, Pseudo Record]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "bpchar", ScalarType "bpchar"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<>"
+>           [ScalarType "macaddr", ScalarType "macaddr"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "oidvector", ScalarType "oidvector"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "oid", ScalarType "oid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "reltime", ScalarType "reltime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "tsvector", ScalarType "tsvector"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<=" [Pseudo AnyEnum, Pseudo AnyEnum]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "float8", ScalarType "float4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "uuid", ScalarType "uuid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "float4", ScalarType "float8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "tid", ScalarType "tid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "timetz", ScalarType "timetz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "time", ScalarType "time"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "interval", ScalarType "interval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "int8", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "date", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "lseg", ScalarType "lseg"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<=" [Pseudo AnyArray, Pseudo AnyArray]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "macaddr", ScalarType "macaddr"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "bpchar", ScalarType "bpchar"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "inet", ScalarType "inet"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "timestamptz", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "timestamp", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "timestamptz", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "money", ScalarType "money"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "bool", ScalarType "bool"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "timestamp", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "tinterval", ScalarType "tinterval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<=" [Pseudo Record, Pseudo Record]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "int4", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "timestamptz", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "date", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "path", ScalarType "path"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "bit", ScalarType "bit"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "int2", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "date", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "tsquery", ScalarType "tsquery"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "int2", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "int4", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "timestamp", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "varbit", ScalarType "varbit"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "name", ScalarType "name"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "int2", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "char", ScalarType "char"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "int8", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "float4", ScalarType "float4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "abstime", ScalarType "abstime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<="
+>           [ScalarType "bytea", ScalarType "bytea"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<<|"
+>           [ScalarType "polygon", ScalarType "polygon"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<<|"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<<|"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<<="
+>           [ScalarType "inet", ScalarType "inet"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<<"
+>           [ScalarType "int2", ScalarType "int4"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunBinary "<<"
+>           [ScalarType "inet", ScalarType "inet"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<<"
+>           [ScalarType "tinterval", ScalarType "tinterval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<<"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<<"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<<"
+>           [ScalarType "polygon", ScalarType "polygon"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<<"
+>           [ScalarType "int8", ScalarType "int4"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunBinary "<<"
+>           [ScalarType "bit", ScalarType "int4"]
+>           (ScalarType "bit")
+>           False,
+>         CatCreateFunction FunBinary "<<"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunBinary "<<"
+>           [ScalarType "point", ScalarType "point"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<->"
+>           [ScalarType "point", ScalarType "point"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunBinary "<->"
+>           [ScalarType "circle", ScalarType "polygon"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunBinary "<->"
+>           [ScalarType "point", ScalarType "line"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunBinary "<->"
+>           [ScalarType "point", ScalarType "path"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunBinary "<->"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunBinary "<->"
+>           [ScalarType "point", ScalarType "circle"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunBinary "<->"
+>           [ScalarType "lseg", ScalarType "box"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunBinary "<->"
+>           [ScalarType "point", ScalarType "lseg"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunBinary "<->"
+>           [ScalarType "lseg", ScalarType "line"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunBinary "<->"
+>           [ScalarType "point", ScalarType "box"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunBinary "<->"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunBinary "<->"
+>           [ScalarType "polygon", ScalarType "polygon"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunBinary "<->"
+>           [ScalarType "lseg", ScalarType "lseg"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunBinary "<->"
+>           [ScalarType "line", ScalarType "line"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunBinary "<->"
+>           [ScalarType "path", ScalarType "path"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunBinary "<->"
+>           [ScalarType "line", ScalarType "box"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunBinary "<#>"
+>           [ScalarType "abstime", ScalarType "abstime"]
+>           (ScalarType "tinterval")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "oidvector", ScalarType "oidvector"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "money", ScalarType "money"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "float8", ScalarType "float4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "timestamptz", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<" [Pseudo AnyEnum, Pseudo AnyEnum]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "bytea", ScalarType "bytea"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "timestamp", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "tinterval", ScalarType "tinterval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "tsvector", ScalarType "tsvector"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "varbit", ScalarType "varbit"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "int8", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "float4", ScalarType "float4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "path", ScalarType "path"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "bit", ScalarType "bit"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "date", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "bool", ScalarType "bool"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "char", ScalarType "char"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<" [Pseudo Record, Pseudo Record]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "name", ScalarType "name"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "timestamptz", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "interval", ScalarType "interval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "date", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "int8", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "lseg", ScalarType "lseg"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "time", ScalarType "time"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "int2", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "int2", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<" [Pseudo AnyArray, Pseudo AnyArray]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "macaddr", ScalarType "macaddr"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "abstime", ScalarType "abstime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "bpchar", ScalarType "bpchar"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "tid", ScalarType "tid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "inet", ScalarType "inet"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "float4", ScalarType "float8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "timestamptz", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "int4", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "uuid", ScalarType "uuid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "timestamp", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "timestamp", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "timetz", ScalarType "timetz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "oid", ScalarType "oid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "date", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "int2", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "int4", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "reltime", ScalarType "reltime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "<"
+>           [ScalarType "tsquery", ScalarType "tsquery"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "/"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunBinary "/"
+>           [ScalarType "int2", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunBinary "/"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunBinary "/"
+>           [ScalarType "int2", ScalarType "int2"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunBinary "/"
+>           [ScalarType "money", ScalarType "float4"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunBinary "/"
+>           [ScalarType "int8", ScalarType "int2"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunBinary "/"
+>           [ScalarType "int4", ScalarType "int2"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunBinary "/"
+>           [ScalarType "point", ScalarType "point"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunBinary "/"
+>           [ScalarType "circle", ScalarType "point"]
+>           (ScalarType "circle")
+>           False,
+>         CatCreateFunction FunBinary "/"
+>           [ScalarType "int4", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunBinary "/"
+>           [ScalarType "float8", ScalarType "float4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunBinary "/"
+>           [ScalarType "money", ScalarType "int4"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunBinary "/"
+>           [ScalarType "path", ScalarType "point"]
+>           (ScalarType "path")
+>           False,
+>         CatCreateFunction FunBinary "/"
+>           [ScalarType "interval", ScalarType "float8"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunBinary "/"
+>           [ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunBinary "/"
+>           [ScalarType "int8", ScalarType "int4"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunBinary "/"
+>           [ScalarType "int2", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunBinary "/"
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunBinary "/"
+>           [ScalarType "float4", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunBinary "/"
+>           [ScalarType "money", ScalarType "int2"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunBinary "/"
+>           [ScalarType "float4", ScalarType "float4"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunBinary "/"
+>           [ScalarType "money", ScalarType "float8"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunBinary "/"
+>           [ScalarType "box", ScalarType "point"]
+>           (ScalarType "box")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "interval", ScalarType "interval"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "timestamptz", ScalarType "interval"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "timestamptz", ScalarType "timestamptz"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "circle", ScalarType "point"]
+>           (ScalarType "circle")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "float8", ScalarType "float4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "float4", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "date", ScalarType "int4"]
+>           (ScalarType "date")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "date", ScalarType "date"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "date", ScalarType "interval"]
+>           (ScalarType "timestamp")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ArrayType (ScalarType "aclitem"), ScalarType "aclitem"]
+>           (ArrayType (ScalarType "aclitem"))
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "money", ScalarType "money"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "inet", ScalarType "int8"]
+>           (ScalarType "inet")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "inet", ScalarType "inet"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "box", ScalarType "point"]
+>           (ScalarType "box")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "path", ScalarType "point"]
+>           (ScalarType "path")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "point", ScalarType "point"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "int2", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "int8", ScalarType "int2"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "int4", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "int8", ScalarType "int4"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "time", ScalarType "interval"]
+>           (ScalarType "time")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "timetz", ScalarType "interval"]
+>           (ScalarType "timetz")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "float4", ScalarType "float4"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "abstime", ScalarType "reltime"]
+>           (ScalarType "abstime")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "int4", ScalarType "int2"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "int2", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "int2", ScalarType "int2"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "timestamp", ScalarType "interval"]
+>           (ScalarType "timestamp")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "time", ScalarType "time"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunBinary "-"
+>           [ScalarType "timestamp", ScalarType "timestamp"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "interval", ScalarType "interval"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "date", ScalarType "time"]
+>           (ScalarType "timestamp")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "int4", ScalarType "int2"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "int2", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "int2", ScalarType "int2"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "timetz", ScalarType "interval"]
+>           (ScalarType "timetz")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "time", ScalarType "interval"]
+>           (ScalarType "time")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "int8", ScalarType "int4"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "int4", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "timestamp", ScalarType "interval"]
+>           (ScalarType "timestamp")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "time", ScalarType "date"]
+>           (ScalarType "timestamp")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "int8", ScalarType "int2"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "date", ScalarType "timetz"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "int2", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "point", ScalarType "point"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "path", ScalarType "path"]
+>           (ScalarType "path")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "path", ScalarType "point"]
+>           (ScalarType "path")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "box", ScalarType "point"]
+>           (ScalarType "box")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "money", ScalarType "money"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "int8", ScalarType "inet"]
+>           (ScalarType "inet")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ArrayType (ScalarType "aclitem"), ScalarType "aclitem"]
+>           (ArrayType (ScalarType "aclitem"))
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "inet", ScalarType "int8"]
+>           (ScalarType "inet")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "interval", ScalarType "date"]
+>           (ScalarType "timestamp")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "date", ScalarType "interval"]
+>           (ScalarType "timestamp")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "timetz", ScalarType "date"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "interval", ScalarType "timetz"]
+>           (ScalarType "timetz")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "interval", ScalarType "timestamp"]
+>           (ScalarType "timestamp")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "date", ScalarType "int4"]
+>           (ScalarType "date")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "interval", ScalarType "timestamptz"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "int4", ScalarType "date"]
+>           (ScalarType "date")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "float4", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "float8", ScalarType "float4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "float4", ScalarType "float4"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "circle", ScalarType "point"]
+>           (ScalarType "circle")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "timestamptz", ScalarType "interval"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "abstime", ScalarType "reltime"]
+>           (ScalarType "abstime")
+>           False,
+>         CatCreateFunction FunBinary "+"
+>           [ScalarType "interval", ScalarType "time"]
+>           (ScalarType "time")
+>           False,
+>         CatCreateFunction FunBinary "*"
+>           [ScalarType "point", ScalarType "point"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunBinary "*"
+>           [ScalarType "int2", ScalarType "int2"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunBinary "*"
+>           [ScalarType "path", ScalarType "point"]
+>           (ScalarType "path")
+>           False,
+>         CatCreateFunction FunBinary "*"
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunBinary "*"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunBinary "*"
+>           [ScalarType "box", ScalarType "point"]
+>           (ScalarType "box")
+>           False,
+>         CatCreateFunction FunBinary "*"
+>           [ScalarType "money", ScalarType "float4"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunBinary "*"
+>           [ScalarType "float4", ScalarType "money"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunBinary "*"
+>           [ScalarType "money", ScalarType "float8"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunBinary "*"
+>           [ScalarType "money", ScalarType "int4"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunBinary "*"
+>           [ScalarType "money", ScalarType "int2"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunBinary "*"
+>           [ScalarType "float8", ScalarType "money"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunBinary "*"
+>           [ScalarType "int4", ScalarType "money"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunBinary "*"
+>           [ScalarType "int2", ScalarType "money"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunBinary "*"
+>           [ScalarType "circle", ScalarType "point"]
+>           (ScalarType "circle")
+>           False,
+>         CatCreateFunction FunBinary "*"
+>           [ScalarType "float4", ScalarType "float4"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunBinary "*"
+>           [ScalarType "float8", ScalarType "interval"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunBinary "*"
+>           [ScalarType "interval", ScalarType "float8"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunBinary "*"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunBinary "*"
+>           [ScalarType "int4", ScalarType "int2"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunBinary "*"
+>           [ScalarType "int2", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunBinary "*"
+>           [ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunBinary "*"
+>           [ScalarType "int8", ScalarType "int4"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunBinary "*"
+>           [ScalarType "float4", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunBinary "*"
+>           [ScalarType "int4", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunBinary "*"
+>           [ScalarType "int8", ScalarType "int2"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunBinary "*"
+>           [ScalarType "int2", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunBinary "*"
+>           [ScalarType "float8", ScalarType "float4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunBinary "&>"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "&>"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "&>"
+>           [ScalarType "polygon", ScalarType "polygon"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "&<|"
+>           [ScalarType "polygon", ScalarType "polygon"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "&<|"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "&<|"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "&<"
+>           [ScalarType "polygon", ScalarType "polygon"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "&<"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "&<"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "&&" [Pseudo AnyArray, Pseudo AnyArray]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "&&"
+>           [ScalarType "tinterval", ScalarType "tinterval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "&&"
+>           [ScalarType "polygon", ScalarType "polygon"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "&&"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "&&"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "&&"
+>           [ScalarType "tsquery", ScalarType "tsquery"]
+>           (ScalarType "tsquery")
+>           False,
+>         CatCreateFunction FunBinary "&"
+>           [ScalarType "inet", ScalarType "inet"]
+>           (ScalarType "inet")
+>           False,
+>         CatCreateFunction FunBinary "&"
+>           [ScalarType "bit", ScalarType "bit"]
+>           (ScalarType "bit")
+>           False,
+>         CatCreateFunction FunBinary "&"
+>           [ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunBinary "&"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunBinary "&"
+>           [ScalarType "int2", ScalarType "int2"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunBinary "%"
+>           [ScalarType "int2", ScalarType "int2"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunBinary "%"
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunBinary "%"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunBinary "%"
+>           [ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunBinary "#>="
+>           [ScalarType "tinterval", ScalarType "reltime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "#>"
+>           [ScalarType "tinterval", ScalarType "reltime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "#="
+>           [ScalarType "tinterval", ScalarType "reltime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "#<>"
+>           [ScalarType "tinterval", ScalarType "reltime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "#<="
+>           [ScalarType "tinterval", ScalarType "reltime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "#<"
+>           [ScalarType "tinterval", ScalarType "reltime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "##"
+>           [ScalarType "line", ScalarType "lseg"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunBinary "##"
+>           [ScalarType "lseg", ScalarType "line"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunBinary "##"
+>           [ScalarType "point", ScalarType "box"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunBinary "##"
+>           [ScalarType "lseg", ScalarType "box"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunBinary "##"
+>           [ScalarType "line", ScalarType "box"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunBinary "##"
+>           [ScalarType "point", ScalarType "line"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunBinary "##"
+>           [ScalarType "point", ScalarType "lseg"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunBinary "##"
+>           [ScalarType "lseg", ScalarType "lseg"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunBinary "#"
+>           [ScalarType "bit", ScalarType "bit"]
+>           (ScalarType "bit")
+>           False,
+>         CatCreateFunction FunBinary "#"
+>           [ScalarType "line", ScalarType "line"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunBinary "#"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "box")
+>           False,
+>         CatCreateFunction FunBinary "#"
+>           [ScalarType "int2", ScalarType "int2"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunBinary "#"
+>           [ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunBinary "#"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunBinary "#"
+>           [ScalarType "lseg", ScalarType "lseg"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunBinary "!~~*"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "!~~*"
+>           [ScalarType "bpchar", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "!~~*"
+>           [ScalarType "name", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "!~~"
+>           [ScalarType "bytea", ScalarType "bytea"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "!~~"
+>           [ScalarType "bpchar", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "!~~"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "!~~"
+>           [ScalarType "name", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "!~*"
+>           [ScalarType "bpchar", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "!~*"
+>           [ScalarType "name", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "!~*"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "!~"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "!~"
+>           [ScalarType "name", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunBinary "!~"
+>           [ScalarType "bpchar", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "RI_FKey_cascade_del" [] (Pseudo Trigger)
+>           False,
+>         CatCreateFunction FunName "RI_FKey_cascade_upd" [] (Pseudo Trigger)
+>           False,
+>         CatCreateFunction FunName "RI_FKey_check_ins" [] (Pseudo Trigger)
+>           False,
+>         CatCreateFunction FunName "RI_FKey_check_upd" [] (Pseudo Trigger)
+>           False,
+>         CatCreateFunction FunName "RI_FKey_noaction_del" []
+>           (Pseudo Trigger)
+>           False,
+>         CatCreateFunction FunName "RI_FKey_noaction_upd" []
+>           (Pseudo Trigger)
+>           False,
+>         CatCreateFunction FunName "RI_FKey_restrict_del" []
+>           (Pseudo Trigger)
+>           False,
+>         CatCreateFunction FunName "RI_FKey_restrict_upd" []
+>           (Pseudo Trigger)
+>           False,
+>         CatCreateFunction FunName "RI_FKey_setdefault_del" []
+>           (Pseudo Trigger)
+>           False,
+>         CatCreateFunction FunName "RI_FKey_setdefault_upd" []
+>           (Pseudo Trigger)
+>           False,
+>         CatCreateFunction FunName "RI_FKey_setnull_del" [] (Pseudo Trigger)
+>           False,
+>         CatCreateFunction FunName "RI_FKey_setnull_upd" [] (Pseudo Trigger)
+>           False,
+>         CatCreateFunction FunName "abbrev" [ScalarType "cidr"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "abbrev" [ScalarType "inet"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "abs" [ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "abs" [ScalarType "int2"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunName "abs" [ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "abs" [ScalarType "float4"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunName "abs" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "abs" [ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "abstime" [ScalarType "timestamp"]
+>           (ScalarType "abstime")
+>           False,
+>         CatCreateFunction FunName "abstime" [ScalarType "timestamptz"]
+>           (ScalarType "abstime")
+>           False,
+>         CatCreateFunction FunName "abstimeeq"
+>           [ScalarType "abstime", ScalarType "abstime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "abstimege"
+>           [ScalarType "abstime", ScalarType "abstime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "abstimegt"
+>           [ScalarType "abstime", ScalarType "abstime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "abstimein" [Pseudo Cstring]
+>           (ScalarType "abstime")
+>           False,
+>         CatCreateFunction FunName "abstimele"
+>           [ScalarType "abstime", ScalarType "abstime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "abstimelt"
+>           [ScalarType "abstime", ScalarType "abstime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "abstimene"
+>           [ScalarType "abstime", ScalarType "abstime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "abstimeout" [ScalarType "abstime"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "abstimerecv" [Pseudo Internal]
+>           (ScalarType "abstime")
+>           False,
+>         CatCreateFunction FunName "abstimesend" [ScalarType "abstime"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "aclcontains"
+>           [ArrayType (ScalarType "aclitem"), ScalarType "aclitem"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "aclinsert"
+>           [ArrayType (ScalarType "aclitem"), ScalarType "aclitem"]
+>           (ArrayType (ScalarType "aclitem"))
+>           False,
+>         CatCreateFunction FunName "aclitemeq"
+>           [ScalarType "aclitem", ScalarType "aclitem"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "aclitemin" [Pseudo Cstring]
+>           (ScalarType "aclitem")
+>           False,
+>         CatCreateFunction FunName "aclitemout" [ScalarType "aclitem"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "aclremove"
+>           [ArrayType (ScalarType "aclitem"), ScalarType "aclitem"]
+>           (ArrayType (ScalarType "aclitem"))
+>           False,
+>         CatCreateFunction FunName "acos" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "age" [ScalarType "xid"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "age" [ScalarType "timestamp"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunName "age" [ScalarType "timestamptz"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunName "age"
+>           [ScalarType "timestamp", ScalarType "timestamp"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunName "age"
+>           [ScalarType "timestamptz", ScalarType "timestamptz"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunName "any_in" [Pseudo Cstring] (Pseudo Any)
+>           False,
+>         CatCreateFunction FunName "any_out" [Pseudo Any] (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "anyarray_in" [Pseudo Cstring]
+>           (Pseudo AnyArray)
+>           False,
+>         CatCreateFunction FunName "anyarray_out" [Pseudo AnyArray]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "anyarray_recv" [Pseudo Internal]
+>           (Pseudo AnyArray)
+>           False,
+>         CatCreateFunction FunName "anyarray_send" [Pseudo AnyArray]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "anyelement_in" [Pseudo Cstring]
+>           (Pseudo AnyElement)
+>           False,
+>         CatCreateFunction FunName "anyelement_out" [Pseudo AnyElement]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "anyenum_in" [Pseudo Cstring]
+>           (Pseudo AnyEnum)
+>           False,
+>         CatCreateFunction FunName "anyenum_out" [Pseudo AnyEnum]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "anynonarray_in" [Pseudo Cstring]
+>           (Pseudo AnyNonArray)
+>           False,
+>         CatCreateFunction FunName "anynonarray_out" [Pseudo AnyNonArray]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "anytextcat"
+>           [Pseudo AnyNonArray, ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "area" [ScalarType "path"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "area" [ScalarType "box"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "area" [ScalarType "circle"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "areajoinsel"
+>           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
+>            ScalarType "int2", Pseudo Internal]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "areasel"
+>           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
+>            ScalarType "int4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "array_agg_finalfn" [Pseudo Internal]
+>           (Pseudo AnyArray)
+>           False,
+>         CatCreateFunction FunName "array_agg_transfn"
+>           [Pseudo Internal, Pseudo AnyElement]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "array_append"
+>           [Pseudo AnyArray, Pseudo AnyElement]
+>           (Pseudo AnyArray)
+>           False,
+>         CatCreateFunction FunName "array_cat"
+>           [Pseudo AnyArray, Pseudo AnyArray]
+>           (Pseudo AnyArray)
+>           False,
+>         CatCreateFunction FunName "array_dims" [Pseudo AnyArray]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "array_eq"
+>           [Pseudo AnyArray, Pseudo AnyArray]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "array_fill"
+>           [Pseudo AnyElement, ArrayType (ScalarType "int4")]
+>           (Pseudo AnyArray)
+>           False,
+>         CatCreateFunction FunName "array_fill"
+>           [Pseudo AnyElement, ArrayType (ScalarType "int4"),
+>            ArrayType (ScalarType "int4")]
+>           (Pseudo AnyArray)
+>           False,
+>         CatCreateFunction FunName "array_ge"
+>           [Pseudo AnyArray, Pseudo AnyArray]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "array_gt"
+>           [Pseudo AnyArray, Pseudo AnyArray]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "array_in"
+>           [Pseudo Cstring, ScalarType "oid", ScalarType "int4"]
+>           (Pseudo AnyArray)
+>           False,
+>         CatCreateFunction FunName "array_larger"
+>           [Pseudo AnyArray, Pseudo AnyArray]
+>           (Pseudo AnyArray)
+>           False,
+>         CatCreateFunction FunName "array_le"
+>           [Pseudo AnyArray, Pseudo AnyArray]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "array_length"
+>           [Pseudo AnyArray, ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "array_lower"
+>           [Pseudo AnyArray, ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "array_lt"
+>           [Pseudo AnyArray, Pseudo AnyArray]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "array_ndims" [Pseudo AnyArray]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "array_ne"
+>           [Pseudo AnyArray, Pseudo AnyArray]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "array_out" [Pseudo AnyArray]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "array_prepend"
+>           [Pseudo AnyElement, Pseudo AnyArray]
+>           (Pseudo AnyArray)
+>           False,
+>         CatCreateFunction FunName "array_recv"
+>           [Pseudo Internal, ScalarType "oid", ScalarType "int4"]
+>           (Pseudo AnyArray)
+>           False,
+>         CatCreateFunction FunName "array_send" [Pseudo AnyArray]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "array_smaller"
+>           [Pseudo AnyArray, Pseudo AnyArray]
+>           (Pseudo AnyArray)
+>           False,
+>         CatCreateFunction FunName "array_to_string"
+>           [Pseudo AnyArray, ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "array_upper"
+>           [Pseudo AnyArray, ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "arraycontained"
+>           [Pseudo AnyArray, Pseudo AnyArray]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "arraycontains"
+>           [Pseudo AnyArray, Pseudo AnyArray]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "arrayoverlap"
+>           [Pseudo AnyArray, Pseudo AnyArray]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "ascii" [ScalarType "text"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "ascii_to_mic"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "ascii_to_utf8"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "asin" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "atan" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "atan2"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "big5_to_euc_tw"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "big5_to_mic"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "big5_to_utf8"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "bit"
+>           [ScalarType "int8", ScalarType "int4"]
+>           (ScalarType "bit")
+>           False,
+>         CatCreateFunction FunName "bit"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "bit")
+>           False,
+>         CatCreateFunction FunName "bit"
+>           [ScalarType "bit", ScalarType "int4", ScalarType "bool"]
+>           (ScalarType "bit")
+>           False,
+>         CatCreateFunction FunName "bit_in"
+>           [Pseudo Cstring, ScalarType "oid", ScalarType "int4"]
+>           (ScalarType "bit")
+>           False,
+>         CatCreateFunction FunName "bit_length" [ScalarType "bytea"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "bit_length" [ScalarType "text"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "bit_length" [ScalarType "bit"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "bit_out" [ScalarType "bit"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "bit_recv"
+>           [Pseudo Internal, ScalarType "oid", ScalarType "int4"]
+>           (ScalarType "bit")
+>           False,
+>         CatCreateFunction FunName "bit_send" [ScalarType "bit"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "bitand"
+>           [ScalarType "bit", ScalarType "bit"]
+>           (ScalarType "bit")
+>           False,
+>         CatCreateFunction FunName "bitcat"
+>           [ScalarType "varbit", ScalarType "varbit"]
+>           (ScalarType "varbit")
+>           False,
+>         CatCreateFunction FunName "bitcmp"
+>           [ScalarType "bit", ScalarType "bit"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "biteq"
+>           [ScalarType "bit", ScalarType "bit"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "bitge"
+>           [ScalarType "bit", ScalarType "bit"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "bitgt"
+>           [ScalarType "bit", ScalarType "bit"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "bitle"
+>           [ScalarType "bit", ScalarType "bit"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "bitlt"
+>           [ScalarType "bit", ScalarType "bit"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "bitne"
+>           [ScalarType "bit", ScalarType "bit"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "bitnot" [ScalarType "bit"]
+>           (ScalarType "bit")
+>           False,
+>         CatCreateFunction FunName "bitor"
+>           [ScalarType "bit", ScalarType "bit"]
+>           (ScalarType "bit")
+>           False,
+>         CatCreateFunction FunName "bitshiftleft"
+>           [ScalarType "bit", ScalarType "int4"]
+>           (ScalarType "bit")
+>           False,
+>         CatCreateFunction FunName "bitshiftright"
+>           [ScalarType "bit", ScalarType "int4"]
+>           (ScalarType "bit")
+>           False,
+>         CatCreateFunction FunName "bittypmodin"
+>           [ArrayType (Pseudo Cstring)]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "bittypmodout" [ScalarType "int4"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "bitxor"
+>           [ScalarType "bit", ScalarType "bit"]
+>           (ScalarType "bit")
+>           False,
+>         CatCreateFunction FunName "bool" [ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "booland_statefunc"
+>           [ScalarType "bool", ScalarType "bool"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "booleq"
+>           [ScalarType "bool", ScalarType "bool"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "boolge"
+>           [ScalarType "bool", ScalarType "bool"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "boolgt"
+>           [ScalarType "bool", ScalarType "bool"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "boolin" [Pseudo Cstring]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "boolle"
+>           [ScalarType "bool", ScalarType "bool"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "boollt"
+>           [ScalarType "bool", ScalarType "bool"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "boolne"
+>           [ScalarType "bool", ScalarType "bool"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "boolor_statefunc"
+>           [ScalarType "bool", ScalarType "bool"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "boolout" [ScalarType "bool"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "boolrecv" [Pseudo Internal]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "boolsend" [ScalarType "bool"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "box" [ScalarType "polygon"]
+>           (ScalarType "box")
+>           False,
+>         CatCreateFunction FunName "box" [ScalarType "circle"]
+>           (ScalarType "box")
+>           False,
+>         CatCreateFunction FunName "box"
+>           [ScalarType "point", ScalarType "point"]
+>           (ScalarType "box")
+>           False,
+>         CatCreateFunction FunName "box_above"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "box_above_eq"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "box_add"
+>           [ScalarType "box", ScalarType "point"]
+>           (ScalarType "box")
+>           False,
+>         CatCreateFunction FunName "box_below"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "box_below_eq"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "box_center" [ScalarType "box"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunName "box_contain"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "box_contained"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "box_distance"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "box_div"
+>           [ScalarType "box", ScalarType "point"]
+>           (ScalarType "box")
+>           False,
+>         CatCreateFunction FunName "box_eq"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "box_ge"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "box_gt"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "box_in" [Pseudo Cstring]
+>           (ScalarType "box")
+>           False,
+>         CatCreateFunction FunName "box_intersect"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "box")
+>           False,
+>         CatCreateFunction FunName "box_le"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "box_left"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "box_lt"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "box_mul"
+>           [ScalarType "box", ScalarType "point"]
+>           (ScalarType "box")
+>           False,
+>         CatCreateFunction FunName "box_out" [ScalarType "box"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "box_overabove"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "box_overbelow"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "box_overlap"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "box_overleft"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "box_overright"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "box_recv" [Pseudo Internal]
+>           (ScalarType "box")
+>           False,
+>         CatCreateFunction FunName "box_right"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "box_same"
+>           [ScalarType "box", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "box_send" [ScalarType "box"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "box_sub"
+>           [ScalarType "box", ScalarType "point"]
+>           (ScalarType "box")
+>           False,
+>         CatCreateFunction FunName "bpchar" [ScalarType "char"]
+>           (ScalarType "bpchar")
+>           False,
+>         CatCreateFunction FunName "bpchar" [ScalarType "name"]
+>           (ScalarType "bpchar")
+>           False,
+>         CatCreateFunction FunName "bpchar"
+>           [ScalarType "bpchar", ScalarType "int4", ScalarType "bool"]
+>           (ScalarType "bpchar")
+>           False,
+>         CatCreateFunction FunName "bpchar_larger"
+>           [ScalarType "bpchar", ScalarType "bpchar"]
+>           (ScalarType "bpchar")
+>           False,
+>         CatCreateFunction FunName "bpchar_pattern_ge"
+>           [ScalarType "bpchar", ScalarType "bpchar"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "bpchar_pattern_gt"
+>           [ScalarType "bpchar", ScalarType "bpchar"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "bpchar_pattern_le"
+>           [ScalarType "bpchar", ScalarType "bpchar"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "bpchar_pattern_lt"
+>           [ScalarType "bpchar", ScalarType "bpchar"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "bpchar_smaller"
+>           [ScalarType "bpchar", ScalarType "bpchar"]
+>           (ScalarType "bpchar")
+>           False,
+>         CatCreateFunction FunName "bpcharcmp"
+>           [ScalarType "bpchar", ScalarType "bpchar"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "bpchareq"
+>           [ScalarType "bpchar", ScalarType "bpchar"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "bpcharge"
+>           [ScalarType "bpchar", ScalarType "bpchar"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "bpchargt"
+>           [ScalarType "bpchar", ScalarType "bpchar"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "bpchariclike"
+>           [ScalarType "bpchar", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "bpcharicnlike"
+>           [ScalarType "bpchar", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "bpcharicregexeq"
+>           [ScalarType "bpchar", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "bpcharicregexne"
+>           [ScalarType "bpchar", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "bpcharin"
+>           [Pseudo Cstring, ScalarType "oid", ScalarType "int4"]
+>           (ScalarType "bpchar")
+>           False,
+>         CatCreateFunction FunName "bpcharle"
+>           [ScalarType "bpchar", ScalarType "bpchar"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "bpcharlike"
+>           [ScalarType "bpchar", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "bpcharlt"
+>           [ScalarType "bpchar", ScalarType "bpchar"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "bpcharne"
+>           [ScalarType "bpchar", ScalarType "bpchar"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "bpcharnlike"
+>           [ScalarType "bpchar", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "bpcharout" [ScalarType "bpchar"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "bpcharrecv"
+>           [Pseudo Internal, ScalarType "oid", ScalarType "int4"]
+>           (ScalarType "bpchar")
+>           False,
+>         CatCreateFunction FunName "bpcharregexeq"
+>           [ScalarType "bpchar", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "bpcharregexne"
+>           [ScalarType "bpchar", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "bpcharsend" [ScalarType "bpchar"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "bpchartypmodin"
+>           [ArrayType (Pseudo Cstring)]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "bpchartypmodout" [ScalarType "int4"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "broadcast" [ScalarType "inet"]
+>           (ScalarType "inet")
+>           False,
+>         CatCreateFunction FunName "btabstimecmp"
+>           [ScalarType "abstime", ScalarType "abstime"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "btarraycmp"
+>           [Pseudo AnyArray, Pseudo AnyArray]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "btbeginscan"
+>           [Pseudo Internal, Pseudo Internal, Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "btboolcmp"
+>           [ScalarType "bool", ScalarType "bool"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "btbpchar_pattern_cmp"
+>           [ScalarType "bpchar", ScalarType "bpchar"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "btbuild"
+>           [Pseudo Internal, Pseudo Internal, Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "btbulkdelete"
+>           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
+>            Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "btcharcmp"
+>           [ScalarType "char", ScalarType "char"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "btcostestimate"
+>           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
+>            Pseudo Internal, Pseudo Internal, Pseudo Internal, Pseudo Internal,
+>            Pseudo Internal]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "btendscan" [Pseudo Internal]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "btfloat48cmp"
+>           [ScalarType "float4", ScalarType "float8"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "btfloat4cmp"
+>           [ScalarType "float4", ScalarType "float4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "btfloat84cmp"
+>           [ScalarType "float8", ScalarType "float4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "btfloat8cmp"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "btgetbitmap"
+>           [Pseudo Internal, Pseudo Internal]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "btgettuple"
+>           [Pseudo Internal, Pseudo Internal]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "btinsert"
+>           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
+>            Pseudo Internal, Pseudo Internal, Pseudo Internal]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "btint24cmp"
+>           [ScalarType "int2", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "btint28cmp"
+>           [ScalarType "int2", ScalarType "int8"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "btint2cmp"
+>           [ScalarType "int2", ScalarType "int2"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "btint42cmp"
+>           [ScalarType "int4", ScalarType "int2"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "btint48cmp"
+>           [ScalarType "int4", ScalarType "int8"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "btint4cmp"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "btint82cmp"
+>           [ScalarType "int8", ScalarType "int2"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "btint84cmp"
+>           [ScalarType "int8", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "btint8cmp"
+>           [ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "btmarkpos" [Pseudo Internal]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "btnamecmp"
+>           [ScalarType "name", ScalarType "name"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "btoidcmp"
+>           [ScalarType "oid", ScalarType "oid"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "btoidvectorcmp"
+>           [ScalarType "oidvector", ScalarType "oidvector"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "btoptions"
+>           [ArrayType (ScalarType "text"), ScalarType "bool"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "btrecordcmp"
+>           [Pseudo Record, Pseudo Record]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "btreltimecmp"
+>           [ScalarType "reltime", ScalarType "reltime"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "btrescan"
+>           [Pseudo Internal, Pseudo Internal]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "btrestrpos" [Pseudo Internal]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "btrim" [ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "btrim"
+>           [ScalarType "bytea", ScalarType "bytea"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "btrim"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "bttext_pattern_cmp"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "bttextcmp"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "bttidcmp"
+>           [ScalarType "tid", ScalarType "tid"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "bttintervalcmp"
+>           [ScalarType "tinterval", ScalarType "tinterval"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "btvacuumcleanup"
+>           [Pseudo Internal, Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "byteacat"
+>           [ScalarType "bytea", ScalarType "bytea"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "byteacmp"
+>           [ScalarType "bytea", ScalarType "bytea"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "byteaeq"
+>           [ScalarType "bytea", ScalarType "bytea"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "byteage"
+>           [ScalarType "bytea", ScalarType "bytea"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "byteagt"
+>           [ScalarType "bytea", ScalarType "bytea"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "byteain" [Pseudo Cstring]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "byteale"
+>           [ScalarType "bytea", ScalarType "bytea"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "bytealike"
+>           [ScalarType "bytea", ScalarType "bytea"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "bytealt"
+>           [ScalarType "bytea", ScalarType "bytea"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "byteane"
+>           [ScalarType "bytea", ScalarType "bytea"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "byteanlike"
+>           [ScalarType "bytea", ScalarType "bytea"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "byteaout" [ScalarType "bytea"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "bytearecv" [Pseudo Internal]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "byteasend" [ScalarType "bytea"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "cash_cmp"
+>           [ScalarType "money", ScalarType "money"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "cash_div_flt4"
+>           [ScalarType "money", ScalarType "float4"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunName "cash_div_flt8"
+>           [ScalarType "money", ScalarType "float8"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunName "cash_div_int2"
+>           [ScalarType "money", ScalarType "int2"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunName "cash_div_int4"
+>           [ScalarType "money", ScalarType "int4"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunName "cash_eq"
+>           [ScalarType "money", ScalarType "money"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "cash_ge"
+>           [ScalarType "money", ScalarType "money"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "cash_gt"
+>           [ScalarType "money", ScalarType "money"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "cash_in" [Pseudo Cstring]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunName "cash_le"
+>           [ScalarType "money", ScalarType "money"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "cash_lt"
+>           [ScalarType "money", ScalarType "money"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "cash_mi"
+>           [ScalarType "money", ScalarType "money"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunName "cash_mul_flt4"
+>           [ScalarType "money", ScalarType "float4"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunName "cash_mul_flt8"
+>           [ScalarType "money", ScalarType "float8"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunName "cash_mul_int2"
+>           [ScalarType "money", ScalarType "int2"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunName "cash_mul_int4"
+>           [ScalarType "money", ScalarType "int4"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunName "cash_ne"
+>           [ScalarType "money", ScalarType "money"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "cash_out" [ScalarType "money"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "cash_pl"
+>           [ScalarType "money", ScalarType "money"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunName "cash_recv" [Pseudo Internal]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunName "cash_send" [ScalarType "money"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "cash_words" [ScalarType "money"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "cashlarger"
+>           [ScalarType "money", ScalarType "money"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunName "cashsmaller"
+>           [ScalarType "money", ScalarType "money"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunName "cbrt" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "ceil" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "ceil" [ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "ceiling" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "ceiling" [ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "center" [ScalarType "box"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunName "center" [ScalarType "circle"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunName "char" [ScalarType "int4"]
+>           (ScalarType "char")
+>           False,
+>         CatCreateFunction FunName "char" [ScalarType "text"]
+>           (ScalarType "char")
+>           False,
+>         CatCreateFunction FunName "char_length" [ScalarType "text"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "char_length" [ScalarType "bpchar"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "character_length" [ScalarType "text"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "character_length" [ScalarType "bpchar"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "chareq"
+>           [ScalarType "char", ScalarType "char"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "charge"
+>           [ScalarType "char", ScalarType "char"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "chargt"
+>           [ScalarType "char", ScalarType "char"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "charin" [Pseudo Cstring]
+>           (ScalarType "char")
+>           False,
+>         CatCreateFunction FunName "charle"
+>           [ScalarType "char", ScalarType "char"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "charlt"
+>           [ScalarType "char", ScalarType "char"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "charne"
+>           [ScalarType "char", ScalarType "char"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "charout" [ScalarType "char"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "charrecv" [Pseudo Internal]
+>           (ScalarType "char")
+>           False,
+>         CatCreateFunction FunName "charsend" [ScalarType "char"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "chr" [ScalarType "int4"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "cideq"
+>           [ScalarType "cid", ScalarType "cid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "cidin" [Pseudo Cstring]
+>           (ScalarType "cid")
+>           False,
+>         CatCreateFunction FunName "cidout" [ScalarType "cid"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "cidr" [ScalarType "inet"]
+>           (ScalarType "cidr")
+>           False,
+>         CatCreateFunction FunName "cidr_in" [Pseudo Cstring]
+>           (ScalarType "cidr")
+>           False,
+>         CatCreateFunction FunName "cidr_out" [ScalarType "cidr"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "cidr_recv" [Pseudo Internal]
+>           (ScalarType "cidr")
+>           False,
+>         CatCreateFunction FunName "cidr_send" [ScalarType "cidr"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "cidrecv" [Pseudo Internal]
+>           (ScalarType "cid")
+>           False,
+>         CatCreateFunction FunName "cidsend" [ScalarType "cid"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "circle" [ScalarType "box"]
+>           (ScalarType "circle")
+>           False,
+>         CatCreateFunction FunName "circle" [ScalarType "polygon"]
+>           (ScalarType "circle")
+>           False,
+>         CatCreateFunction FunName "circle"
+>           [ScalarType "point", ScalarType "float8"]
+>           (ScalarType "circle")
+>           False,
+>         CatCreateFunction FunName "circle_above"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "circle_add_pt"
+>           [ScalarType "circle", ScalarType "point"]
+>           (ScalarType "circle")
+>           False,
+>         CatCreateFunction FunName "circle_below"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "circle_center" [ScalarType "circle"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunName "circle_contain"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "circle_contain_pt"
+>           [ScalarType "circle", ScalarType "point"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "circle_contained"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "circle_distance"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "circle_div_pt"
+>           [ScalarType "circle", ScalarType "point"]
+>           (ScalarType "circle")
+>           False,
+>         CatCreateFunction FunName "circle_eq"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "circle_ge"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "circle_gt"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "circle_in" [Pseudo Cstring]
+>           (ScalarType "circle")
+>           False,
+>         CatCreateFunction FunName "circle_le"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "circle_left"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "circle_lt"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "circle_mul_pt"
+>           [ScalarType "circle", ScalarType "point"]
+>           (ScalarType "circle")
+>           False,
+>         CatCreateFunction FunName "circle_ne"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "circle_out" [ScalarType "circle"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "circle_overabove"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "circle_overbelow"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "circle_overlap"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "circle_overleft"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "circle_overright"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "circle_recv" [Pseudo Internal]
+>           (ScalarType "circle")
+>           False,
+>         CatCreateFunction FunName "circle_right"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "circle_same"
+>           [ScalarType "circle", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "circle_send" [ScalarType "circle"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "circle_sub_pt"
+>           [ScalarType "circle", ScalarType "point"]
+>           (ScalarType "circle")
+>           False,
+>         CatCreateFunction FunName "clock_timestamp" []
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName "close_lb"
+>           [ScalarType "line", ScalarType "box"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunName "close_ls"
+>           [ScalarType "line", ScalarType "lseg"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunName "close_lseg"
+>           [ScalarType "lseg", ScalarType "lseg"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunName "close_pb"
+>           [ScalarType "point", ScalarType "box"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunName "close_pl"
+>           [ScalarType "point", ScalarType "line"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunName "close_ps"
+>           [ScalarType "point", ScalarType "lseg"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunName "close_sb"
+>           [ScalarType "lseg", ScalarType "box"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunName "close_sl"
+>           [ScalarType "lseg", ScalarType "line"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunName "col_description"
+>           [ScalarType "oid", ScalarType "int4"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "contjoinsel"
+>           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
+>            ScalarType "int2", Pseudo Internal]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "contsel"
+>           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
+>            ScalarType "int4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "convert"
+>           [ScalarType "bytea", ScalarType "name", ScalarType "name"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "convert_from"
+>           [ScalarType "bytea", ScalarType "name"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "convert_to"
+>           [ScalarType "text", ScalarType "name"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "cos" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "cot" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "cstring_in" [Pseudo Cstring]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "cstring_out" [Pseudo Cstring]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "cstring_recv" [Pseudo Internal]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "cstring_send" [Pseudo Cstring]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "current_database" [] (ScalarType "name")
+>           False,
+>         CatCreateFunction FunName "current_query" [] (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "current_schema" [] (ScalarType "name")
+>           False,
+>         CatCreateFunction FunName "current_schemas" [ScalarType "bool"]
+>           (ArrayType (ScalarType "name"))
+>           False,
+>         CatCreateFunction FunName "current_setting" [ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "current_user" [] (ScalarType "name")
+>           False,
+>         CatCreateFunction FunName "currtid"
+>           [ScalarType "oid", ScalarType "tid"]
+>           (ScalarType "tid")
+>           False,
+>         CatCreateFunction FunName "currtid2"
+>           [ScalarType "text", ScalarType "tid"]
+>           (ScalarType "tid")
+>           False,
+>         CatCreateFunction FunName "currval" [ScalarType "regclass"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "cursor_to_xml"
+>           [ScalarType "refcursor", ScalarType "int4", ScalarType "bool",
+>            ScalarType "bool", ScalarType "text"]
+>           (ScalarType "xml")
+>           False,
+>         CatCreateFunction FunName "cursor_to_xmlschema"
+>           [ScalarType "refcursor", ScalarType "bool", ScalarType "bool",
+>            ScalarType "text"]
+>           (ScalarType "xml")
+>           False,
+>         CatCreateFunction FunName "database_to_xml"
+>           [ScalarType "bool", ScalarType "bool", ScalarType "text"]
+>           (ScalarType "xml")
+>           False,
+>         CatCreateFunction FunName "database_to_xml_and_xmlschema"
+>           [ScalarType "bool", ScalarType "bool", ScalarType "text"]
+>           (ScalarType "xml")
+>           False,
+>         CatCreateFunction FunName "database_to_xmlschema"
+>           [ScalarType "bool", ScalarType "bool", ScalarType "text"]
+>           (ScalarType "xml")
+>           False,
+>         CatCreateFunction FunName "date" [ScalarType "abstime"]
+>           (ScalarType "date")
+>           False,
+>         CatCreateFunction FunName "date" [ScalarType "timestamp"]
+>           (ScalarType "date")
+>           False,
+>         CatCreateFunction FunName "date" [ScalarType "timestamptz"]
+>           (ScalarType "date")
+>           False,
+>         CatCreateFunction FunName "date_cmp"
+>           [ScalarType "date", ScalarType "date"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "date_cmp_timestamp"
+>           [ScalarType "date", ScalarType "timestamp"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "date_cmp_timestamptz"
+>           [ScalarType "date", ScalarType "timestamptz"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "date_eq"
+>           [ScalarType "date", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "date_eq_timestamp"
+>           [ScalarType "date", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "date_eq_timestamptz"
+>           [ScalarType "date", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "date_ge"
+>           [ScalarType "date", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "date_ge_timestamp"
+>           [ScalarType "date", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "date_ge_timestamptz"
+>           [ScalarType "date", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "date_gt"
+>           [ScalarType "date", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "date_gt_timestamp"
+>           [ScalarType "date", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "date_gt_timestamptz"
+>           [ScalarType "date", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "date_in" [Pseudo Cstring]
+>           (ScalarType "date")
+>           False,
+>         CatCreateFunction FunName "date_larger"
+>           [ScalarType "date", ScalarType "date"]
+>           (ScalarType "date")
+>           False,
+>         CatCreateFunction FunName "date_le"
+>           [ScalarType "date", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "date_le_timestamp"
+>           [ScalarType "date", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "date_le_timestamptz"
+>           [ScalarType "date", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "date_lt"
+>           [ScalarType "date", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "date_lt_timestamp"
+>           [ScalarType "date", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "date_lt_timestamptz"
+>           [ScalarType "date", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "date_mi"
+>           [ScalarType "date", ScalarType "date"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "date_mi_interval"
+>           [ScalarType "date", ScalarType "interval"]
+>           (ScalarType "timestamp")
+>           False,
+>         CatCreateFunction FunName "date_mii"
+>           [ScalarType "date", ScalarType "int4"]
+>           (ScalarType "date")
+>           False,
+>         CatCreateFunction FunName "date_ne"
+>           [ScalarType "date", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "date_ne_timestamp"
+>           [ScalarType "date", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "date_ne_timestamptz"
+>           [ScalarType "date", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "date_out" [ScalarType "date"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "date_part"
+>           [ScalarType "text", ScalarType "abstime"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "date_part"
+>           [ScalarType "text", ScalarType "reltime"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "date_part"
+>           [ScalarType "text", ScalarType "date"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "date_part"
+>           [ScalarType "text", ScalarType "time"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "date_part"
+>           [ScalarType "text", ScalarType "timestamp"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "date_part"
+>           [ScalarType "text", ScalarType "timestamptz"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "date_part"
+>           [ScalarType "text", ScalarType "interval"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "date_part"
+>           [ScalarType "text", ScalarType "timetz"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "date_pl_interval"
+>           [ScalarType "date", ScalarType "interval"]
+>           (ScalarType "timestamp")
+>           False,
+>         CatCreateFunction FunName "date_pli"
+>           [ScalarType "date", ScalarType "int4"]
+>           (ScalarType "date")
+>           False,
+>         CatCreateFunction FunName "date_recv" [Pseudo Internal]
+>           (ScalarType "date")
+>           False,
+>         CatCreateFunction FunName "date_send" [ScalarType "date"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "date_smaller"
+>           [ScalarType "date", ScalarType "date"]
+>           (ScalarType "date")
+>           False,
+>         CatCreateFunction FunName "date_trunc"
+>           [ScalarType "text", ScalarType "timestamp"]
+>           (ScalarType "timestamp")
+>           False,
+>         CatCreateFunction FunName "date_trunc"
+>           [ScalarType "text", ScalarType "timestamptz"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName "date_trunc"
+>           [ScalarType "text", ScalarType "interval"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunName "datetime_pl"
+>           [ScalarType "date", ScalarType "time"]
+>           (ScalarType "timestamp")
+>           False,
+>         CatCreateFunction FunName "datetimetz_pl"
+>           [ScalarType "date", ScalarType "timetz"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName "dcbrt" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "decode"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "degrees" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "dexp" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "diagonal" [ScalarType "box"]
+>           (ScalarType "lseg")
+>           False,
+>         CatCreateFunction FunName "diameter" [ScalarType "circle"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "dispell_init" [Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "dispell_lexize"
+>           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
+>            Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "dist_cpoly"
+>           [ScalarType "circle", ScalarType "polygon"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "dist_lb"
+>           [ScalarType "line", ScalarType "box"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "dist_pb"
+>           [ScalarType "point", ScalarType "box"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "dist_pc"
+>           [ScalarType "point", ScalarType "circle"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "dist_pl"
+>           [ScalarType "point", ScalarType "line"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "dist_ppath"
+>           [ScalarType "point", ScalarType "path"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "dist_ps"
+>           [ScalarType "point", ScalarType "lseg"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "dist_sb"
+>           [ScalarType "lseg", ScalarType "box"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "dist_sl"
+>           [ScalarType "lseg", ScalarType "line"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "div"
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "dlog1" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "dlog10" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "domain_in"
+>           [Pseudo Cstring, ScalarType "oid", ScalarType "int4"]
+>           (Pseudo Any)
+>           False,
+>         CatCreateFunction FunName "domain_recv"
+>           [Pseudo Internal, ScalarType "oid", ScalarType "int4"]
+>           (Pseudo Any)
+>           False,
+>         CatCreateFunction FunName "dpow"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "dround" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "dsimple_init" [Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "dsimple_lexize"
+>           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
+>            Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "dsnowball_init" [Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "dsnowball_lexize"
+>           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
+>            Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "dsqrt" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "dsynonym_init" [Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "dsynonym_lexize"
+>           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
+>            Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "dtrunc" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "encode"
+>           [ScalarType "bytea", ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "enum_cmp"
+>           [Pseudo AnyEnum, Pseudo AnyEnum]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "enum_eq"
+>           [Pseudo AnyEnum, Pseudo AnyEnum]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "enum_first" [Pseudo AnyEnum]
+>           (Pseudo AnyEnum)
+>           False,
+>         CatCreateFunction FunName "enum_ge"
+>           [Pseudo AnyEnum, Pseudo AnyEnum]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "enum_gt"
+>           [Pseudo AnyEnum, Pseudo AnyEnum]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "enum_in"
+>           [Pseudo Cstring, ScalarType "oid"]
+>           (Pseudo AnyEnum)
+>           False,
+>         CatCreateFunction FunName "enum_larger"
+>           [Pseudo AnyEnum, Pseudo AnyEnum]
+>           (Pseudo AnyEnum)
+>           False,
+>         CatCreateFunction FunName "enum_last" [Pseudo AnyEnum]
+>           (Pseudo AnyEnum)
+>           False,
+>         CatCreateFunction FunName "enum_le"
+>           [Pseudo AnyEnum, Pseudo AnyEnum]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "enum_lt"
+>           [Pseudo AnyEnum, Pseudo AnyEnum]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "enum_ne"
+>           [Pseudo AnyEnum, Pseudo AnyEnum]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "enum_out" [Pseudo AnyEnum]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "enum_range" [Pseudo AnyEnum]
+>           (Pseudo AnyArray)
+>           False,
+>         CatCreateFunction FunName "enum_range"
+>           [Pseudo AnyEnum, Pseudo AnyEnum]
+>           (Pseudo AnyArray)
+>           False,
+>         CatCreateFunction FunName "enum_recv"
+>           [Pseudo Cstring, ScalarType "oid"]
+>           (Pseudo AnyEnum)
+>           False,
+>         CatCreateFunction FunName "enum_send" [Pseudo AnyEnum]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "enum_smaller"
+>           [Pseudo AnyEnum, Pseudo AnyEnum]
+>           (Pseudo AnyEnum)
+>           False,
+>         CatCreateFunction FunName "eqjoinsel"
+>           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
+>            ScalarType "int2", Pseudo Internal]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "eqsel"
+>           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
+>            ScalarType "int4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "euc_cn_to_mic"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "euc_cn_to_utf8"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "euc_jis_2004_to_shift_jis_2004"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "euc_jis_2004_to_utf8"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "euc_jp_to_mic"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "euc_jp_to_sjis"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "euc_jp_to_utf8"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "euc_kr_to_mic"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "euc_kr_to_utf8"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "euc_tw_to_big5"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "euc_tw_to_mic"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "euc_tw_to_utf8"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "exp" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "exp" [ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "factorial" [ScalarType "int8"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "family" [ScalarType "inet"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "flatfile_update_trigger" []
+>           (Pseudo Trigger)
+>           False,
+>         CatCreateFunction FunName "float4" [ScalarType "int8"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunName "float4" [ScalarType "int2"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunName "float4" [ScalarType "int4"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunName "float4" [ScalarType "float8"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunName "float4" [ScalarType "numeric"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunName "float48div"
+>           [ScalarType "float4", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float48eq"
+>           [ScalarType "float4", ScalarType "float8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "float48ge"
+>           [ScalarType "float4", ScalarType "float8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "float48gt"
+>           [ScalarType "float4", ScalarType "float8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "float48le"
+>           [ScalarType "float4", ScalarType "float8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "float48lt"
+>           [ScalarType "float4", ScalarType "float8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "float48mi"
+>           [ScalarType "float4", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float48mul"
+>           [ScalarType "float4", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float48ne"
+>           [ScalarType "float4", ScalarType "float8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "float48pl"
+>           [ScalarType "float4", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float4_accum"
+>           [ArrayType (ScalarType "float8"), ScalarType "float4"]
+>           (ArrayType (ScalarType "float8"))
+>           False,
+>         CatCreateFunction FunName "float4abs" [ScalarType "float4"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunName "float4div"
+>           [ScalarType "float4", ScalarType "float4"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunName "float4eq"
+>           [ScalarType "float4", ScalarType "float4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "float4ge"
+>           [ScalarType "float4", ScalarType "float4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "float4gt"
+>           [ScalarType "float4", ScalarType "float4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "float4in" [Pseudo Cstring]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunName "float4larger"
+>           [ScalarType "float4", ScalarType "float4"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunName "float4le"
+>           [ScalarType "float4", ScalarType "float4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "float4lt"
+>           [ScalarType "float4", ScalarType "float4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "float4mi"
+>           [ScalarType "float4", ScalarType "float4"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunName "float4mul"
+>           [ScalarType "float4", ScalarType "float4"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunName "float4ne"
+>           [ScalarType "float4", ScalarType "float4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "float4out" [ScalarType "float4"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "float4pl"
+>           [ScalarType "float4", ScalarType "float4"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunName "float4recv" [Pseudo Internal]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunName "float4send" [ScalarType "float4"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "float4smaller"
+>           [ScalarType "float4", ScalarType "float4"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunName "float4um" [ScalarType "float4"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunName "float4up" [ScalarType "float4"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunName "float8" [ScalarType "int8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float8" [ScalarType "int2"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float8" [ScalarType "int4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float8" [ScalarType "float4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float8" [ScalarType "numeric"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float84div"
+>           [ScalarType "float8", ScalarType "float4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float84eq"
+>           [ScalarType "float8", ScalarType "float4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "float84ge"
+>           [ScalarType "float8", ScalarType "float4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "float84gt"
+>           [ScalarType "float8", ScalarType "float4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "float84le"
+>           [ScalarType "float8", ScalarType "float4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "float84lt"
+>           [ScalarType "float8", ScalarType "float4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "float84mi"
+>           [ScalarType "float8", ScalarType "float4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float84mul"
+>           [ScalarType "float8", ScalarType "float4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float84ne"
+>           [ScalarType "float8", ScalarType "float4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "float84pl"
+>           [ScalarType "float8", ScalarType "float4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float8_accum"
+>           [ArrayType (ScalarType "float8"), ScalarType "float8"]
+>           (ArrayType (ScalarType "float8"))
+>           False,
+>         CatCreateFunction FunName "float8_avg"
+>           [ArrayType (ScalarType "float8")]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float8_corr"
+>           [ArrayType (ScalarType "float8")]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float8_covar_pop"
+>           [ArrayType (ScalarType "float8")]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float8_covar_samp"
+>           [ArrayType (ScalarType "float8")]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float8_regr_accum"
+>           [ArrayType (ScalarType "float8"), ScalarType "float8",
+>            ScalarType "float8"]
+>           (ArrayType (ScalarType "float8"))
+>           False,
+>         CatCreateFunction FunName "float8_regr_avgx"
+>           [ArrayType (ScalarType "float8")]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float8_regr_avgy"
+>           [ArrayType (ScalarType "float8")]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float8_regr_intercept"
+>           [ArrayType (ScalarType "float8")]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float8_regr_r2"
+>           [ArrayType (ScalarType "float8")]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float8_regr_slope"
+>           [ArrayType (ScalarType "float8")]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float8_regr_sxx"
+>           [ArrayType (ScalarType "float8")]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float8_regr_sxy"
+>           [ArrayType (ScalarType "float8")]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float8_regr_syy"
+>           [ArrayType (ScalarType "float8")]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float8_stddev_pop"
+>           [ArrayType (ScalarType "float8")]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float8_stddev_samp"
+>           [ArrayType (ScalarType "float8")]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float8_var_pop"
+>           [ArrayType (ScalarType "float8")]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float8_var_samp"
+>           [ArrayType (ScalarType "float8")]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float8abs" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float8div"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float8eq"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "float8ge"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "float8gt"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "float8in" [Pseudo Cstring]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float8larger"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float8le"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "float8lt"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "float8mi"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float8mul"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float8ne"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "float8out" [ScalarType "float8"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "float8pl"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float8recv" [Pseudo Internal]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float8send" [ScalarType "float8"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "float8smaller"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float8um" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "float8up" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "floor" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "floor" [ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "flt4_mul_cash"
+>           [ScalarType "float4", ScalarType "money"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunName "flt8_mul_cash"
+>           [ScalarType "float8", ScalarType "money"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunName "fmgr_c_validator" [ScalarType "oid"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "fmgr_internal_validator"
+>           [ScalarType "oid"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "fmgr_sql_validator" [ScalarType "oid"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "format_type"
+>           [ScalarType "oid", ScalarType "int4"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "gb18030_to_utf8"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "gbk_to_utf8"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "generate_series"
+>           [ScalarType "int8", ScalarType "int8"]
+>           (SetOfType (ScalarType "int8"))
+>           False,
+>         CatCreateFunction FunName "generate_series"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (SetOfType (ScalarType "int4"))
+>           False,
+>         CatCreateFunction FunName "generate_series"
+>           [ScalarType "int8", ScalarType "int8", ScalarType "int8"]
+>           (SetOfType (ScalarType "int8"))
+>           False,
+>         CatCreateFunction FunName "generate_series"
+>           [ScalarType "int4", ScalarType "int4", ScalarType "int4"]
+>           (SetOfType (ScalarType "int4"))
+>           False,
+>         CatCreateFunction FunName "generate_series"
+>           [ScalarType "timestamp", ScalarType "timestamp",
+>            ScalarType "interval"]
+>           (SetOfType (ScalarType "timestamp"))
+>           False,
+>         CatCreateFunction FunName "generate_series"
+>           [ScalarType "timestamptz", ScalarType "timestamptz",
+>            ScalarType "interval"]
+>           (SetOfType (ScalarType "timestamptz"))
+>           False,
+>         CatCreateFunction FunName "generate_subscripts"
+>           [Pseudo AnyArray, ScalarType "int4"]
+>           (SetOfType (ScalarType "int4"))
+>           False,
+>         CatCreateFunction FunName "generate_subscripts"
+>           [Pseudo AnyArray, ScalarType "int4", ScalarType "bool"]
+>           (SetOfType (ScalarType "int4"))
+>           False,
+>         CatCreateFunction FunName "get_bit"
+>           [ScalarType "bytea", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "get_byte"
+>           [ScalarType "bytea", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "get_current_ts_config" []
+>           (ScalarType "regconfig")
+>           False,
+>         CatCreateFunction FunName "getdatabaseencoding" []
+>           (ScalarType "name")
+>           False,
+>         CatCreateFunction FunName "getpgusername" [] (ScalarType "name")
+>           False,
+>         CatCreateFunction FunName "gin_cmp_prefix"
+>           [ScalarType "text", ScalarType "text", ScalarType "int2",
+>            Pseudo Internal]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "gin_cmp_tslexeme"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "gin_extract_tsquery"
+>           [ScalarType "tsquery", Pseudo Internal, ScalarType "int2",
+>            Pseudo Internal, Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "gin_extract_tsvector"
+>           [ScalarType "tsvector", Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "gin_tsquery_consistent"
+>           [Pseudo Internal, ScalarType "int2", ScalarType "tsquery",
+>            ScalarType "int4", Pseudo Internal, Pseudo Internal]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "ginarrayconsistent"
+>           [Pseudo Internal, ScalarType "int2", Pseudo AnyArray,
+>            ScalarType "int4", Pseudo Internal, Pseudo Internal]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "ginarrayextract"
+>           [Pseudo AnyArray, Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "ginbeginscan"
+>           [Pseudo Internal, Pseudo Internal, Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "ginbuild"
+>           [Pseudo Internal, Pseudo Internal, Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "ginbulkdelete"
+>           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
+>            Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "gincostestimate"
+>           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
+>            Pseudo Internal, Pseudo Internal, Pseudo Internal, Pseudo Internal,
+>            Pseudo Internal]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "ginendscan" [Pseudo Internal]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "gingetbitmap"
+>           [Pseudo Internal, Pseudo Internal]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "gininsert"
+>           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
+>            Pseudo Internal, Pseudo Internal, Pseudo Internal]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "ginmarkpos" [Pseudo Internal]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "ginoptions"
+>           [ArrayType (ScalarType "text"), ScalarType "bool"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "ginqueryarrayextract"
+>           [Pseudo AnyArray, Pseudo Internal, ScalarType "int2",
+>            Pseudo Internal, Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "ginrescan"
+>           [Pseudo Internal, Pseudo Internal]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "ginrestrpos" [Pseudo Internal]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "ginvacuumcleanup"
+>           [Pseudo Internal, Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "gist_box_compress" [Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "gist_box_consistent"
+>           [Pseudo Internal, ScalarType "box", ScalarType "int4",
+>            ScalarType "oid", Pseudo Internal]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "gist_box_decompress" [Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "gist_box_penalty"
+>           [Pseudo Internal, Pseudo Internal, Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "gist_box_picksplit"
+>           [Pseudo Internal, Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "gist_box_same"
+>           [ScalarType "box", ScalarType "box", Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "gist_box_union"
+>           [Pseudo Internal, Pseudo Internal]
+>           (ScalarType "box")
+>           False,
+>         CatCreateFunction FunName "gist_circle_compress" [Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "gist_circle_consistent"
+>           [Pseudo Internal, ScalarType "circle", ScalarType "int4",
+>            ScalarType "oid", Pseudo Internal]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "gist_poly_compress" [Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "gist_poly_consistent"
+>           [Pseudo Internal, ScalarType "polygon", ScalarType "int4",
+>            ScalarType "oid", Pseudo Internal]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "gistbeginscan"
+>           [Pseudo Internal, Pseudo Internal, Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "gistbuild"
+>           [Pseudo Internal, Pseudo Internal, Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "gistbulkdelete"
+>           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
+>            Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "gistcostestimate"
+>           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
+>            Pseudo Internal, Pseudo Internal, Pseudo Internal, Pseudo Internal,
+>            Pseudo Internal]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "gistendscan" [Pseudo Internal]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "gistgetbitmap"
+>           [Pseudo Internal, Pseudo Internal]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "gistgettuple"
+>           [Pseudo Internal, Pseudo Internal]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "gistinsert"
+>           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
+>            Pseudo Internal, Pseudo Internal, Pseudo Internal]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "gistmarkpos" [Pseudo Internal]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "gistoptions"
+>           [ArrayType (ScalarType "text"), ScalarType "bool"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "gistrescan"
+>           [Pseudo Internal, Pseudo Internal]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "gistrestrpos" [Pseudo Internal]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "gistvacuumcleanup"
+>           [Pseudo Internal, Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "gtsquery_compress" [Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "gtsquery_consistent"
+>           [Pseudo Internal, Pseudo Internal, ScalarType "int4",
+>            ScalarType "oid", Pseudo Internal]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "gtsquery_decompress" [Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "gtsquery_penalty"
+>           [Pseudo Internal, Pseudo Internal, Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "gtsquery_picksplit"
+>           [Pseudo Internal, Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "gtsquery_same"
+>           [ScalarType "int8", ScalarType "int8", Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "gtsquery_union"
+>           [Pseudo Internal, Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "gtsvector_compress" [Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "gtsvector_consistent"
+>           [Pseudo Internal, ScalarType "gtsvector", ScalarType "int4",
+>            ScalarType "oid", Pseudo Internal]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "gtsvector_decompress" [Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "gtsvector_penalty"
+>           [Pseudo Internal, Pseudo Internal, Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "gtsvector_picksplit"
+>           [Pseudo Internal, Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "gtsvector_same"
+>           [ScalarType "gtsvector", ScalarType "gtsvector", Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "gtsvector_union"
+>           [Pseudo Internal, Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "gtsvectorin" [Pseudo Cstring]
+>           (ScalarType "gtsvector")
+>           False,
+>         CatCreateFunction FunName "gtsvectorout" [ScalarType "gtsvector"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "has_any_column_privilege"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_any_column_privilege"
+>           [ScalarType "oid", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_any_column_privilege"
+>           [ScalarType "name", ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_any_column_privilege"
+>           [ScalarType "name", ScalarType "oid", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_any_column_privilege"
+>           [ScalarType "oid", ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_any_column_privilege"
+>           [ScalarType "oid", ScalarType "oid", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_column_privilege"
+>           [ScalarType "text", ScalarType "int2", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_column_privilege"
+>           [ScalarType "text", ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_column_privilege"
+>           [ScalarType "oid", ScalarType "int2", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_column_privilege"
+>           [ScalarType "oid", ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_column_privilege"
+>           [ScalarType "name", ScalarType "text", ScalarType "int2",
+>            ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_column_privilege"
+>           [ScalarType "name", ScalarType "text", ScalarType "text",
+>            ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_column_privilege"
+>           [ScalarType "name", ScalarType "oid", ScalarType "int2",
+>            ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_column_privilege"
+>           [ScalarType "name", ScalarType "oid", ScalarType "text",
+>            ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_column_privilege"
+>           [ScalarType "oid", ScalarType "text", ScalarType "int2",
+>            ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_column_privilege"
+>           [ScalarType "oid", ScalarType "text", ScalarType "text",
+>            ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_column_privilege"
+>           [ScalarType "oid", ScalarType "oid", ScalarType "int2",
+>            ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_column_privilege"
+>           [ScalarType "oid", ScalarType "oid", ScalarType "text",
+>            ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_database_privilege"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_database_privilege"
+>           [ScalarType "oid", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_database_privilege"
+>           [ScalarType "name", ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_database_privilege"
+>           [ScalarType "name", ScalarType "oid", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_database_privilege"
+>           [ScalarType "oid", ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_database_privilege"
+>           [ScalarType "oid", ScalarType "oid", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_foreign_data_wrapper_privilege"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_foreign_data_wrapper_privilege"
+>           [ScalarType "oid", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_foreign_data_wrapper_privilege"
+>           [ScalarType "name", ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_foreign_data_wrapper_privilege"
+>           [ScalarType "name", ScalarType "oid", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_foreign_data_wrapper_privilege"
+>           [ScalarType "oid", ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_foreign_data_wrapper_privilege"
+>           [ScalarType "oid", ScalarType "oid", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_function_privilege"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_function_privilege"
+>           [ScalarType "oid", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_function_privilege"
+>           [ScalarType "name", ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_function_privilege"
+>           [ScalarType "name", ScalarType "oid", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_function_privilege"
+>           [ScalarType "oid", ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_function_privilege"
+>           [ScalarType "oid", ScalarType "oid", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_language_privilege"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_language_privilege"
+>           [ScalarType "oid", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_language_privilege"
+>           [ScalarType "name", ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_language_privilege"
+>           [ScalarType "name", ScalarType "oid", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_language_privilege"
+>           [ScalarType "oid", ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_language_privilege"
+>           [ScalarType "oid", ScalarType "oid", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_schema_privilege"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_schema_privilege"
+>           [ScalarType "oid", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_schema_privilege"
+>           [ScalarType "name", ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_schema_privilege"
+>           [ScalarType "name", ScalarType "oid", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_schema_privilege"
+>           [ScalarType "oid", ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_schema_privilege"
+>           [ScalarType "oid", ScalarType "oid", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_server_privilege"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_server_privilege"
+>           [ScalarType "oid", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_server_privilege"
+>           [ScalarType "name", ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_server_privilege"
+>           [ScalarType "name", ScalarType "oid", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_server_privilege"
+>           [ScalarType "oid", ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_server_privilege"
+>           [ScalarType "oid", ScalarType "oid", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_table_privilege"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_table_privilege"
+>           [ScalarType "oid", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_table_privilege"
+>           [ScalarType "name", ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_table_privilege"
+>           [ScalarType "name", ScalarType "oid", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_table_privilege"
+>           [ScalarType "oid", ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_table_privilege"
+>           [ScalarType "oid", ScalarType "oid", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_tablespace_privilege"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_tablespace_privilege"
+>           [ScalarType "oid", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_tablespace_privilege"
+>           [ScalarType "name", ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_tablespace_privilege"
+>           [ScalarType "name", ScalarType "oid", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_tablespace_privilege"
+>           [ScalarType "oid", ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "has_tablespace_privilege"
+>           [ScalarType "oid", ScalarType "oid", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "hash_aclitem" [ScalarType "aclitem"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "hash_numeric" [ScalarType "numeric"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "hashbeginscan"
+>           [Pseudo Internal, Pseudo Internal, Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "hashbpchar" [ScalarType "bpchar"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "hashbuild"
+>           [Pseudo Internal, Pseudo Internal, Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "hashbulkdelete"
+>           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
+>            Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "hashchar" [ScalarType "char"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "hashcostestimate"
+>           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
+>            Pseudo Internal, Pseudo Internal, Pseudo Internal, Pseudo Internal,
+>            Pseudo Internal]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "hashendscan" [Pseudo Internal]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "hashenum" [Pseudo AnyEnum]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "hashfloat4" [ScalarType "float4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "hashfloat8" [ScalarType "float8"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "hashgetbitmap"
+>           [Pseudo Internal, Pseudo Internal]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "hashgettuple"
+>           [Pseudo Internal, Pseudo Internal]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "hashinet" [ScalarType "inet"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "hashinsert"
+>           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
+>            Pseudo Internal, Pseudo Internal, Pseudo Internal]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "hashint2" [ScalarType "int2"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "hashint2vector"
+>           [ScalarType "int2vector"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "hashint4" [ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "hashint8" [ScalarType "int8"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "hashmacaddr" [ScalarType "macaddr"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "hashmarkpos" [Pseudo Internal]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "hashname" [ScalarType "name"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "hashoid" [ScalarType "oid"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "hashoidvector" [ScalarType "oidvector"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "hashoptions"
+>           [ArrayType (ScalarType "text"), ScalarType "bool"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "hashrescan"
+>           [Pseudo Internal, Pseudo Internal]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "hashrestrpos" [Pseudo Internal]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "hashtext" [ScalarType "text"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "hashvacuumcleanup"
+>           [Pseudo Internal, Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "hashvarlena" [Pseudo Internal]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "height" [ScalarType "box"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "host" [ScalarType "inet"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "hostmask" [ScalarType "inet"]
+>           (ScalarType "inet")
+>           False,
+>         CatCreateFunction FunName "iclikejoinsel"
+>           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
+>            ScalarType "int2", Pseudo Internal]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "iclikesel"
+>           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
+>            ScalarType "int4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "icnlikejoinsel"
+>           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
+>            ScalarType "int2", Pseudo Internal]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "icnlikesel"
+>           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
+>            ScalarType "int4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "icregexeqjoinsel"
+>           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
+>            ScalarType "int2", Pseudo Internal]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "icregexeqsel"
+>           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
+>            ScalarType "int4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "icregexnejoinsel"
+>           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
+>            ScalarType "int2", Pseudo Internal]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "icregexnesel"
+>           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
+>            ScalarType "int4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "inet_client_addr" [] (ScalarType "inet")
+>           False,
+>         CatCreateFunction FunName "inet_client_port" [] (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "inet_in" [Pseudo Cstring]
+>           (ScalarType "inet")
+>           False,
+>         CatCreateFunction FunName "inet_out" [ScalarType "inet"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "inet_recv" [Pseudo Internal]
+>           (ScalarType "inet")
+>           False,
+>         CatCreateFunction FunName "inet_send" [ScalarType "inet"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "inet_server_addr" [] (ScalarType "inet")
+>           False,
+>         CatCreateFunction FunName "inet_server_port" [] (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "inetand"
+>           [ScalarType "inet", ScalarType "inet"]
+>           (ScalarType "inet")
+>           False,
+>         CatCreateFunction FunName "inetmi"
+>           [ScalarType "inet", ScalarType "inet"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "inetmi_int8"
+>           [ScalarType "inet", ScalarType "int8"]
+>           (ScalarType "inet")
+>           False,
+>         CatCreateFunction FunName "inetnot" [ScalarType "inet"]
+>           (ScalarType "inet")
+>           False,
+>         CatCreateFunction FunName "inetor"
+>           [ScalarType "inet", ScalarType "inet"]
+>           (ScalarType "inet")
+>           False,
+>         CatCreateFunction FunName "inetpl"
+>           [ScalarType "inet", ScalarType "int8"]
+>           (ScalarType "inet")
+>           False,
+>         CatCreateFunction FunName "initcap" [ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "int2" [ScalarType "int8"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunName "int2" [ScalarType "int4"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunName "int2" [ScalarType "float4"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunName "int2" [ScalarType "float8"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunName "int2" [ScalarType "numeric"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunName "int24div"
+>           [ScalarType "int2", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int24eq"
+>           [ScalarType "int2", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int24ge"
+>           [ScalarType "int2", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int24gt"
+>           [ScalarType "int2", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int24le"
+>           [ScalarType "int2", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int24lt"
+>           [ScalarType "int2", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int24mi"
+>           [ScalarType "int2", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int24mul"
+>           [ScalarType "int2", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int24ne"
+>           [ScalarType "int2", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int24pl"
+>           [ScalarType "int2", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int28div"
+>           [ScalarType "int2", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int28eq"
+>           [ScalarType "int2", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int28ge"
+>           [ScalarType "int2", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int28gt"
+>           [ScalarType "int2", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int28le"
+>           [ScalarType "int2", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int28lt"
+>           [ScalarType "int2", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int28mi"
+>           [ScalarType "int2", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int28mul"
+>           [ScalarType "int2", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int28ne"
+>           [ScalarType "int2", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int28pl"
+>           [ScalarType "int2", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int2_accum"
+>           [ArrayType (ScalarType "numeric"), ScalarType "int2"]
+>           (ArrayType (ScalarType "numeric"))
+>           False,
+>         CatCreateFunction FunName "int2_avg_accum"
+>           [ArrayType (ScalarType "int8"), ScalarType "int2"]
+>           (ArrayType (ScalarType "int8"))
+>           False,
+>         CatCreateFunction FunName "int2_mul_cash"
+>           [ScalarType "int2", ScalarType "money"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunName "int2_sum"
+>           [ScalarType "int8", ScalarType "int2"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int2abs" [ScalarType "int2"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunName "int2and"
+>           [ScalarType "int2", ScalarType "int2"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunName "int2div"
+>           [ScalarType "int2", ScalarType "int2"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunName "int2eq"
+>           [ScalarType "int2", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int2ge"
+>           [ScalarType "int2", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int2gt"
+>           [ScalarType "int2", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int2in" [Pseudo Cstring]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunName "int2larger"
+>           [ScalarType "int2", ScalarType "int2"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunName "int2le"
+>           [ScalarType "int2", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int2lt"
+>           [ScalarType "int2", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int2mi"
+>           [ScalarType "int2", ScalarType "int2"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunName "int2mod"
+>           [ScalarType "int2", ScalarType "int2"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunName "int2mul"
+>           [ScalarType "int2", ScalarType "int2"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunName "int2ne"
+>           [ScalarType "int2", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int2not" [ScalarType "int2"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunName "int2or"
+>           [ScalarType "int2", ScalarType "int2"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunName "int2out" [ScalarType "int2"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "int2pl"
+>           [ScalarType "int2", ScalarType "int2"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunName "int2recv" [Pseudo Internal]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunName "int2send" [ScalarType "int2"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "int2shl"
+>           [ScalarType "int2", ScalarType "int4"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunName "int2shr"
+>           [ScalarType "int2", ScalarType "int4"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunName "int2smaller"
+>           [ScalarType "int2", ScalarType "int2"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunName "int2um" [ScalarType "int2"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunName "int2up" [ScalarType "int2"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunName "int2vectoreq"
+>           [ScalarType "int2vector", ScalarType "int2vector"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int2vectorin" [Pseudo Cstring]
+>           (ScalarType "int2vector")
+>           False,
+>         CatCreateFunction FunName "int2vectorout" [ScalarType "int2vector"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "int2vectorrecv" [Pseudo Internal]
+>           (ScalarType "int2vector")
+>           False,
+>         CatCreateFunction FunName "int2vectorsend"
+>           [ScalarType "int2vector"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "int2xor"
+>           [ScalarType "int2", ScalarType "int2"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunName "int4" [ScalarType "bool"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int4" [ScalarType "char"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int4" [ScalarType "int8"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int4" [ScalarType "int2"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int4" [ScalarType "float4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int4" [ScalarType "float8"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int4" [ScalarType "bit"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int4" [ScalarType "numeric"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int42div"
+>           [ScalarType "int4", ScalarType "int2"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int42eq"
+>           [ScalarType "int4", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int42ge"
+>           [ScalarType "int4", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int42gt"
+>           [ScalarType "int4", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int42le"
+>           [ScalarType "int4", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int42lt"
+>           [ScalarType "int4", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int42mi"
+>           [ScalarType "int4", ScalarType "int2"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int42mul"
+>           [ScalarType "int4", ScalarType "int2"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int42ne"
+>           [ScalarType "int4", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int42pl"
+>           [ScalarType "int4", ScalarType "int2"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int48div"
+>           [ScalarType "int4", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int48eq"
+>           [ScalarType "int4", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int48ge"
+>           [ScalarType "int4", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int48gt"
+>           [ScalarType "int4", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int48le"
+>           [ScalarType "int4", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int48lt"
+>           [ScalarType "int4", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int48mi"
+>           [ScalarType "int4", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int48mul"
+>           [ScalarType "int4", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int48ne"
+>           [ScalarType "int4", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int48pl"
+>           [ScalarType "int4", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int4_accum"
+>           [ArrayType (ScalarType "numeric"), ScalarType "int4"]
+>           (ArrayType (ScalarType "numeric"))
+>           False,
+>         CatCreateFunction FunName "int4_avg_accum"
+>           [ArrayType (ScalarType "int8"), ScalarType "int4"]
+>           (ArrayType (ScalarType "int8"))
+>           False,
+>         CatCreateFunction FunName "int4_mul_cash"
+>           [ScalarType "int4", ScalarType "money"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunName "int4_sum"
+>           [ScalarType "int8", ScalarType "int4"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int4abs" [ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int4and"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int4div"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int4eq"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int4ge"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int4gt"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int4in" [Pseudo Cstring]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int4inc" [ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int4larger"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int4le"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int4lt"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int4mi"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int4mod"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int4mul"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int4ne"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int4not" [ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int4or"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int4out" [ScalarType "int4"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "int4pl"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int4recv" [Pseudo Internal]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int4send" [ScalarType "int4"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "int4shl"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int4shr"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int4smaller"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int4um" [ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int4up" [ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int4xor"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "int8" [ScalarType "int2"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int8" [ScalarType "int4"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int8" [ScalarType "oid"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int8" [ScalarType "float4"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int8" [ScalarType "float8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int8" [ScalarType "bit"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int8" [ScalarType "numeric"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int82div"
+>           [ScalarType "int8", ScalarType "int2"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int82eq"
+>           [ScalarType "int8", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int82ge"
+>           [ScalarType "int8", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int82gt"
+>           [ScalarType "int8", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int82le"
+>           [ScalarType "int8", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int82lt"
+>           [ScalarType "int8", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int82mi"
+>           [ScalarType "int8", ScalarType "int2"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int82mul"
+>           [ScalarType "int8", ScalarType "int2"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int82ne"
+>           [ScalarType "int8", ScalarType "int2"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int82pl"
+>           [ScalarType "int8", ScalarType "int2"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int84div"
+>           [ScalarType "int8", ScalarType "int4"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int84eq"
+>           [ScalarType "int8", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int84ge"
+>           [ScalarType "int8", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int84gt"
+>           [ScalarType "int8", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int84le"
+>           [ScalarType "int8", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int84lt"
+>           [ScalarType "int8", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int84mi"
+>           [ScalarType "int8", ScalarType "int4"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int84mul"
+>           [ScalarType "int8", ScalarType "int4"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int84ne"
+>           [ScalarType "int8", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int84pl"
+>           [ScalarType "int8", ScalarType "int4"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int8_accum"
+>           [ArrayType (ScalarType "numeric"), ScalarType "int8"]
+>           (ArrayType (ScalarType "numeric"))
+>           False,
+>         CatCreateFunction FunName "int8_avg"
+>           [ArrayType (ScalarType "int8")]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "int8_avg_accum"
+>           [ArrayType (ScalarType "numeric"), ScalarType "int8"]
+>           (ArrayType (ScalarType "numeric"))
+>           False,
+>         CatCreateFunction FunName "int8_sum"
+>           [ScalarType "numeric", ScalarType "int8"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "int8abs" [ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int8and"
+>           [ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int8div"
+>           [ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int8eq"
+>           [ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int8ge"
+>           [ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int8gt"
+>           [ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int8in" [Pseudo Cstring]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int8inc" [ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int8inc_any"
+>           [ScalarType "int8", Pseudo Any]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int8inc_float8_float8"
+>           [ScalarType "int8", ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int8larger"
+>           [ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int8le"
+>           [ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int8lt"
+>           [ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int8mi"
+>           [ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int8mod"
+>           [ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int8mul"
+>           [ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int8ne"
+>           [ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "int8not" [ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int8or"
+>           [ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int8out" [ScalarType "int8"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "int8pl"
+>           [ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int8pl_inet"
+>           [ScalarType "int8", ScalarType "inet"]
+>           (ScalarType "inet")
+>           False,
+>         CatCreateFunction FunName "int8recv" [Pseudo Internal]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int8send" [ScalarType "int8"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "int8shl"
+>           [ScalarType "int8", ScalarType "int4"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int8shr"
+>           [ScalarType "int8", ScalarType "int4"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int8smaller"
+>           [ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int8um" [ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int8up" [ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "int8xor"
+>           [ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "integer_pl_date"
+>           [ScalarType "int4", ScalarType "date"]
+>           (ScalarType "date")
+>           False,
+>         CatCreateFunction FunName "inter_lb"
+>           [ScalarType "line", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "inter_sb"
+>           [ScalarType "lseg", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "inter_sl"
+>           [ScalarType "lseg", ScalarType "line"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "internal_in" [Pseudo Cstring]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "internal_out" [Pseudo Internal]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "interval" [ScalarType "reltime"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunName "interval" [ScalarType "time"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunName "interval"
+>           [ScalarType "interval", ScalarType "int4"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunName "interval_accum"
+>           [ArrayType (ScalarType "interval"), ScalarType "interval"]
+>           (ArrayType (ScalarType "interval"))
+>           False,
+>         CatCreateFunction FunName "interval_avg"
+>           [ArrayType (ScalarType "interval")]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunName "interval_cmp"
+>           [ScalarType "interval", ScalarType "interval"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "interval_div"
+>           [ScalarType "interval", ScalarType "float8"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunName "interval_eq"
+>           [ScalarType "interval", ScalarType "interval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "interval_ge"
+>           [ScalarType "interval", ScalarType "interval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "interval_gt"
+>           [ScalarType "interval", ScalarType "interval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "interval_hash" [ScalarType "interval"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "interval_in"
+>           [Pseudo Cstring, ScalarType "oid", ScalarType "int4"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunName "interval_larger"
+>           [ScalarType "interval", ScalarType "interval"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunName "interval_le"
+>           [ScalarType "interval", ScalarType "interval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "interval_lt"
+>           [ScalarType "interval", ScalarType "interval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "interval_mi"
+>           [ScalarType "interval", ScalarType "interval"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunName "interval_mul"
+>           [ScalarType "interval", ScalarType "float8"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunName "interval_ne"
+>           [ScalarType "interval", ScalarType "interval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "interval_out" [ScalarType "interval"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "interval_pl"
+>           [ScalarType "interval", ScalarType "interval"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunName "interval_pl_date"
+>           [ScalarType "interval", ScalarType "date"]
+>           (ScalarType "timestamp")
+>           False,
+>         CatCreateFunction FunName "interval_pl_time"
+>           [ScalarType "interval", ScalarType "time"]
+>           (ScalarType "time")
+>           False,
+>         CatCreateFunction FunName "interval_pl_timestamp"
+>           [ScalarType "interval", ScalarType "timestamp"]
+>           (ScalarType "timestamp")
+>           False,
+>         CatCreateFunction FunName "interval_pl_timestamptz"
+>           [ScalarType "interval", ScalarType "timestamptz"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName "interval_pl_timetz"
+>           [ScalarType "interval", ScalarType "timetz"]
+>           (ScalarType "timetz")
+>           False,
+>         CatCreateFunction FunName "interval_recv"
+>           [Pseudo Internal, ScalarType "oid", ScalarType "int4"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunName "interval_send" [ScalarType "interval"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "interval_smaller"
+>           [ScalarType "interval", ScalarType "interval"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunName "interval_um" [ScalarType "interval"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunName "intervaltypmodin"
+>           [ArrayType (Pseudo Cstring)]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "intervaltypmodout" [ScalarType "int4"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "intinterval"
+>           [ScalarType "abstime", ScalarType "tinterval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "isclosed" [ScalarType "path"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "isfinite" [ScalarType "abstime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "isfinite" [ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "isfinite" [ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "isfinite" [ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "isfinite" [ScalarType "interval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "ishorizontal" [ScalarType "lseg"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "ishorizontal" [ScalarType "line"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "ishorizontal"
+>           [ScalarType "point", ScalarType "point"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "iso8859_1_to_utf8"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "iso8859_to_utf8"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "iso_to_koi8r"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "iso_to_mic"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "iso_to_win1251"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "iso_to_win866"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "isopen" [ScalarType "path"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "isparallel"
+>           [ScalarType "lseg", ScalarType "lseg"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "isparallel"
+>           [ScalarType "line", ScalarType "line"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "isperp"
+>           [ScalarType "lseg", ScalarType "lseg"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "isperp"
+>           [ScalarType "line", ScalarType "line"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "isvertical" [ScalarType "lseg"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "isvertical" [ScalarType "line"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "isvertical"
+>           [ScalarType "point", ScalarType "point"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "johab_to_utf8"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "justify_days" [ScalarType "interval"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunName "justify_hours" [ScalarType "interval"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunName "justify_interval"
+>           [ScalarType "interval"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunName "koi8r_to_iso"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "koi8r_to_mic"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "koi8r_to_utf8"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "koi8r_to_win1251"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "koi8r_to_win866"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "koi8u_to_utf8"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "language_handler_in" [Pseudo Cstring]
+>           (Pseudo LanguageHandler)
+>           False,
+>         CatCreateFunction FunName "language_handler_out"
+>           [Pseudo LanguageHandler]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "lastval" [] (ScalarType "int8") False,
+>         CatCreateFunction FunName "latin1_to_mic"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "latin2_to_mic"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "latin2_to_win1250"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "latin3_to_mic"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "latin4_to_mic"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "length" [ScalarType "bytea"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "length" [ScalarType "text"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "length" [ScalarType "lseg"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "length" [ScalarType "path"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "length" [ScalarType "bpchar"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "length" [ScalarType "bit"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "length" [ScalarType "tsvector"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "length"
+>           [ScalarType "bytea", ScalarType "name"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "like"
+>           [ScalarType "bytea", ScalarType "bytea"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "like"
+>           [ScalarType "name", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "like"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "like_escape"
+>           [ScalarType "bytea", ScalarType "bytea"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "like_escape"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "likejoinsel"
+>           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
+>            ScalarType "int2", Pseudo Internal]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "likesel"
+>           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
+>            ScalarType "int4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "line"
+>           [ScalarType "point", ScalarType "point"]
+>           (ScalarType "line")
+>           False,
+>         CatCreateFunction FunName "line_distance"
+>           [ScalarType "line", ScalarType "line"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "line_eq"
+>           [ScalarType "line", ScalarType "line"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "line_horizontal" [ScalarType "line"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "line_in" [Pseudo Cstring]
+>           (ScalarType "line")
+>           False,
+>         CatCreateFunction FunName "line_interpt"
+>           [ScalarType "line", ScalarType "line"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunName "line_intersect"
+>           [ScalarType "line", ScalarType "line"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "line_out" [ScalarType "line"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "line_parallel"
+>           [ScalarType "line", ScalarType "line"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "line_perp"
+>           [ScalarType "line", ScalarType "line"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "line_recv" [Pseudo Internal]
+>           (ScalarType "line")
+>           False,
+>         CatCreateFunction FunName "line_send" [ScalarType "line"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "line_vertical" [ScalarType "line"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "ln" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "ln" [ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "lo_close" [ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "lo_creat" [ScalarType "int4"]
+>           (ScalarType "oid")
+>           False,
+>         CatCreateFunction FunName "lo_create" [ScalarType "oid"]
+>           (ScalarType "oid")
+>           False,
+>         CatCreateFunction FunName "lo_export"
+>           [ScalarType "oid", ScalarType "text"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "lo_import" [ScalarType "text"]
+>           (ScalarType "oid")
+>           False,
+>         CatCreateFunction FunName "lo_import"
+>           [ScalarType "text", ScalarType "oid"]
+>           (ScalarType "oid")
+>           False,
+>         CatCreateFunction FunName "lo_lseek"
+>           [ScalarType "int4", ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "lo_open"
+>           [ScalarType "oid", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "lo_tell" [ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "lo_truncate"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "lo_unlink" [ScalarType "oid"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "log" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "log" [ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "log"
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "loread"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "lower" [ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "lowrite"
+>           [ScalarType "int4", ScalarType "bytea"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "lpad"
+>           [ScalarType "text", ScalarType "int4"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "lpad"
+>           [ScalarType "text", ScalarType "int4", ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "lseg" [ScalarType "box"]
+>           (ScalarType "lseg")
+>           False,
+>         CatCreateFunction FunName "lseg"
+>           [ScalarType "point", ScalarType "point"]
+>           (ScalarType "lseg")
+>           False,
+>         CatCreateFunction FunName "lseg_center" [ScalarType "lseg"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunName "lseg_distance"
+>           [ScalarType "lseg", ScalarType "lseg"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "lseg_eq"
+>           [ScalarType "lseg", ScalarType "lseg"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "lseg_ge"
+>           [ScalarType "lseg", ScalarType "lseg"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "lseg_gt"
+>           [ScalarType "lseg", ScalarType "lseg"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "lseg_horizontal" [ScalarType "lseg"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "lseg_in" [Pseudo Cstring]
+>           (ScalarType "lseg")
+>           False,
+>         CatCreateFunction FunName "lseg_interpt"
+>           [ScalarType "lseg", ScalarType "lseg"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunName "lseg_intersect"
+>           [ScalarType "lseg", ScalarType "lseg"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "lseg_le"
+>           [ScalarType "lseg", ScalarType "lseg"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "lseg_length" [ScalarType "lseg"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "lseg_lt"
+>           [ScalarType "lseg", ScalarType "lseg"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "lseg_ne"
+>           [ScalarType "lseg", ScalarType "lseg"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "lseg_out" [ScalarType "lseg"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "lseg_parallel"
+>           [ScalarType "lseg", ScalarType "lseg"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "lseg_perp"
+>           [ScalarType "lseg", ScalarType "lseg"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "lseg_recv" [Pseudo Internal]
+>           (ScalarType "lseg")
+>           False,
+>         CatCreateFunction FunName "lseg_send" [ScalarType "lseg"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "lseg_vertical" [ScalarType "lseg"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "ltrim" [ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "ltrim"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "macaddr_cmp"
+>           [ScalarType "macaddr", ScalarType "macaddr"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "macaddr_eq"
+>           [ScalarType "macaddr", ScalarType "macaddr"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "macaddr_ge"
+>           [ScalarType "macaddr", ScalarType "macaddr"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "macaddr_gt"
+>           [ScalarType "macaddr", ScalarType "macaddr"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "macaddr_in" [Pseudo Cstring]
+>           (ScalarType "macaddr")
+>           False,
+>         CatCreateFunction FunName "macaddr_le"
+>           [ScalarType "macaddr", ScalarType "macaddr"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "macaddr_lt"
+>           [ScalarType "macaddr", ScalarType "macaddr"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "macaddr_ne"
+>           [ScalarType "macaddr", ScalarType "macaddr"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "macaddr_out" [ScalarType "macaddr"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "macaddr_recv" [Pseudo Internal]
+>           (ScalarType "macaddr")
+>           False,
+>         CatCreateFunction FunName "macaddr_send" [ScalarType "macaddr"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "makeaclitem"
+>           [ScalarType "oid", ScalarType "oid", ScalarType "text",
+>            ScalarType "bool"]
+>           (ScalarType "aclitem")
+>           False,
+>         CatCreateFunction FunName "masklen" [ScalarType "inet"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "md5" [ScalarType "bytea"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "md5" [ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "mic_to_ascii"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "mic_to_big5"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "mic_to_euc_cn"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "mic_to_euc_jp"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "mic_to_euc_kr"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "mic_to_euc_tw"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "mic_to_iso"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "mic_to_koi8r"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "mic_to_latin1"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "mic_to_latin2"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "mic_to_latin3"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "mic_to_latin4"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "mic_to_sjis"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "mic_to_win1250"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "mic_to_win1251"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "mic_to_win866"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "mktinterval"
+>           [ScalarType "abstime", ScalarType "abstime"]
+>           (ScalarType "tinterval")
+>           False,
+>         CatCreateFunction FunName "mod"
+>           [ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "mod"
+>           [ScalarType "int2", ScalarType "int2"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunName "mod"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "mod"
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "mul_d_interval"
+>           [ScalarType "float8", ScalarType "interval"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunName "name" [ScalarType "text"]
+>           (ScalarType "name")
+>           False,
+>         CatCreateFunction FunName "name" [ScalarType "bpchar"]
+>           (ScalarType "name")
+>           False,
+>         CatCreateFunction FunName "name" [ScalarType "varchar"]
+>           (ScalarType "name")
+>           False,
+>         CatCreateFunction FunName "nameeq"
+>           [ScalarType "name", ScalarType "name"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "namege"
+>           [ScalarType "name", ScalarType "name"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "namegt"
+>           [ScalarType "name", ScalarType "name"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "nameiclike"
+>           [ScalarType "name", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "nameicnlike"
+>           [ScalarType "name", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "nameicregexeq"
+>           [ScalarType "name", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "nameicregexne"
+>           [ScalarType "name", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "namein" [Pseudo Cstring]
+>           (ScalarType "name")
+>           False,
+>         CatCreateFunction FunName "namele"
+>           [ScalarType "name", ScalarType "name"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "namelike"
+>           [ScalarType "name", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "namelt"
+>           [ScalarType "name", ScalarType "name"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "namene"
+>           [ScalarType "name", ScalarType "name"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "namenlike"
+>           [ScalarType "name", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "nameout" [ScalarType "name"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "namerecv" [Pseudo Internal]
+>           (ScalarType "name")
+>           False,
+>         CatCreateFunction FunName "nameregexeq"
+>           [ScalarType "name", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "nameregexne"
+>           [ScalarType "name", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "namesend" [ScalarType "name"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "neqjoinsel"
+>           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
+>            ScalarType "int2", Pseudo Internal]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "neqsel"
+>           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
+>            ScalarType "int4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "netmask" [ScalarType "inet"]
+>           (ScalarType "inet")
+>           False,
+>         CatCreateFunction FunName "network" [ScalarType "inet"]
+>           (ScalarType "cidr")
+>           False,
+>         CatCreateFunction FunName "network_cmp"
+>           [ScalarType "inet", ScalarType "inet"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "network_eq"
+>           [ScalarType "inet", ScalarType "inet"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "network_ge"
+>           [ScalarType "inet", ScalarType "inet"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "network_gt"
+>           [ScalarType "inet", ScalarType "inet"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "network_le"
+>           [ScalarType "inet", ScalarType "inet"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "network_lt"
+>           [ScalarType "inet", ScalarType "inet"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "network_ne"
+>           [ScalarType "inet", ScalarType "inet"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "network_sub"
+>           [ScalarType "inet", ScalarType "inet"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "network_subeq"
+>           [ScalarType "inet", ScalarType "inet"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "network_sup"
+>           [ScalarType "inet", ScalarType "inet"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "network_supeq"
+>           [ScalarType "inet", ScalarType "inet"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "nextval" [ScalarType "regclass"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "nlikejoinsel"
+>           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
+>            ScalarType "int2", Pseudo Internal]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "nlikesel"
+>           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
+>            ScalarType "int4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "notlike"
+>           [ScalarType "bytea", ScalarType "bytea"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "notlike"
+>           [ScalarType "name", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "notlike"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "now" [] (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName "npoints" [ScalarType "path"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "npoints" [ScalarType "polygon"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "numeric" [ScalarType "int8"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "numeric" [ScalarType "int2"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "numeric" [ScalarType "int4"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "numeric" [ScalarType "float4"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "numeric" [ScalarType "float8"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "numeric"
+>           [ScalarType "numeric", ScalarType "int4"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "numeric_abs" [ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "numeric_accum"
+>           [ArrayType (ScalarType "numeric"), ScalarType "numeric"]
+>           (ArrayType (ScalarType "numeric"))
+>           False,
+>         CatCreateFunction FunName "numeric_add"
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "numeric_avg"
+>           [ArrayType (ScalarType "numeric")]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "numeric_avg_accum"
+>           [ArrayType (ScalarType "numeric"), ScalarType "numeric"]
+>           (ArrayType (ScalarType "numeric"))
+>           False,
+>         CatCreateFunction FunName "numeric_cmp"
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "numeric_div"
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "numeric_div_trunc"
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "numeric_eq"
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "numeric_exp" [ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "numeric_fac" [ScalarType "int8"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "numeric_ge"
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "numeric_gt"
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "numeric_in"
+>           [Pseudo Cstring, ScalarType "oid", ScalarType "int4"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "numeric_inc" [ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "numeric_larger"
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "numeric_le"
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "numeric_ln" [ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "numeric_log"
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "numeric_lt"
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "numeric_mod"
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "numeric_mul"
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "numeric_ne"
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "numeric_out" [ScalarType "numeric"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "numeric_power"
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "numeric_recv"
+>           [Pseudo Internal, ScalarType "oid", ScalarType "int4"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "numeric_send" [ScalarType "numeric"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "numeric_smaller"
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "numeric_sqrt" [ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "numeric_stddev_pop"
+>           [ArrayType (ScalarType "numeric")]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "numeric_stddev_samp"
+>           [ArrayType (ScalarType "numeric")]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "numeric_sub"
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "numeric_uminus" [ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "numeric_uplus" [ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "numeric_var_pop"
+>           [ArrayType (ScalarType "numeric")]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "numeric_var_samp"
+>           [ArrayType (ScalarType "numeric")]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "numerictypmodin"
+>           [ArrayType (Pseudo Cstring)]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "numerictypmodout" [ScalarType "int4"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "numnode" [ScalarType "tsquery"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "obj_description" [ScalarType "oid"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "obj_description"
+>           [ScalarType "oid", ScalarType "name"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "octet_length" [ScalarType "bytea"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "octet_length" [ScalarType "text"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "octet_length" [ScalarType "bpchar"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "octet_length" [ScalarType "bit"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "oid" [ScalarType "int8"]
+>           (ScalarType "oid")
+>           False,
+>         CatCreateFunction FunName "oideq"
+>           [ScalarType "oid", ScalarType "oid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "oidge"
+>           [ScalarType "oid", ScalarType "oid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "oidgt"
+>           [ScalarType "oid", ScalarType "oid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "oidin" [Pseudo Cstring]
+>           (ScalarType "oid")
+>           False,
+>         CatCreateFunction FunName "oidlarger"
+>           [ScalarType "oid", ScalarType "oid"]
+>           (ScalarType "oid")
+>           False,
+>         CatCreateFunction FunName "oidle"
+>           [ScalarType "oid", ScalarType "oid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "oidlt"
+>           [ScalarType "oid", ScalarType "oid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "oidne"
+>           [ScalarType "oid", ScalarType "oid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "oidout" [ScalarType "oid"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "oidrecv" [Pseudo Internal]
+>           (ScalarType "oid")
+>           False,
+>         CatCreateFunction FunName "oidsend" [ScalarType "oid"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "oidsmaller"
+>           [ScalarType "oid", ScalarType "oid"]
+>           (ScalarType "oid")
+>           False,
+>         CatCreateFunction FunName "oidvectoreq"
+>           [ScalarType "oidvector", ScalarType "oidvector"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "oidvectorge"
+>           [ScalarType "oidvector", ScalarType "oidvector"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "oidvectorgt"
+>           [ScalarType "oidvector", ScalarType "oidvector"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "oidvectorin" [Pseudo Cstring]
+>           (ScalarType "oidvector")
+>           False,
+>         CatCreateFunction FunName "oidvectorle"
+>           [ScalarType "oidvector", ScalarType "oidvector"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "oidvectorlt"
+>           [ScalarType "oidvector", ScalarType "oidvector"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "oidvectorne"
+>           [ScalarType "oidvector", ScalarType "oidvector"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "oidvectorout" [ScalarType "oidvector"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "oidvectorrecv" [Pseudo Internal]
+>           (ScalarType "oidvector")
+>           False,
+>         CatCreateFunction FunName "oidvectorsend" [ScalarType "oidvector"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "oidvectortypes" [ScalarType "oidvector"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "on_pb"
+>           [ScalarType "point", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "on_pl"
+>           [ScalarType "point", ScalarType "line"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "on_ppath"
+>           [ScalarType "point", ScalarType "path"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "on_ps"
+>           [ScalarType "point", ScalarType "lseg"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "on_sb"
+>           [ScalarType "lseg", ScalarType "box"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "on_sl"
+>           [ScalarType "lseg", ScalarType "line"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "opaque_in" [Pseudo Cstring]
+>           (Pseudo Opaque)
+>           False,
+>         CatCreateFunction FunName "opaque_out" [Pseudo Opaque]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "overlaps"
+>           [ScalarType "time", ScalarType "time", ScalarType "time",
+>            ScalarType "time"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "overlaps"
+>           [ScalarType "time", ScalarType "time", ScalarType "time",
+>            ScalarType "interval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "overlaps"
+>           [ScalarType "time", ScalarType "interval", ScalarType "time",
+>            ScalarType "time"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "overlaps"
+>           [ScalarType "time", ScalarType "interval", ScalarType "time",
+>            ScalarType "interval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "overlaps"
+>           [ScalarType "timestamp", ScalarType "timestamp",
+>            ScalarType "timestamp", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "overlaps"
+>           [ScalarType "timestamp", ScalarType "timestamp",
+>            ScalarType "timestamp", ScalarType "interval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "overlaps"
+>           [ScalarType "timestamp", ScalarType "interval",
+>            ScalarType "timestamp", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "overlaps"
+>           [ScalarType "timestamp", ScalarType "interval",
+>            ScalarType "timestamp", ScalarType "interval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "overlaps"
+>           [ScalarType "timestamptz", ScalarType "timestamptz",
+>            ScalarType "timestamptz", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "overlaps"
+>           [ScalarType "timestamptz", ScalarType "timestamptz",
+>            ScalarType "timestamptz", ScalarType "interval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "overlaps"
+>           [ScalarType "timestamptz", ScalarType "interval",
+>            ScalarType "timestamptz", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "overlaps"
+>           [ScalarType "timestamptz", ScalarType "interval",
+>            ScalarType "timestamptz", ScalarType "interval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "overlaps"
+>           [ScalarType "timetz", ScalarType "timetz", ScalarType "timetz",
+>            ScalarType "timetz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "overlay"
+>           [ScalarType "text", ScalarType "text", ScalarType "int4"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "overlay"
+>           [ScalarType "text", ScalarType "text", ScalarType "int4",
+>            ScalarType "int4"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "path" [ScalarType "polygon"]
+>           (ScalarType "path")
+>           False,
+>         CatCreateFunction FunName "path_add"
+>           [ScalarType "path", ScalarType "path"]
+>           (ScalarType "path")
+>           False,
+>         CatCreateFunction FunName "path_add_pt"
+>           [ScalarType "path", ScalarType "point"]
+>           (ScalarType "path")
+>           False,
+>         CatCreateFunction FunName "path_center" [ScalarType "path"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunName "path_contain_pt"
+>           [ScalarType "path", ScalarType "point"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "path_distance"
+>           [ScalarType "path", ScalarType "path"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "path_div_pt"
+>           [ScalarType "path", ScalarType "point"]
+>           (ScalarType "path")
+>           False,
+>         CatCreateFunction FunName "path_in" [Pseudo Cstring]
+>           (ScalarType "path")
+>           False,
+>         CatCreateFunction FunName "path_inter"
+>           [ScalarType "path", ScalarType "path"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "path_length" [ScalarType "path"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "path_mul_pt"
+>           [ScalarType "path", ScalarType "point"]
+>           (ScalarType "path")
+>           False,
+>         CatCreateFunction FunName "path_n_eq"
+>           [ScalarType "path", ScalarType "path"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "path_n_ge"
+>           [ScalarType "path", ScalarType "path"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "path_n_gt"
+>           [ScalarType "path", ScalarType "path"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "path_n_le"
+>           [ScalarType "path", ScalarType "path"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "path_n_lt"
+>           [ScalarType "path", ScalarType "path"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "path_npoints" [ScalarType "path"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "path_out" [ScalarType "path"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "path_recv" [Pseudo Internal]
+>           (ScalarType "path")
+>           False,
+>         CatCreateFunction FunName "path_send" [ScalarType "path"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "path_sub_pt"
+>           [ScalarType "path", ScalarType "point"]
+>           (ScalarType "path")
+>           False,
+>         CatCreateFunction FunName "pclose" [ScalarType "path"]
+>           (ScalarType "path")
+>           False,
+>         CatCreateFunction FunName "pg_advisory_lock" [ScalarType "int8"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "pg_advisory_lock"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "pg_advisory_lock_shared"
+>           [ScalarType "int8"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "pg_advisory_lock_shared"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "pg_advisory_unlock" [ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "pg_advisory_unlock"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "pg_advisory_unlock_all" [] (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "pg_advisory_unlock_shared"
+>           [ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "pg_advisory_unlock_shared"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "pg_backend_pid" [] (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "pg_cancel_backend" [ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "pg_char_to_encoding" [ScalarType "name"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "pg_client_encoding" []
+>           (ScalarType "name")
+>           False,
+>         CatCreateFunction FunName "pg_column_size" [Pseudo Any]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "pg_conf_load_time" []
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName "pg_conversion_is_visible"
+>           [ScalarType "oid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "pg_current_xlog_insert_location" []
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "pg_current_xlog_location" []
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "pg_cursor" []
+>           (SetOfType (Pseudo Record))
+>           False,
+>         CatCreateFunction FunName "pg_database_size" [ScalarType "name"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_database_size" [ScalarType "oid"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_encoding_to_char" [ScalarType "int4"]
+>           (ScalarType "name")
+>           False,
+>         CatCreateFunction FunName "pg_function_is_visible"
+>           [ScalarType "oid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "pg_get_constraintdef" [ScalarType "oid"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "pg_get_constraintdef"
+>           [ScalarType "oid", ScalarType "bool"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "pg_get_expr"
+>           [ScalarType "text", ScalarType "oid"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "pg_get_expr"
+>           [ScalarType "text", ScalarType "oid", ScalarType "bool"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "pg_get_function_arguments"
+>           [ScalarType "oid"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "pg_get_function_identity_arguments"
+>           [ScalarType "oid"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "pg_get_function_result"
+>           [ScalarType "oid"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "pg_get_functiondef" [ScalarType "oid"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "pg_get_indexdef" [ScalarType "oid"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "pg_get_indexdef"
+>           [ScalarType "oid", ScalarType "int4", ScalarType "bool"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "pg_get_keywords" []
+>           (SetOfType (Pseudo Record))
+>           False,
+>         CatCreateFunction FunName "pg_get_ruledef" [ScalarType "oid"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "pg_get_ruledef"
+>           [ScalarType "oid", ScalarType "bool"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "pg_get_serial_sequence"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "pg_get_triggerdef" [ScalarType "oid"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "pg_get_userbyid" [ScalarType "oid"]
+>           (ScalarType "name")
+>           False,
+>         CatCreateFunction FunName "pg_get_viewdef" [ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "pg_get_viewdef" [ScalarType "oid"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "pg_get_viewdef"
+>           [ScalarType "text", ScalarType "bool"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "pg_get_viewdef"
+>           [ScalarType "oid", ScalarType "bool"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "pg_has_role"
+>           [ScalarType "name", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "pg_has_role"
+>           [ScalarType "oid", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "pg_has_role"
+>           [ScalarType "name", ScalarType "name", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "pg_has_role"
+>           [ScalarType "name", ScalarType "oid", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "pg_has_role"
+>           [ScalarType "oid", ScalarType "name", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "pg_has_role"
+>           [ScalarType "oid", ScalarType "oid", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "pg_is_other_temp_schema"
+>           [ScalarType "oid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "pg_lock_status" []
+>           (SetOfType (Pseudo Record))
+>           False,
+>         CatCreateFunction FunName "pg_ls_dir" [ScalarType "text"]
+>           (SetOfType (ScalarType "text"))
+>           False,
+>         CatCreateFunction FunName "pg_my_temp_schema" [] (ScalarType "oid")
+>           False,
+>         CatCreateFunction FunName "pg_opclass_is_visible"
+>           [ScalarType "oid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "pg_operator_is_visible"
+>           [ScalarType "oid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "pg_options_to_table"
+>           [ArrayType (ScalarType "text")]
+>           (SetOfType (Pseudo Record))
+>           False,
+>         CatCreateFunction FunName "pg_postmaster_start_time" []
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName "pg_prepared_statement" []
+>           (SetOfType (Pseudo Record))
+>           False,
+>         CatCreateFunction FunName "pg_prepared_xact" []
+>           (SetOfType (Pseudo Record))
+>           False,
+>         CatCreateFunction FunName "pg_read_file"
+>           [ScalarType "text", ScalarType "int8", ScalarType "int8"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "pg_relation_size"
+>           [ScalarType "regclass"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_relation_size"
+>           [ScalarType "regclass", ScalarType "text"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_reload_conf" [] (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "pg_rotate_logfile" []
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "pg_show_all_settings" []
+>           (SetOfType (Pseudo Record))
+>           False,
+>         CatCreateFunction FunName "pg_size_pretty" [ScalarType "int8"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "pg_sleep" [ScalarType "float8"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "pg_start_backup"
+>           [ScalarType "text", ScalarType "bool"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "pg_stat_clear_snapshot" [] (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "pg_stat_file" [ScalarType "text"]
+>           (Pseudo Record)
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_activity"
+>           [ScalarType "int4"]
+>           (SetOfType (Pseudo Record))
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_backend_activity"
+>           [ScalarType "int4"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_backend_activity_start"
+>           [ScalarType "int4"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_backend_client_addr"
+>           [ScalarType "int4"]
+>           (ScalarType "inet")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_backend_client_port"
+>           [ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_backend_dbid"
+>           [ScalarType "int4"]
+>           (ScalarType "oid")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_backend_idset" []
+>           (SetOfType (ScalarType "int4"))
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_backend_pid"
+>           [ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_backend_start"
+>           [ScalarType "int4"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_backend_userid"
+>           [ScalarType "int4"]
+>           (ScalarType "oid")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_backend_waiting"
+>           [ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_backend_xact_start"
+>           [ScalarType "int4"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName
+>           "pg_stat_get_bgwriter_buf_written_checkpoints"
+>           []
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_bgwriter_buf_written_clean"
+>           []
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_bgwriter_maxwritten_clean"
+>           []
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName
+>           "pg_stat_get_bgwriter_requested_checkpoints"
+>           []
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_bgwriter_timed_checkpoints"
+>           []
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_blocks_fetched"
+>           [ScalarType "oid"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_blocks_hit"
+>           [ScalarType "oid"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_buf_alloc" []
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_buf_written_backend" []
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_db_blocks_fetched"
+>           [ScalarType "oid"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_db_blocks_hit"
+>           [ScalarType "oid"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_db_numbackends"
+>           [ScalarType "oid"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_db_tuples_deleted"
+>           [ScalarType "oid"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_db_tuples_fetched"
+>           [ScalarType "oid"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_db_tuples_inserted"
+>           [ScalarType "oid"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_db_tuples_returned"
+>           [ScalarType "oid"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_db_tuples_updated"
+>           [ScalarType "oid"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_db_xact_commit"
+>           [ScalarType "oid"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_db_xact_rollback"
+>           [ScalarType "oid"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_dead_tuples"
+>           [ScalarType "oid"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_function_calls"
+>           [ScalarType "oid"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_function_self_time"
+>           [ScalarType "oid"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_function_time"
+>           [ScalarType "oid"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_last_analyze_time"
+>           [ScalarType "oid"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_last_autoanalyze_time"
+>           [ScalarType "oid"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_last_autovacuum_time"
+>           [ScalarType "oid"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_last_vacuum_time"
+>           [ScalarType "oid"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_live_tuples"
+>           [ScalarType "oid"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_numscans" [ScalarType "oid"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_tuples_deleted"
+>           [ScalarType "oid"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_tuples_fetched"
+>           [ScalarType "oid"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_tuples_hot_updated"
+>           [ScalarType "oid"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_tuples_inserted"
+>           [ScalarType "oid"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_tuples_returned"
+>           [ScalarType "oid"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_stat_get_tuples_updated"
+>           [ScalarType "oid"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_stat_reset" [] (Pseudo Void) False,
+>         CatCreateFunction FunName "pg_stop_backup" [] (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "pg_switch_xlog" [] (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "pg_table_is_visible" [ScalarType "oid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "pg_tablespace_databases"
+>           [ScalarType "oid"]
+>           (SetOfType (ScalarType "oid"))
+>           False,
+>         CatCreateFunction FunName "pg_tablespace_size" [ScalarType "name"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_tablespace_size" [ScalarType "oid"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_terminate_backend"
+>           [ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "pg_timezone_abbrevs" []
+>           (SetOfType (Pseudo Record))
+>           False,
+>         CatCreateFunction FunName "pg_timezone_names" []
+>           (SetOfType (Pseudo Record))
+>           False,
+>         CatCreateFunction FunName "pg_total_relation_size"
+>           [ScalarType "regclass"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "pg_try_advisory_lock"
+>           [ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "pg_try_advisory_lock"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "pg_try_advisory_lock_shared"
+>           [ScalarType "int8"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "pg_try_advisory_lock_shared"
+>           [ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "pg_ts_config_is_visible"
+>           [ScalarType "oid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "pg_ts_dict_is_visible"
+>           [ScalarType "oid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "pg_ts_parser_is_visible"
+>           [ScalarType "oid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "pg_ts_template_is_visible"
+>           [ScalarType "oid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "pg_type_is_visible" [ScalarType "oid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "pg_typeof" [Pseudo Any]
+>           (ScalarType "regtype")
+>           False,
+>         CatCreateFunction FunName "pg_xlogfile_name" [ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "pg_xlogfile_name_offset"
+>           [ScalarType "text"]
+>           (Pseudo Record)
+>           False,
+>         CatCreateFunction FunName "pi" [] (ScalarType "float8") False,
+>         CatCreateFunction FunName "plainto_tsquery" [ScalarType "text"]
+>           (ScalarType "tsquery")
+>           False,
+>         CatCreateFunction FunName "plainto_tsquery"
+>           [ScalarType "regconfig", ScalarType "text"]
+>           (ScalarType "tsquery")
+>           False,
+>         CatCreateFunction FunName "point" [ScalarType "lseg"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunName "point" [ScalarType "path"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunName "point" [ScalarType "box"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunName "point" [ScalarType "polygon"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunName "point" [ScalarType "circle"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunName "point"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunName "point_above"
+>           [ScalarType "point", ScalarType "point"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "point_add"
+>           [ScalarType "point", ScalarType "point"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunName "point_below"
+>           [ScalarType "point", ScalarType "point"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "point_distance"
+>           [ScalarType "point", ScalarType "point"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "point_div"
+>           [ScalarType "point", ScalarType "point"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunName "point_eq"
+>           [ScalarType "point", ScalarType "point"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "point_horiz"
+>           [ScalarType "point", ScalarType "point"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "point_in" [Pseudo Cstring]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunName "point_left"
+>           [ScalarType "point", ScalarType "point"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "point_mul"
+>           [ScalarType "point", ScalarType "point"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunName "point_ne"
+>           [ScalarType "point", ScalarType "point"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "point_out" [ScalarType "point"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "point_recv" [Pseudo Internal]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunName "point_right"
+>           [ScalarType "point", ScalarType "point"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "point_send" [ScalarType "point"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "point_sub"
+>           [ScalarType "point", ScalarType "point"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunName "point_vert"
+>           [ScalarType "point", ScalarType "point"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "poly_above"
+>           [ScalarType "polygon", ScalarType "polygon"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "poly_below"
+>           [ScalarType "polygon", ScalarType "polygon"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "poly_center" [ScalarType "polygon"]
+>           (ScalarType "point")
+>           False,
+>         CatCreateFunction FunName "poly_contain"
+>           [ScalarType "polygon", ScalarType "polygon"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "poly_contain_pt"
+>           [ScalarType "polygon", ScalarType "point"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "poly_contained"
+>           [ScalarType "polygon", ScalarType "polygon"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "poly_distance"
+>           [ScalarType "polygon", ScalarType "polygon"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "poly_in" [Pseudo Cstring]
+>           (ScalarType "polygon")
+>           False,
+>         CatCreateFunction FunName "poly_left"
+>           [ScalarType "polygon", ScalarType "polygon"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "poly_npoints" [ScalarType "polygon"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "poly_out" [ScalarType "polygon"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "poly_overabove"
+>           [ScalarType "polygon", ScalarType "polygon"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "poly_overbelow"
+>           [ScalarType "polygon", ScalarType "polygon"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "poly_overlap"
+>           [ScalarType "polygon", ScalarType "polygon"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "poly_overleft"
+>           [ScalarType "polygon", ScalarType "polygon"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "poly_overright"
+>           [ScalarType "polygon", ScalarType "polygon"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "poly_recv" [Pseudo Internal]
+>           (ScalarType "polygon")
+>           False,
+>         CatCreateFunction FunName "poly_right"
+>           [ScalarType "polygon", ScalarType "polygon"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "poly_same"
+>           [ScalarType "polygon", ScalarType "polygon"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "poly_send" [ScalarType "polygon"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "polygon" [ScalarType "path"]
+>           (ScalarType "polygon")
+>           False,
+>         CatCreateFunction FunName "polygon" [ScalarType "box"]
+>           (ScalarType "polygon")
+>           False,
+>         CatCreateFunction FunName "polygon" [ScalarType "circle"]
+>           (ScalarType "polygon")
+>           False,
+>         CatCreateFunction FunName "polygon"
+>           [ScalarType "int4", ScalarType "circle"]
+>           (ScalarType "polygon")
+>           False,
+>         CatCreateFunction FunName "popen" [ScalarType "path"]
+>           (ScalarType "path")
+>           False,
+>         CatCreateFunction FunName "position"
+>           [ScalarType "bytea", ScalarType "bytea"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "position"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "position"
+>           [ScalarType "bit", ScalarType "bit"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "positionjoinsel"
+>           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
+>            ScalarType "int2", Pseudo Internal]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "positionsel"
+>           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
+>            ScalarType "int4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "postgresql_fdw_validator"
+>           [ArrayType (ScalarType "text"), ScalarType "oid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "pow"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "pow"
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "power"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "power"
+>           [ScalarType "numeric", ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "prsd_end" [Pseudo Internal]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "prsd_headline"
+>           [Pseudo Internal, Pseudo Internal, ScalarType "tsquery"]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "prsd_lextype" [Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "prsd_nexttoken"
+>           [Pseudo Internal, Pseudo Internal, Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "prsd_start"
+>           [Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "pt_contained_circle"
+>           [ScalarType "point", ScalarType "circle"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "pt_contained_poly"
+>           [ScalarType "point", ScalarType "polygon"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "query_to_xml"
+>           [ScalarType "text", ScalarType "bool", ScalarType "bool",
+>            ScalarType "text"]
+>           (ScalarType "xml")
+>           False,
+>         CatCreateFunction FunName "query_to_xml_and_xmlschema"
+>           [ScalarType "text", ScalarType "bool", ScalarType "bool",
+>            ScalarType "text"]
+>           (ScalarType "xml")
+>           False,
+>         CatCreateFunction FunName "query_to_xmlschema"
+>           [ScalarType "text", ScalarType "bool", ScalarType "bool",
+>            ScalarType "text"]
+>           (ScalarType "xml")
+>           False,
+>         CatCreateFunction FunName "querytree" [ScalarType "tsquery"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "quote_ident" [ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "quote_literal" [ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "quote_literal" [Pseudo AnyElement]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "quote_nullable" [ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "quote_nullable" [Pseudo AnyElement]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "radians" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "radius" [ScalarType "circle"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "random" [] (ScalarType "float8") False,
+>         CatCreateFunction FunName "record_eq"
+>           [Pseudo Record, Pseudo Record]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "record_ge"
+>           [Pseudo Record, Pseudo Record]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "record_gt"
+>           [Pseudo Record, Pseudo Record]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "record_in"
+>           [Pseudo Cstring, ScalarType "oid", ScalarType "int4"]
+>           (Pseudo Record)
+>           False,
+>         CatCreateFunction FunName "record_le"
+>           [Pseudo Record, Pseudo Record]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "record_lt"
+>           [Pseudo Record, Pseudo Record]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "record_ne"
+>           [Pseudo Record, Pseudo Record]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "record_out" [Pseudo Record]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "record_recv"
+>           [Pseudo Internal, ScalarType "oid", ScalarType "int4"]
+>           (Pseudo Record)
+>           False,
+>         CatCreateFunction FunName "record_send" [Pseudo Record]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "regclass" [ScalarType "text"]
+>           (ScalarType "regclass")
+>           False,
+>         CatCreateFunction FunName "regclassin" [Pseudo Cstring]
+>           (ScalarType "regclass")
+>           False,
+>         CatCreateFunction FunName "regclassout" [ScalarType "regclass"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "regclassrecv" [Pseudo Internal]
+>           (ScalarType "regclass")
+>           False,
+>         CatCreateFunction FunName "regclasssend" [ScalarType "regclass"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "regconfigin" [Pseudo Cstring]
+>           (ScalarType "regconfig")
+>           False,
+>         CatCreateFunction FunName "regconfigout" [ScalarType "regconfig"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "regconfigrecv" [Pseudo Internal]
+>           (ScalarType "regconfig")
+>           False,
+>         CatCreateFunction FunName "regconfigsend" [ScalarType "regconfig"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "regdictionaryin" [Pseudo Cstring]
+>           (ScalarType "regdictionary")
+>           False,
+>         CatCreateFunction FunName "regdictionaryout"
+>           [ScalarType "regdictionary"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "regdictionaryrecv" [Pseudo Internal]
+>           (ScalarType "regdictionary")
+>           False,
+>         CatCreateFunction FunName "regdictionarysend"
+>           [ScalarType "regdictionary"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "regexeqjoinsel"
+>           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
+>            ScalarType "int2", Pseudo Internal]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "regexeqsel"
+>           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
+>            ScalarType "int4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "regexnejoinsel"
+>           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
+>            ScalarType "int2", Pseudo Internal]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "regexnesel"
+>           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
+>            ScalarType "int4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "regexp_matches"
+>           [ScalarType "text", ScalarType "text"]
+>           (SetOfType (ArrayType (ScalarType "text")))
+>           False,
+>         CatCreateFunction FunName "regexp_matches"
+>           [ScalarType "text", ScalarType "text", ScalarType "text"]
+>           (SetOfType (ArrayType (ScalarType "text")))
+>           False,
+>         CatCreateFunction FunName "regexp_replace"
+>           [ScalarType "text", ScalarType "text", ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "regexp_replace"
+>           [ScalarType "text", ScalarType "text", ScalarType "text",
+>            ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "regexp_split_to_array"
+>           [ScalarType "text", ScalarType "text"]
+>           (ArrayType (ScalarType "text"))
+>           False,
+>         CatCreateFunction FunName "regexp_split_to_array"
+>           [ScalarType "text", ScalarType "text", ScalarType "text"]
+>           (ArrayType (ScalarType "text"))
+>           False,
+>         CatCreateFunction FunName "regexp_split_to_table"
+>           [ScalarType "text", ScalarType "text"]
+>           (SetOfType (ScalarType "text"))
+>           False,
+>         CatCreateFunction FunName "regexp_split_to_table"
+>           [ScalarType "text", ScalarType "text", ScalarType "text"]
+>           (SetOfType (ScalarType "text"))
+>           False,
+>         CatCreateFunction FunName "regoperatorin" [Pseudo Cstring]
+>           (ScalarType "regoperator")
+>           False,
+>         CatCreateFunction FunName "regoperatorout"
+>           [ScalarType "regoperator"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "regoperatorrecv" [Pseudo Internal]
+>           (ScalarType "regoperator")
+>           False,
+>         CatCreateFunction FunName "regoperatorsend"
+>           [ScalarType "regoperator"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "regoperin" [Pseudo Cstring]
+>           (ScalarType "regoper")
+>           False,
+>         CatCreateFunction FunName "regoperout" [ScalarType "regoper"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "regoperrecv" [Pseudo Internal]
+>           (ScalarType "regoper")
+>           False,
+>         CatCreateFunction FunName "regopersend" [ScalarType "regoper"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "regprocedurein" [Pseudo Cstring]
+>           (ScalarType "regprocedure")
+>           False,
+>         CatCreateFunction FunName "regprocedureout"
+>           [ScalarType "regprocedure"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "regprocedurerecv" [Pseudo Internal]
+>           (ScalarType "regprocedure")
+>           False,
+>         CatCreateFunction FunName "regproceduresend"
+>           [ScalarType "regprocedure"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "regprocin" [Pseudo Cstring]
+>           (ScalarType "regproc")
+>           False,
+>         CatCreateFunction FunName "regprocout" [ScalarType "regproc"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "regprocrecv" [Pseudo Internal]
+>           (ScalarType "regproc")
+>           False,
+>         CatCreateFunction FunName "regprocsend" [ScalarType "regproc"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "regtypein" [Pseudo Cstring]
+>           (ScalarType "regtype")
+>           False,
+>         CatCreateFunction FunName "regtypeout" [ScalarType "regtype"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "regtyperecv" [Pseudo Internal]
+>           (ScalarType "regtype")
+>           False,
+>         CatCreateFunction FunName "regtypesend" [ScalarType "regtype"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "reltime" [ScalarType "interval"]
+>           (ScalarType "reltime")
+>           False,
+>         CatCreateFunction FunName "reltimeeq"
+>           [ScalarType "reltime", ScalarType "reltime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "reltimege"
+>           [ScalarType "reltime", ScalarType "reltime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "reltimegt"
+>           [ScalarType "reltime", ScalarType "reltime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "reltimein" [Pseudo Cstring]
+>           (ScalarType "reltime")
+>           False,
+>         CatCreateFunction FunName "reltimele"
+>           [ScalarType "reltime", ScalarType "reltime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "reltimelt"
+>           [ScalarType "reltime", ScalarType "reltime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "reltimene"
+>           [ScalarType "reltime", ScalarType "reltime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "reltimeout" [ScalarType "reltime"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "reltimerecv" [Pseudo Internal]
+>           (ScalarType "reltime")
+>           False,
+>         CatCreateFunction FunName "reltimesend" [ScalarType "reltime"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "repeat"
+>           [ScalarType "text", ScalarType "int4"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "replace"
+>           [ScalarType "text", ScalarType "text", ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "round" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "round" [ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "round"
+>           [ScalarType "numeric", ScalarType "int4"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "rpad"
+>           [ScalarType "text", ScalarType "int4"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "rpad"
+>           [ScalarType "text", ScalarType "int4", ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "rtrim" [ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "rtrim"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "scalargtjoinsel"
+>           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
+>            ScalarType "int2", Pseudo Internal]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "scalargtsel"
+>           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
+>            ScalarType "int4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "scalarltjoinsel"
+>           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
+>            ScalarType "int2", Pseudo Internal]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "scalarltsel"
+>           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
+>            ScalarType "int4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "schema_to_xml"
+>           [ScalarType "name", ScalarType "bool", ScalarType "bool",
+>            ScalarType "text"]
+>           (ScalarType "xml")
+>           False,
+>         CatCreateFunction FunName "schema_to_xml_and_xmlschema"
+>           [ScalarType "name", ScalarType "bool", ScalarType "bool",
+>            ScalarType "text"]
+>           (ScalarType "xml")
+>           False,
+>         CatCreateFunction FunName "schema_to_xmlschema"
+>           [ScalarType "name", ScalarType "bool", ScalarType "bool",
+>            ScalarType "text"]
+>           (ScalarType "xml")
+>           False,
+>         CatCreateFunction FunName "session_user" [] (ScalarType "name")
+>           False,
+>         CatCreateFunction FunName "set_bit"
+>           [ScalarType "bytea", ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "set_byte"
+>           [ScalarType "bytea", ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "set_config"
+>           [ScalarType "text", ScalarType "text", ScalarType "bool"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "set_masklen"
+>           [ScalarType "cidr", ScalarType "int4"]
+>           (ScalarType "cidr")
+>           False,
+>         CatCreateFunction FunName "set_masklen"
+>           [ScalarType "inet", ScalarType "int4"]
+>           (ScalarType "inet")
+>           False,
+>         CatCreateFunction FunName "setseed" [ScalarType "float8"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "setval"
+>           [ScalarType "regclass", ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "setval"
+>           [ScalarType "regclass", ScalarType "int8", ScalarType "bool"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "setweight"
+>           [ScalarType "tsvector", ScalarType "char"]
+>           (ScalarType "tsvector")
+>           False,
+>         CatCreateFunction FunName "shell_in" [Pseudo Cstring]
+>           (Pseudo Opaque)
+>           False,
+>         CatCreateFunction FunName "shell_out" [Pseudo Opaque]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "shift_jis_2004_to_euc_jis_2004"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "shift_jis_2004_to_utf8"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "shobj_description"
+>           [ScalarType "oid", ScalarType "name"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "sign" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "sign" [ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "similar_escape"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "sin" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "sjis_to_euc_jp"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "sjis_to_mic"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "sjis_to_utf8"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "slope"
+>           [ScalarType "point", ScalarType "point"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "smgreq"
+>           [ScalarType "smgr", ScalarType "smgr"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "smgrin" [Pseudo Cstring]
+>           (ScalarType "smgr")
+>           False,
+>         CatCreateFunction FunName "smgrne"
+>           [ScalarType "smgr", ScalarType "smgr"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "smgrout" [ScalarType "smgr"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "split_part"
+>           [ScalarType "text", ScalarType "text", ScalarType "int4"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "sqrt" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "sqrt" [ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "statement_timestamp" []
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName "string_to_array"
+>           [ScalarType "text", ScalarType "text"]
+>           (ArrayType (ScalarType "text"))
+>           False,
+>         CatCreateFunction FunName "strip" [ScalarType "tsvector"]
+>           (ScalarType "tsvector")
+>           False,
+>         CatCreateFunction FunName "strpos"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "substr"
+>           [ScalarType "bytea", ScalarType "int4"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "substr"
+>           [ScalarType "text", ScalarType "int4"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "substr"
+>           [ScalarType "bytea", ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "substr"
+>           [ScalarType "text", ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "substring"
+>           [ScalarType "bytea", ScalarType "int4"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "substring"
+>           [ScalarType "text", ScalarType "int4"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "substring"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "substring"
+>           [ScalarType "bit", ScalarType "int4"]
+>           (ScalarType "bit")
+>           False,
+>         CatCreateFunction FunName "substring"
+>           [ScalarType "bytea", ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "substring"
+>           [ScalarType "text", ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "substring"
+>           [ScalarType "text", ScalarType "text", ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "substring"
+>           [ScalarType "bit", ScalarType "int4", ScalarType "int4"]
+>           (ScalarType "bit")
+>           False,
+>         CatCreateFunction FunName "suppress_redundant_updates_trigger" []
+>           (Pseudo Trigger)
+>           False,
+>         CatCreateFunction FunName "table_to_xml"
+>           [ScalarType "regclass", ScalarType "bool", ScalarType "bool",
+>            ScalarType "text"]
+>           (ScalarType "xml")
+>           False,
+>         CatCreateFunction FunName "table_to_xml_and_xmlschema"
+>           [ScalarType "regclass", ScalarType "bool", ScalarType "bool",
+>            ScalarType "text"]
+>           (ScalarType "xml")
+>           False,
+>         CatCreateFunction FunName "table_to_xmlschema"
+>           [ScalarType "regclass", ScalarType "bool", ScalarType "bool",
+>            ScalarType "text"]
+>           (ScalarType "xml")
+>           False,
+>         CatCreateFunction FunName "tan" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "text" [ScalarType "bool"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "text" [ScalarType "char"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "text" [ScalarType "name"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "text" [ScalarType "xml"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "text" [ScalarType "inet"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "text" [ScalarType "bpchar"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "text_ge"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "text_gt"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "text_larger"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "text_le"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "text_lt"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "text_pattern_ge"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "text_pattern_gt"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "text_pattern_le"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "text_pattern_lt"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "text_smaller"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "textanycat"
+>           [ScalarType "text", Pseudo AnyNonArray]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "textcat"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "texteq"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "texticlike"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "texticnlike"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "texticregexeq"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "texticregexne"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "textin" [Pseudo Cstring]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "textlen" [ScalarType "text"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "textlike"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "textne"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "textnlike"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "textout" [ScalarType "text"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "textrecv" [Pseudo Internal]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "textregexeq"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "textregexne"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "textsend" [ScalarType "text"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "thesaurus_init" [Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "thesaurus_lexize"
+>           [Pseudo Internal, Pseudo Internal, Pseudo Internal,
+>            Pseudo Internal]
+>           (Pseudo Internal)
+>           False,
+>         CatCreateFunction FunName "tideq"
+>           [ScalarType "tid", ScalarType "tid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tidge"
+>           [ScalarType "tid", ScalarType "tid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tidgt"
+>           [ScalarType "tid", ScalarType "tid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tidin" [Pseudo Cstring]
+>           (ScalarType "tid")
+>           False,
+>         CatCreateFunction FunName "tidlarger"
+>           [ScalarType "tid", ScalarType "tid"]
+>           (ScalarType "tid")
+>           False,
+>         CatCreateFunction FunName "tidle"
+>           [ScalarType "tid", ScalarType "tid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tidlt"
+>           [ScalarType "tid", ScalarType "tid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tidne"
+>           [ScalarType "tid", ScalarType "tid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tidout" [ScalarType "tid"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "tidrecv" [Pseudo Internal]
+>           (ScalarType "tid")
+>           False,
+>         CatCreateFunction FunName "tidsend" [ScalarType "tid"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "tidsmaller"
+>           [ScalarType "tid", ScalarType "tid"]
+>           (ScalarType "tid")
+>           False,
+>         CatCreateFunction FunName "time" [ScalarType "abstime"]
+>           (ScalarType "time")
+>           False,
+>         CatCreateFunction FunName "time" [ScalarType "timestamp"]
+>           (ScalarType "time")
+>           False,
+>         CatCreateFunction FunName "time" [ScalarType "timestamptz"]
+>           (ScalarType "time")
+>           False,
+>         CatCreateFunction FunName "time" [ScalarType "interval"]
+>           (ScalarType "time")
+>           False,
+>         CatCreateFunction FunName "time" [ScalarType "timetz"]
+>           (ScalarType "time")
+>           False,
+>         CatCreateFunction FunName "time"
+>           [ScalarType "time", ScalarType "int4"]
+>           (ScalarType "time")
+>           False,
+>         CatCreateFunction FunName "time_cmp"
+>           [ScalarType "time", ScalarType "time"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "time_eq"
+>           [ScalarType "time", ScalarType "time"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "time_ge"
+>           [ScalarType "time", ScalarType "time"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "time_gt"
+>           [ScalarType "time", ScalarType "time"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "time_hash" [ScalarType "time"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "time_in"
+>           [Pseudo Cstring, ScalarType "oid", ScalarType "int4"]
+>           (ScalarType "time")
+>           False,
+>         CatCreateFunction FunName "time_larger"
+>           [ScalarType "time", ScalarType "time"]
+>           (ScalarType "time")
+>           False,
+>         CatCreateFunction FunName "time_le"
+>           [ScalarType "time", ScalarType "time"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "time_lt"
+>           [ScalarType "time", ScalarType "time"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "time_mi_interval"
+>           [ScalarType "time", ScalarType "interval"]
+>           (ScalarType "time")
+>           False,
+>         CatCreateFunction FunName "time_mi_time"
+>           [ScalarType "time", ScalarType "time"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunName "time_ne"
+>           [ScalarType "time", ScalarType "time"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "time_out" [ScalarType "time"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "time_pl_interval"
+>           [ScalarType "time", ScalarType "interval"]
+>           (ScalarType "time")
+>           False,
+>         CatCreateFunction FunName "time_recv"
+>           [Pseudo Internal, ScalarType "oid", ScalarType "int4"]
+>           (ScalarType "time")
+>           False,
+>         CatCreateFunction FunName "time_send" [ScalarType "time"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "time_smaller"
+>           [ScalarType "time", ScalarType "time"]
+>           (ScalarType "time")
+>           False,
+>         CatCreateFunction FunName "timedate_pl"
+>           [ScalarType "time", ScalarType "date"]
+>           (ScalarType "timestamp")
+>           False,
+>         CatCreateFunction FunName "timemi"
+>           [ScalarType "abstime", ScalarType "reltime"]
+>           (ScalarType "abstime")
+>           False,
+>         CatCreateFunction FunName "timenow" [] (ScalarType "abstime")
+>           False,
+>         CatCreateFunction FunName "timeofday" [] (ScalarType "text") False,
+>         CatCreateFunction FunName "timepl"
+>           [ScalarType "abstime", ScalarType "reltime"]
+>           (ScalarType "abstime")
+>           False,
+>         CatCreateFunction FunName "timestamp" [ScalarType "abstime"]
+>           (ScalarType "timestamp")
+>           False,
+>         CatCreateFunction FunName "timestamp" [ScalarType "date"]
+>           (ScalarType "timestamp")
+>           False,
+>         CatCreateFunction FunName "timestamp" [ScalarType "timestamptz"]
+>           (ScalarType "timestamp")
+>           False,
+>         CatCreateFunction FunName "timestamp"
+>           [ScalarType "date", ScalarType "time"]
+>           (ScalarType "timestamp")
+>           False,
+>         CatCreateFunction FunName "timestamp"
+>           [ScalarType "timestamp", ScalarType "int4"]
+>           (ScalarType "timestamp")
+>           False,
+>         CatCreateFunction FunName "timestamp_cmp"
+>           [ScalarType "timestamp", ScalarType "timestamp"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "timestamp_cmp_date"
+>           [ScalarType "timestamp", ScalarType "date"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "timestamp_cmp_timestamptz"
+>           [ScalarType "timestamp", ScalarType "timestamptz"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "timestamp_eq"
+>           [ScalarType "timestamp", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamp_eq_date"
+>           [ScalarType "timestamp", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamp_eq_timestamptz"
+>           [ScalarType "timestamp", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamp_ge"
+>           [ScalarType "timestamp", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamp_ge_date"
+>           [ScalarType "timestamp", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamp_ge_timestamptz"
+>           [ScalarType "timestamp", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamp_gt"
+>           [ScalarType "timestamp", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamp_gt_date"
+>           [ScalarType "timestamp", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamp_gt_timestamptz"
+>           [ScalarType "timestamp", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamp_hash" [ScalarType "timestamp"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "timestamp_in"
+>           [Pseudo Cstring, ScalarType "oid", ScalarType "int4"]
+>           (ScalarType "timestamp")
+>           False,
+>         CatCreateFunction FunName "timestamp_larger"
+>           [ScalarType "timestamp", ScalarType "timestamp"]
+>           (ScalarType "timestamp")
+>           False,
+>         CatCreateFunction FunName "timestamp_le"
+>           [ScalarType "timestamp", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamp_le_date"
+>           [ScalarType "timestamp", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamp_le_timestamptz"
+>           [ScalarType "timestamp", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamp_lt"
+>           [ScalarType "timestamp", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamp_lt_date"
+>           [ScalarType "timestamp", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamp_lt_timestamptz"
+>           [ScalarType "timestamp", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamp_mi"
+>           [ScalarType "timestamp", ScalarType "timestamp"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunName "timestamp_mi_interval"
+>           [ScalarType "timestamp", ScalarType "interval"]
+>           (ScalarType "timestamp")
+>           False,
+>         CatCreateFunction FunName "timestamp_ne"
+>           [ScalarType "timestamp", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamp_ne_date"
+>           [ScalarType "timestamp", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamp_ne_timestamptz"
+>           [ScalarType "timestamp", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamp_out" [ScalarType "timestamp"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "timestamp_pl_interval"
+>           [ScalarType "timestamp", ScalarType "interval"]
+>           (ScalarType "timestamp")
+>           False,
+>         CatCreateFunction FunName "timestamp_recv"
+>           [Pseudo Internal, ScalarType "oid", ScalarType "int4"]
+>           (ScalarType "timestamp")
+>           False,
+>         CatCreateFunction FunName "timestamp_send" [ScalarType "timestamp"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "timestamp_smaller"
+>           [ScalarType "timestamp", ScalarType "timestamp"]
+>           (ScalarType "timestamp")
+>           False,
+>         CatCreateFunction FunName "timestamptypmodin"
+>           [ArrayType (Pseudo Cstring)]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "timestamptypmodout" [ScalarType "int4"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "timestamptz" [ScalarType "abstime"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName "timestamptz" [ScalarType "date"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName "timestamptz" [ScalarType "timestamp"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName "timestamptz"
+>           [ScalarType "date", ScalarType "time"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName "timestamptz"
+>           [ScalarType "date", ScalarType "timetz"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName "timestamptz"
+>           [ScalarType "timestamptz", ScalarType "int4"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName "timestamptz_cmp"
+>           [ScalarType "timestamptz", ScalarType "timestamptz"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "timestamptz_cmp_date"
+>           [ScalarType "timestamptz", ScalarType "date"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "timestamptz_cmp_timestamp"
+>           [ScalarType "timestamptz", ScalarType "timestamp"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "timestamptz_eq"
+>           [ScalarType "timestamptz", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamptz_eq_date"
+>           [ScalarType "timestamptz", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamptz_eq_timestamp"
+>           [ScalarType "timestamptz", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamptz_ge"
+>           [ScalarType "timestamptz", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamptz_ge_date"
+>           [ScalarType "timestamptz", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamptz_ge_timestamp"
+>           [ScalarType "timestamptz", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamptz_gt"
+>           [ScalarType "timestamptz", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamptz_gt_date"
+>           [ScalarType "timestamptz", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamptz_gt_timestamp"
+>           [ScalarType "timestamptz", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamptz_in"
+>           [Pseudo Cstring, ScalarType "oid", ScalarType "int4"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName "timestamptz_larger"
+>           [ScalarType "timestamptz", ScalarType "timestamptz"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName "timestamptz_le"
+>           [ScalarType "timestamptz", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamptz_le_date"
+>           [ScalarType "timestamptz", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamptz_le_timestamp"
+>           [ScalarType "timestamptz", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamptz_lt"
+>           [ScalarType "timestamptz", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamptz_lt_date"
+>           [ScalarType "timestamptz", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamptz_lt_timestamp"
+>           [ScalarType "timestamptz", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamptz_mi"
+>           [ScalarType "timestamptz", ScalarType "timestamptz"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunName "timestamptz_mi_interval"
+>           [ScalarType "timestamptz", ScalarType "interval"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName "timestamptz_ne"
+>           [ScalarType "timestamptz", ScalarType "timestamptz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamptz_ne_date"
+>           [ScalarType "timestamptz", ScalarType "date"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamptz_ne_timestamp"
+>           [ScalarType "timestamptz", ScalarType "timestamp"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timestamptz_out"
+>           [ScalarType "timestamptz"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "timestamptz_pl_interval"
+>           [ScalarType "timestamptz", ScalarType "interval"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName "timestamptz_recv"
+>           [Pseudo Internal, ScalarType "oid", ScalarType "int4"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName "timestamptz_send"
+>           [ScalarType "timestamptz"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "timestamptz_smaller"
+>           [ScalarType "timestamptz", ScalarType "timestamptz"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName "timestamptztypmodin"
+>           [ArrayType (Pseudo Cstring)]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "timestamptztypmodout"
+>           [ScalarType "int4"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "timetypmodin"
+>           [ArrayType (Pseudo Cstring)]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "timetypmodout" [ScalarType "int4"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "timetz" [ScalarType "time"]
+>           (ScalarType "timetz")
+>           False,
+>         CatCreateFunction FunName "timetz" [ScalarType "timestamptz"]
+>           (ScalarType "timetz")
+>           False,
+>         CatCreateFunction FunName "timetz"
+>           [ScalarType "timetz", ScalarType "int4"]
+>           (ScalarType "timetz")
+>           False,
+>         CatCreateFunction FunName "timetz_cmp"
+>           [ScalarType "timetz", ScalarType "timetz"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "timetz_eq"
+>           [ScalarType "timetz", ScalarType "timetz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timetz_ge"
+>           [ScalarType "timetz", ScalarType "timetz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timetz_gt"
+>           [ScalarType "timetz", ScalarType "timetz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timetz_hash" [ScalarType "timetz"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "timetz_in"
+>           [Pseudo Cstring, ScalarType "oid", ScalarType "int4"]
+>           (ScalarType "timetz")
+>           False,
+>         CatCreateFunction FunName "timetz_larger"
+>           [ScalarType "timetz", ScalarType "timetz"]
+>           (ScalarType "timetz")
+>           False,
+>         CatCreateFunction FunName "timetz_le"
+>           [ScalarType "timetz", ScalarType "timetz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timetz_lt"
+>           [ScalarType "timetz", ScalarType "timetz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timetz_mi_interval"
+>           [ScalarType "timetz", ScalarType "interval"]
+>           (ScalarType "timetz")
+>           False,
+>         CatCreateFunction FunName "timetz_ne"
+>           [ScalarType "timetz", ScalarType "timetz"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "timetz_out" [ScalarType "timetz"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "timetz_pl_interval"
+>           [ScalarType "timetz", ScalarType "interval"]
+>           (ScalarType "timetz")
+>           False,
+>         CatCreateFunction FunName "timetz_recv"
+>           [Pseudo Internal, ScalarType "oid", ScalarType "int4"]
+>           (ScalarType "timetz")
+>           False,
+>         CatCreateFunction FunName "timetz_send" [ScalarType "timetz"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "timetz_smaller"
+>           [ScalarType "timetz", ScalarType "timetz"]
+>           (ScalarType "timetz")
+>           False,
+>         CatCreateFunction FunName "timetzdate_pl"
+>           [ScalarType "timetz", ScalarType "date"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName "timetztypmodin"
+>           [ArrayType (Pseudo Cstring)]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "timetztypmodout" [ScalarType "int4"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "timezone"
+>           [ScalarType "text", ScalarType "timestamp"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName "timezone"
+>           [ScalarType "text", ScalarType "timestamptz"]
+>           (ScalarType "timestamp")
+>           False,
+>         CatCreateFunction FunName "timezone"
+>           [ScalarType "text", ScalarType "timetz"]
+>           (ScalarType "timetz")
+>           False,
+>         CatCreateFunction FunName "timezone"
+>           [ScalarType "interval", ScalarType "timestamp"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName "timezone"
+>           [ScalarType "interval", ScalarType "timestamptz"]
+>           (ScalarType "timestamp")
+>           False,
+>         CatCreateFunction FunName "timezone"
+>           [ScalarType "interval", ScalarType "timetz"]
+>           (ScalarType "timetz")
+>           False,
+>         CatCreateFunction FunName "tinterval"
+>           [ScalarType "abstime", ScalarType "abstime"]
+>           (ScalarType "tinterval")
+>           False,
+>         CatCreateFunction FunName "tintervalct"
+>           [ScalarType "tinterval", ScalarType "tinterval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tintervalend" [ScalarType "tinterval"]
+>           (ScalarType "abstime")
+>           False,
+>         CatCreateFunction FunName "tintervaleq"
+>           [ScalarType "tinterval", ScalarType "tinterval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tintervalge"
+>           [ScalarType "tinterval", ScalarType "tinterval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tintervalgt"
+>           [ScalarType "tinterval", ScalarType "tinterval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tintervalin" [Pseudo Cstring]
+>           (ScalarType "tinterval")
+>           False,
+>         CatCreateFunction FunName "tintervalle"
+>           [ScalarType "tinterval", ScalarType "tinterval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tintervalleneq"
+>           [ScalarType "tinterval", ScalarType "reltime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tintervallenge"
+>           [ScalarType "tinterval", ScalarType "reltime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tintervallengt"
+>           [ScalarType "tinterval", ScalarType "reltime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tintervallenle"
+>           [ScalarType "tinterval", ScalarType "reltime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tintervallenlt"
+>           [ScalarType "tinterval", ScalarType "reltime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tintervallenne"
+>           [ScalarType "tinterval", ScalarType "reltime"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tintervallt"
+>           [ScalarType "tinterval", ScalarType "tinterval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tintervalne"
+>           [ScalarType "tinterval", ScalarType "tinterval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tintervalout" [ScalarType "tinterval"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "tintervalov"
+>           [ScalarType "tinterval", ScalarType "tinterval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tintervalrecv" [Pseudo Internal]
+>           (ScalarType "tinterval")
+>           False,
+>         CatCreateFunction FunName "tintervalrel" [ScalarType "tinterval"]
+>           (ScalarType "reltime")
+>           False,
+>         CatCreateFunction FunName "tintervalsame"
+>           [ScalarType "tinterval", ScalarType "tinterval"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tintervalsend" [ScalarType "tinterval"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "tintervalstart" [ScalarType "tinterval"]
+>           (ScalarType "abstime")
+>           False,
+>         CatCreateFunction FunName "to_ascii" [ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "to_ascii"
+>           [ScalarType "text", ScalarType "name"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "to_ascii"
+>           [ScalarType "text", ScalarType "int4"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "to_char"
+>           [ScalarType "int8", ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "to_char"
+>           [ScalarType "int4", ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "to_char"
+>           [ScalarType "float4", ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "to_char"
+>           [ScalarType "float8", ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "to_char"
+>           [ScalarType "timestamp", ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "to_char"
+>           [ScalarType "timestamptz", ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "to_char"
+>           [ScalarType "interval", ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "to_char"
+>           [ScalarType "numeric", ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "to_date"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "date")
+>           False,
+>         CatCreateFunction FunName "to_hex" [ScalarType "int8"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "to_hex" [ScalarType "int4"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "to_number"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "to_timestamp" [ScalarType "float8"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName "to_timestamp"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName "to_tsquery" [ScalarType "text"]
+>           (ScalarType "tsquery")
+>           False,
+>         CatCreateFunction FunName "to_tsquery"
+>           [ScalarType "regconfig", ScalarType "text"]
+>           (ScalarType "tsquery")
+>           False,
+>         CatCreateFunction FunName "to_tsvector" [ScalarType "text"]
+>           (ScalarType "tsvector")
+>           False,
+>         CatCreateFunction FunName "to_tsvector"
+>           [ScalarType "regconfig", ScalarType "text"]
+>           (ScalarType "tsvector")
+>           False,
+>         CatCreateFunction FunName "transaction_timestamp" []
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunName "translate"
+>           [ScalarType "text", ScalarType "text", ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "trigger_in" [Pseudo Cstring]
+>           (Pseudo Trigger)
+>           False,
+>         CatCreateFunction FunName "trigger_out" [Pseudo Trigger]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "trunc" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "trunc" [ScalarType "macaddr"]
+>           (ScalarType "macaddr")
+>           False,
+>         CatCreateFunction FunName "trunc" [ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "trunc"
+>           [ScalarType "numeric", ScalarType "int4"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunName "ts_debug" [ScalarType "text"]
+>           (SetOfType (Pseudo Record))
+>           False,
+>         CatCreateFunction FunName "ts_debug"
+>           [ScalarType "regconfig", ScalarType "text"]
+>           (SetOfType (Pseudo Record))
+>           False,
+>         CatCreateFunction FunName "ts_headline"
+>           [ScalarType "text", ScalarType "tsquery"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "ts_headline"
+>           [ScalarType "text", ScalarType "tsquery", ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "ts_headline"
+>           [ScalarType "regconfig", ScalarType "text", ScalarType "tsquery"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "ts_headline"
+>           [ScalarType "regconfig", ScalarType "text", ScalarType "tsquery",
+>            ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "ts_lexize"
+>           [ScalarType "regdictionary", ScalarType "text"]
+>           (ArrayType (ScalarType "text"))
+>           False,
+>         CatCreateFunction FunName "ts_match_qv"
+>           [ScalarType "tsquery", ScalarType "tsvector"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "ts_match_tq"
+>           [ScalarType "text", ScalarType "tsquery"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "ts_match_tt"
+>           [ScalarType "text", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "ts_match_vq"
+>           [ScalarType "tsvector", ScalarType "tsquery"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "ts_parse"
+>           [ScalarType "text", ScalarType "text"]
+>           (SetOfType (Pseudo Record))
+>           False,
+>         CatCreateFunction FunName "ts_parse"
+>           [ScalarType "oid", ScalarType "text"]
+>           (SetOfType (Pseudo Record))
+>           False,
+>         CatCreateFunction FunName "ts_rank"
+>           [ScalarType "tsvector", ScalarType "tsquery"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunName "ts_rank"
+>           [ArrayType (ScalarType "float4"), ScalarType "tsvector",
+>            ScalarType "tsquery"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunName "ts_rank"
+>           [ScalarType "tsvector", ScalarType "tsquery", ScalarType "int4"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunName "ts_rank"
+>           [ArrayType (ScalarType "float4"), ScalarType "tsvector",
+>            ScalarType "tsquery", ScalarType "int4"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunName "ts_rank_cd"
+>           [ScalarType "tsvector", ScalarType "tsquery"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunName "ts_rank_cd"
+>           [ArrayType (ScalarType "float4"), ScalarType "tsvector",
+>            ScalarType "tsquery"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunName "ts_rank_cd"
+>           [ScalarType "tsvector", ScalarType "tsquery", ScalarType "int4"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunName "ts_rank_cd"
+>           [ArrayType (ScalarType "float4"), ScalarType "tsvector",
+>            ScalarType "tsquery", ScalarType "int4"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunName "ts_rewrite"
+>           [ScalarType "tsquery", ScalarType "text"]
+>           (ScalarType "tsquery")
+>           False,
+>         CatCreateFunction FunName "ts_rewrite"
+>           [ScalarType "tsquery", ScalarType "tsquery", ScalarType "tsquery"]
+>           (ScalarType "tsquery")
+>           False,
+>         CatCreateFunction FunName "ts_stat" [ScalarType "text"]
+>           (SetOfType (Pseudo Record))
+>           False,
+>         CatCreateFunction FunName "ts_stat"
+>           [ScalarType "text", ScalarType "text"]
+>           (SetOfType (Pseudo Record))
+>           False,
+>         CatCreateFunction FunName "ts_token_type" [ScalarType "text"]
+>           (SetOfType (Pseudo Record))
+>           False,
+>         CatCreateFunction FunName "ts_token_type" [ScalarType "oid"]
+>           (SetOfType (Pseudo Record))
+>           False,
+>         CatCreateFunction FunName "ts_typanalyze" [Pseudo Internal]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tsmatchjoinsel"
+>           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
+>            ScalarType "int2", Pseudo Internal]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "tsmatchsel"
+>           [Pseudo Internal, ScalarType "oid", Pseudo Internal,
+>            ScalarType "int4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "tsq_mcontained"
+>           [ScalarType "tsquery", ScalarType "tsquery"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tsq_mcontains"
+>           [ScalarType "tsquery", ScalarType "tsquery"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tsquery_and"
+>           [ScalarType "tsquery", ScalarType "tsquery"]
+>           (ScalarType "tsquery")
+>           False,
+>         CatCreateFunction FunName "tsquery_cmp"
+>           [ScalarType "tsquery", ScalarType "tsquery"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "tsquery_eq"
+>           [ScalarType "tsquery", ScalarType "tsquery"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tsquery_ge"
+>           [ScalarType "tsquery", ScalarType "tsquery"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tsquery_gt"
+>           [ScalarType "tsquery", ScalarType "tsquery"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tsquery_le"
+>           [ScalarType "tsquery", ScalarType "tsquery"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tsquery_lt"
+>           [ScalarType "tsquery", ScalarType "tsquery"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tsquery_ne"
+>           [ScalarType "tsquery", ScalarType "tsquery"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tsquery_not" [ScalarType "tsquery"]
+>           (ScalarType "tsquery")
+>           False,
+>         CatCreateFunction FunName "tsquery_or"
+>           [ScalarType "tsquery", ScalarType "tsquery"]
+>           (ScalarType "tsquery")
+>           False,
+>         CatCreateFunction FunName "tsqueryin" [Pseudo Cstring]
+>           (ScalarType "tsquery")
+>           False,
+>         CatCreateFunction FunName "tsqueryout" [ScalarType "tsquery"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "tsqueryrecv" [Pseudo Internal]
+>           (ScalarType "tsquery")
+>           False,
+>         CatCreateFunction FunName "tsquerysend" [ScalarType "tsquery"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "tsvector_cmp"
+>           [ScalarType "tsvector", ScalarType "tsvector"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "tsvector_concat"
+>           [ScalarType "tsvector", ScalarType "tsvector"]
+>           (ScalarType "tsvector")
+>           False,
+>         CatCreateFunction FunName "tsvector_eq"
+>           [ScalarType "tsvector", ScalarType "tsvector"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tsvector_ge"
+>           [ScalarType "tsvector", ScalarType "tsvector"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tsvector_gt"
+>           [ScalarType "tsvector", ScalarType "tsvector"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tsvector_le"
+>           [ScalarType "tsvector", ScalarType "tsvector"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tsvector_lt"
+>           [ScalarType "tsvector", ScalarType "tsvector"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tsvector_ne"
+>           [ScalarType "tsvector", ScalarType "tsvector"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "tsvector_update_trigger" []
+>           (Pseudo Trigger)
+>           False,
+>         CatCreateFunction FunName "tsvector_update_trigger_column" []
+>           (Pseudo Trigger)
+>           False,
+>         CatCreateFunction FunName "tsvectorin" [Pseudo Cstring]
+>           (ScalarType "tsvector")
+>           False,
+>         CatCreateFunction FunName "tsvectorout" [ScalarType "tsvector"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "tsvectorrecv" [Pseudo Internal]
+>           (ScalarType "tsvector")
+>           False,
+>         CatCreateFunction FunName "tsvectorsend" [ScalarType "tsvector"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "txid_current" [] (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "txid_current_snapshot" []
+>           (ScalarType "txid_snapshot")
+>           False,
+>         CatCreateFunction FunName "txid_snapshot_in" [Pseudo Cstring]
+>           (ScalarType "txid_snapshot")
+>           False,
+>         CatCreateFunction FunName "txid_snapshot_out"
+>           [ScalarType "txid_snapshot"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "txid_snapshot_recv" [Pseudo Internal]
+>           (ScalarType "txid_snapshot")
+>           False,
+>         CatCreateFunction FunName "txid_snapshot_send"
+>           [ScalarType "txid_snapshot"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "txid_snapshot_xip"
+>           [ScalarType "txid_snapshot"]
+>           (SetOfType (ScalarType "int8"))
+>           False,
+>         CatCreateFunction FunName "txid_snapshot_xmax"
+>           [ScalarType "txid_snapshot"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "txid_snapshot_xmin"
+>           [ScalarType "txid_snapshot"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunName "txid_visible_in_snapshot"
+>           [ScalarType "int8", ScalarType "txid_snapshot"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "uhc_to_utf8"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "unknownin" [Pseudo Cstring]
+>           (ScalarType "unknown")
+>           False,
+>         CatCreateFunction FunName "unknownout" [ScalarType "unknown"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "unknownrecv" [Pseudo Internal]
+>           (ScalarType "unknown")
+>           False,
+>         CatCreateFunction FunName "unknownsend" [ScalarType "unknown"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "unnest" [Pseudo AnyArray]
+>           (SetOfType (Pseudo AnyElement))
+>           False,
+>         CatCreateFunction FunName "upper" [ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunName "utf8_to_ascii"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "utf8_to_big5"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "utf8_to_euc_cn"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "utf8_to_euc_jis_2004"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "utf8_to_euc_jp"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "utf8_to_euc_kr"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "utf8_to_euc_tw"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "utf8_to_gb18030"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "utf8_to_gbk"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "utf8_to_iso8859"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "utf8_to_iso8859_1"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "utf8_to_johab"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "utf8_to_koi8r"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "utf8_to_koi8u"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "utf8_to_shift_jis_2004"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "utf8_to_sjis"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "utf8_to_uhc"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "utf8_to_win"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "uuid_cmp"
+>           [ScalarType "uuid", ScalarType "uuid"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "uuid_eq"
+>           [ScalarType "uuid", ScalarType "uuid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "uuid_ge"
+>           [ScalarType "uuid", ScalarType "uuid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "uuid_gt"
+>           [ScalarType "uuid", ScalarType "uuid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "uuid_hash" [ScalarType "uuid"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "uuid_in" [Pseudo Cstring]
+>           (ScalarType "uuid")
+>           False,
+>         CatCreateFunction FunName "uuid_le"
+>           [ScalarType "uuid", ScalarType "uuid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "uuid_lt"
+>           [ScalarType "uuid", ScalarType "uuid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "uuid_ne"
+>           [ScalarType "uuid", ScalarType "uuid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "uuid_out" [ScalarType "uuid"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "uuid_recv" [Pseudo Internal]
+>           (ScalarType "uuid")
+>           False,
+>         CatCreateFunction FunName "uuid_send" [ScalarType "uuid"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "varbit"
+>           [ScalarType "varbit", ScalarType "int4", ScalarType "bool"]
+>           (ScalarType "varbit")
+>           False,
+>         CatCreateFunction FunName "varbit_in"
+>           [Pseudo Cstring, ScalarType "oid", ScalarType "int4"]
+>           (ScalarType "varbit")
+>           False,
+>         CatCreateFunction FunName "varbit_out" [ScalarType "varbit"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "varbit_recv"
+>           [Pseudo Internal, ScalarType "oid", ScalarType "int4"]
+>           (ScalarType "varbit")
+>           False,
+>         CatCreateFunction FunName "varbit_send" [ScalarType "varbit"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "varbitcmp"
+>           [ScalarType "varbit", ScalarType "varbit"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "varbiteq"
+>           [ScalarType "varbit", ScalarType "varbit"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "varbitge"
+>           [ScalarType "varbit", ScalarType "varbit"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "varbitgt"
+>           [ScalarType "varbit", ScalarType "varbit"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "varbitle"
+>           [ScalarType "varbit", ScalarType "varbit"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "varbitlt"
+>           [ScalarType "varbit", ScalarType "varbit"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "varbitne"
+>           [ScalarType "varbit", ScalarType "varbit"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "varbittypmodin"
+>           [ArrayType (Pseudo Cstring)]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "varbittypmodout" [ScalarType "int4"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "varchar" [ScalarType "name"]
+>           (ScalarType "varchar")
+>           False,
+>         CatCreateFunction FunName "varchar"
+>           [ScalarType "varchar", ScalarType "int4", ScalarType "bool"]
+>           (ScalarType "varchar")
+>           False,
+>         CatCreateFunction FunName "varcharin"
+>           [Pseudo Cstring, ScalarType "oid", ScalarType "int4"]
+>           (ScalarType "varchar")
+>           False,
+>         CatCreateFunction FunName "varcharout" [ScalarType "varchar"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "varcharrecv"
+>           [Pseudo Internal, ScalarType "oid", ScalarType "int4"]
+>           (ScalarType "varchar")
+>           False,
+>         CatCreateFunction FunName "varcharsend" [ScalarType "varchar"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "varchartypmodin"
+>           [ArrayType (Pseudo Cstring)]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "varchartypmodout" [ScalarType "int4"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "version" [] (ScalarType "text") False,
+>         CatCreateFunction FunName "void_in" [Pseudo Cstring] (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "void_out" [Pseudo Void] (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "width" [ScalarType "box"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunName "width_bucket"
+>           [ScalarType "float8", ScalarType "float8", ScalarType "float8",
+>            ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "width_bucket"
+>           [ScalarType "numeric", ScalarType "numeric", ScalarType "numeric",
+>            ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunName "win1250_to_latin2"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "win1250_to_mic"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "win1251_to_iso"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "win1251_to_koi8r"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "win1251_to_mic"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "win1251_to_win866"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "win866_to_iso"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "win866_to_koi8r"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "win866_to_mic"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "win866_to_win1251"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "win_to_utf8"
+>           [ScalarType "int4", ScalarType "int4", Pseudo Cstring,
+>            Pseudo Internal, ScalarType "int4"]
+>           (Pseudo Void)
+>           False,
+>         CatCreateFunction FunName "xideq"
+>           [ScalarType "xid", ScalarType "xid"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "xideqint4"
+>           [ScalarType "xid", ScalarType "int4"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "xidin" [Pseudo Cstring]
+>           (ScalarType "xid")
+>           False,
+>         CatCreateFunction FunName "xidout" [ScalarType "xid"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "xidrecv" [Pseudo Internal]
+>           (ScalarType "xid")
+>           False,
+>         CatCreateFunction FunName "xidsend" [ScalarType "xid"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "xml" [ScalarType "text"]
+>           (ScalarType "xml")
+>           False,
+>         CatCreateFunction FunName "xml_in" [Pseudo Cstring]
+>           (ScalarType "xml")
+>           False,
+>         CatCreateFunction FunName "xml_out" [ScalarType "xml"]
+>           (Pseudo Cstring)
+>           False,
+>         CatCreateFunction FunName "xml_recv" [Pseudo Internal]
+>           (ScalarType "xml")
+>           False,
+>         CatCreateFunction FunName "xml_send" [ScalarType "xml"]
+>           (ScalarType "bytea")
+>           False,
+>         CatCreateFunction FunName "xmlcomment" [ScalarType "text"]
+>           (ScalarType "xml")
+>           False,
+>         CatCreateFunction FunName "xmlconcat2"
+>           [ScalarType "xml", ScalarType "xml"]
+>           (ScalarType "xml")
+>           False,
+>         CatCreateFunction FunName "xmlvalidate"
+>           [ScalarType "xml", ScalarType "text"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunName "xpath"
+>           [ScalarType "text", ScalarType "xml"]
+>           (ArrayType (ScalarType "xml"))
+>           False,
+>         CatCreateFunction FunName "xpath"
+>           [ScalarType "text", ScalarType "xml",
+>            ArrayType (ScalarType "text")]
+>           (ArrayType (ScalarType "xml"))
+>           False,
+>         CatCreateFunction FunAgg "array_agg" [Pseudo AnyElement]
+>           (Pseudo AnyArray)
+>           False,
+>         CatCreateFunction FunAgg "avg" [ScalarType "int8"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunAgg "avg" [ScalarType "int2"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunAgg "avg" [ScalarType "int4"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunAgg "avg" [ScalarType "float4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunAgg "avg" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunAgg "avg" [ScalarType "interval"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunAgg "avg" [ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunAgg "bit_and" [ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunAgg "bit_and" [ScalarType "int2"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunAgg "bit_and" [ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunAgg "bit_and" [ScalarType "bit"]
+>           (ScalarType "bit")
+>           False,
+>         CatCreateFunction FunAgg "bit_or" [ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunAgg "bit_or" [ScalarType "int2"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunAgg "bit_or" [ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunAgg "bit_or" [ScalarType "bit"]
+>           (ScalarType "bit")
+>           False,
+>         CatCreateFunction FunAgg "bool_and" [ScalarType "bool"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunAgg "bool_or" [ScalarType "bool"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunAgg "corr"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunAgg "count" [] (ScalarType "int8") False,
+>         CatCreateFunction FunAgg "count" [Pseudo Any] (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunAgg "covar_pop"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunAgg "covar_samp"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunAgg "every" [ScalarType "bool"]
+>           (ScalarType "bool")
+>           False,
+>         CatCreateFunction FunAgg "max" [ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunAgg "max" [ScalarType "int2"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunAgg "max" [ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunAgg "max" [ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunAgg "max" [ScalarType "oid"]
+>           (ScalarType "oid")
+>           False,
+>         CatCreateFunction FunAgg "max" [ScalarType "tid"]
+>           (ScalarType "tid")
+>           False,
+>         CatCreateFunction FunAgg "max" [ScalarType "float4"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunAgg "max" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunAgg "max" [ScalarType "abstime"]
+>           (ScalarType "abstime")
+>           False,
+>         CatCreateFunction FunAgg "max" [ScalarType "money"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunAgg "max" [ScalarType "bpchar"]
+>           (ScalarType "bpchar")
+>           False,
+>         CatCreateFunction FunAgg "max" [ScalarType "date"]
+>           (ScalarType "date")
+>           False,
+>         CatCreateFunction FunAgg "max" [ScalarType "time"]
+>           (ScalarType "time")
+>           False,
+>         CatCreateFunction FunAgg "max" [ScalarType "timestamp"]
+>           (ScalarType "timestamp")
+>           False,
+>         CatCreateFunction FunAgg "max" [ScalarType "timestamptz"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunAgg "max" [ScalarType "interval"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunAgg "max" [ScalarType "timetz"]
+>           (ScalarType "timetz")
+>           False,
+>         CatCreateFunction FunAgg "max" [ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunAgg "max" [Pseudo AnyArray] (Pseudo AnyArray)
+>           False,
+>         CatCreateFunction FunAgg "max" [Pseudo AnyEnum] (Pseudo AnyEnum)
+>           False,
+>         CatCreateFunction FunAgg "min" [ScalarType "int8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunAgg "min" [ScalarType "int2"]
+>           (ScalarType "int2")
+>           False,
+>         CatCreateFunction FunAgg "min" [ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunAgg "min" [ScalarType "text"]
+>           (ScalarType "text")
+>           False,
+>         CatCreateFunction FunAgg "min" [ScalarType "oid"]
+>           (ScalarType "oid")
+>           False,
+>         CatCreateFunction FunAgg "min" [ScalarType "tid"]
+>           (ScalarType "tid")
+>           False,
+>         CatCreateFunction FunAgg "min" [ScalarType "float4"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunAgg "min" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunAgg "min" [ScalarType "abstime"]
+>           (ScalarType "abstime")
+>           False,
+>         CatCreateFunction FunAgg "min" [ScalarType "money"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunAgg "min" [ScalarType "bpchar"]
+>           (ScalarType "bpchar")
+>           False,
+>         CatCreateFunction FunAgg "min" [ScalarType "date"]
+>           (ScalarType "date")
+>           False,
+>         CatCreateFunction FunAgg "min" [ScalarType "time"]
+>           (ScalarType "time")
+>           False,
+>         CatCreateFunction FunAgg "min" [ScalarType "timestamp"]
+>           (ScalarType "timestamp")
+>           False,
+>         CatCreateFunction FunAgg "min" [ScalarType "timestamptz"]
+>           (ScalarType "timestamptz")
+>           False,
+>         CatCreateFunction FunAgg "min" [ScalarType "interval"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunAgg "min" [ScalarType "timetz"]
+>           (ScalarType "timetz")
+>           False,
+>         CatCreateFunction FunAgg "min" [ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunAgg "min" [Pseudo AnyArray] (Pseudo AnyArray)
+>           False,
+>         CatCreateFunction FunAgg "min" [Pseudo AnyEnum] (Pseudo AnyEnum)
+>           False,
+>         CatCreateFunction FunAgg "regr_avgx"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunAgg "regr_avgy"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunAgg "regr_count"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunAgg "regr_intercept"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunAgg "regr_r2"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunAgg "regr_slope"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunAgg "regr_sxx"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunAgg "regr_sxy"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunAgg "regr_syy"
+>           [ScalarType "float8", ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunAgg "stddev" [ScalarType "int8"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunAgg "stddev" [ScalarType "int2"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunAgg "stddev" [ScalarType "int4"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunAgg "stddev" [ScalarType "float4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunAgg "stddev" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunAgg "stddev" [ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunAgg "stddev_pop" [ScalarType "int8"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunAgg "stddev_pop" [ScalarType "int2"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunAgg "stddev_pop" [ScalarType "int4"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunAgg "stddev_pop" [ScalarType "float4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunAgg "stddev_pop" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunAgg "stddev_pop" [ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunAgg "stddev_samp" [ScalarType "int8"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunAgg "stddev_samp" [ScalarType "int2"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunAgg "stddev_samp" [ScalarType "int4"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunAgg "stddev_samp" [ScalarType "float4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunAgg "stddev_samp" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunAgg "stddev_samp" [ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunAgg "sum" [ScalarType "int8"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunAgg "sum" [ScalarType "int2"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunAgg "sum" [ScalarType "int4"]
+>           (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunAgg "sum" [ScalarType "float4"]
+>           (ScalarType "float4")
+>           False,
+>         CatCreateFunction FunAgg "sum" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunAgg "sum" [ScalarType "money"]
+>           (ScalarType "money")
+>           False,
+>         CatCreateFunction FunAgg "sum" [ScalarType "interval"]
+>           (ScalarType "interval")
+>           False,
+>         CatCreateFunction FunAgg "sum" [ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunAgg "var_pop" [ScalarType "int8"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunAgg "var_pop" [ScalarType "int2"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunAgg "var_pop" [ScalarType "int4"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunAgg "var_pop" [ScalarType "float4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunAgg "var_pop" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunAgg "var_pop" [ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunAgg "var_samp" [ScalarType "int8"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunAgg "var_samp" [ScalarType "int2"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunAgg "var_samp" [ScalarType "int4"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunAgg "var_samp" [ScalarType "float4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunAgg "var_samp" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunAgg "var_samp" [ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunAgg "variance" [ScalarType "int8"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunAgg "variance" [ScalarType "int2"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunAgg "variance" [ScalarType "int4"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunAgg "variance" [ScalarType "float4"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunAgg "variance" [ScalarType "float8"]
+>           (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunAgg "variance" [ScalarType "numeric"]
+>           (ScalarType "numeric")
+>           False,
+>         CatCreateFunction FunAgg "xmlagg" [ScalarType "xml"]
+>           (ScalarType "xml")
+>           False,
+>         CatCreateFunction FunWindow "cume_dist" [] (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunWindow "dense_rank" [] (ScalarType "int8")
+>           False,
+>         CatCreateFunction FunWindow "first_value" [Pseudo AnyElement]
+>           (Pseudo AnyElement)
+>           False,
+>         CatCreateFunction FunWindow "lag" [Pseudo AnyElement]
+>           (Pseudo AnyElement)
+>           False,
+>         CatCreateFunction FunWindow "lag"
+>           [Pseudo AnyElement, ScalarType "int4"]
+>           (Pseudo AnyElement)
+>           False,
+>         CatCreateFunction FunWindow "lag"
+>           [Pseudo AnyElement, ScalarType "int4", Pseudo AnyElement]
+>           (Pseudo AnyElement)
+>           False,
+>         CatCreateFunction FunWindow "last_value" [Pseudo AnyElement]
+>           (Pseudo AnyElement)
+>           False,
+>         CatCreateFunction FunWindow "lead" [Pseudo AnyElement]
+>           (Pseudo AnyElement)
+>           False,
+>         CatCreateFunction FunWindow "lead"
+>           [Pseudo AnyElement, ScalarType "int4"]
+>           (Pseudo AnyElement)
+>           False,
+>         CatCreateFunction FunWindow "lead"
+>           [Pseudo AnyElement, ScalarType "int4", Pseudo AnyElement]
+>           (Pseudo AnyElement)
+>           False,
+>         CatCreateFunction FunWindow "nth_value"
+>           [Pseudo AnyElement, ScalarType "int4"]
+>           (Pseudo AnyElement)
+>           False,
+>         CatCreateFunction FunWindow "ntile" [ScalarType "int4"]
+>           (ScalarType "int4")
+>           False,
+>         CatCreateFunction FunWindow "percent_rank" [] (ScalarType "float8")
+>           False,
+>         CatCreateFunction FunWindow "rank" [] (ScalarType "int8") False,
+>         CatCreateFunction FunWindow "row_number" [] (ScalarType "int8")
+>           False,
+>         CatCreateTable "pg_aggregate"
+>           [("aggfnoid", ScalarType "regproc"),
+>            ("aggtransfn", ScalarType "regproc"),
+>            ("aggfinalfn", ScalarType "regproc"),
+>            ("aggsortop", ScalarType "oid"),
+>            ("aggtranstype", ScalarType "oid"),
+>            ("agginitval", ScalarType "text")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_am"
+>           [("amname", ScalarType "name"),
+>            ("amstrategies", ScalarType "int2"),
+>            ("amsupport", ScalarType "int2"),
+>            ("amcanorder", ScalarType "bool"),
+>            ("amcanbackward", ScalarType "bool"),
+>            ("amcanunique", ScalarType "bool"),
+>            ("amcanmulticol", ScalarType "bool"),
+>            ("amoptionalkey", ScalarType "bool"),
+>            ("amindexnulls", ScalarType "bool"),
+>            ("amsearchnulls", ScalarType "bool"),
+>            ("amstorage", ScalarType "bool"),
+>            ("amclusterable", ScalarType "bool"),
+>            ("amkeytype", ScalarType "oid"),
+>            ("aminsert", ScalarType "regproc"),
+>            ("ambeginscan", ScalarType "regproc"),
+>            ("amgettuple", ScalarType "regproc"),
+>            ("amgetbitmap", ScalarType "regproc"),
+>            ("amrescan", ScalarType "regproc"),
+>            ("amendscan", ScalarType "regproc"),
+>            ("ammarkpos", ScalarType "regproc"),
+>            ("amrestrpos", ScalarType "regproc"),
+>            ("ambuild", ScalarType "regproc"),
+>            ("ambulkdelete", ScalarType "regproc"),
+>            ("amvacuumcleanup", ScalarType "regproc"),
+>            ("amcostestimate", ScalarType "regproc"),
+>            ("amoptions", ScalarType "regproc")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
+>            ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_amop"
+>           [("amopfamily", ScalarType "oid"),
+>            ("amoplefttype", ScalarType "oid"),
+>            ("amoprighttype", ScalarType "oid"),
+>            ("amopstrategy", ScalarType "int2"), ("amopopr", ScalarType "oid"),
+>            ("amopmethod", ScalarType "oid")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
+>            ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_amproc"
+>           [("amprocfamily", ScalarType "oid"),
+>            ("amproclefttype", ScalarType "oid"),
+>            ("amprocrighttype", ScalarType "oid"),
+>            ("amprocnum", ScalarType "int2"), ("amproc", ScalarType "regproc")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
+>            ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_attrdef"
+>           [("adrelid", ScalarType "oid"), ("adnum", ScalarType "int2"),
+>            ("adbin", ScalarType "text"), ("adsrc", ScalarType "text")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
+>            ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_attribute"
+>           [("attrelid", ScalarType "oid"), ("attname", ScalarType "name"),
+>            ("atttypid", ScalarType "oid"),
+>            ("attstattarget", ScalarType "int4"),
+>            ("attlen", ScalarType "int2"), ("attnum", ScalarType "int2"),
+>            ("attndims", ScalarType "int4"),
+>            ("attcacheoff", ScalarType "int4"),
+>            ("atttypmod", ScalarType "int4"), ("attbyval", ScalarType "bool"),
+>            ("attstorage", ScalarType "char"), ("attalign", ScalarType "char"),
+>            ("attnotnull", ScalarType "bool"),
+>            ("atthasdef", ScalarType "bool"),
+>            ("attisdropped", ScalarType "bool"),
+>            ("attislocal", ScalarType "bool"),
+>            ("attinhcount", ScalarType "int4"),
+>            ("attacl", ArrayType (ScalarType "aclitem"))]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_auth_members"
+>           [("roleid", ScalarType "oid"), ("member", ScalarType "oid"),
+>            ("grantor", ScalarType "oid"), ("admin_option", ScalarType "bool")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_authid"
+>           [("rolname", ScalarType "name"), ("rolsuper", ScalarType "bool"),
+>            ("rolinherit", ScalarType "bool"),
+>            ("rolcreaterole", ScalarType "bool"),
+>            ("rolcreatedb", ScalarType "bool"),
+>            ("rolcatupdate", ScalarType "bool"),
+>            ("rolcanlogin", ScalarType "bool"),
+>            ("rolconnlimit", ScalarType "int4"),
+>            ("rolpassword", ScalarType "text"),
+>            ("rolvaliduntil", ScalarType "timestamptz"),
+>            ("rolconfig", ArrayType (ScalarType "text"))]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
+>            ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_cast"
+>           [("castsource", ScalarType "oid"),
+>            ("casttarget", ScalarType "oid"), ("castfunc", ScalarType "oid"),
+>            ("castcontext", ScalarType "char"),
+>            ("castmethod", ScalarType "char")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
+>            ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_class"
+>           [("relname", ScalarType "name"),
+>            ("relnamespace", ScalarType "oid"), ("reltype", ScalarType "oid"),
+>            ("relowner", ScalarType "oid"), ("relam", ScalarType "oid"),
+>            ("relfilenode", ScalarType "oid"),
+>            ("reltablespace", ScalarType "oid"),
+>            ("relpages", ScalarType "int4"),
+>            ("reltuples", ScalarType "float4"),
+>            ("reltoastrelid", ScalarType "oid"),
+>            ("reltoastidxid", ScalarType "oid"),
+>            ("relhasindex", ScalarType "bool"),
+>            ("relisshared", ScalarType "bool"),
+>            ("relistemp", ScalarType "bool"), ("relkind", ScalarType "char"),
+>            ("relnatts", ScalarType "int2"), ("relchecks", ScalarType "int2"),
+>            ("relhasoids", ScalarType "bool"),
+>            ("relhaspkey", ScalarType "bool"),
+>            ("relhasrules", ScalarType "bool"),
+>            ("relhastriggers", ScalarType "bool"),
+>            ("relhassubclass", ScalarType "bool"),
+>            ("relfrozenxid", ScalarType "xid"),
+>            ("relacl", ArrayType (ScalarType "aclitem")),
+>            ("reloptions", ArrayType (ScalarType "text"))]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
+>            ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_constraint"
+>           [("conname", ScalarType "name"),
+>            ("connamespace", ScalarType "oid"), ("contype", ScalarType "char"),
+>            ("condeferrable", ScalarType "bool"),
+>            ("condeferred", ScalarType "bool"), ("conrelid", ScalarType "oid"),
+>            ("contypid", ScalarType "oid"), ("confrelid", ScalarType "oid"),
+>            ("confupdtype", ScalarType "char"),
+>            ("confdeltype", ScalarType "char"),
+>            ("confmatchtype", ScalarType "char"),
+>            ("conislocal", ScalarType "bool"),
+>            ("coninhcount", ScalarType "int4"),
+>            ("conkey", ArrayType (ScalarType "int2")),
+>            ("confkey", ArrayType (ScalarType "int2")),
+>            ("conpfeqop", ArrayType (ScalarType "oid")),
+>            ("conppeqop", ArrayType (ScalarType "oid")),
+>            ("conffeqop", ArrayType (ScalarType "oid")),
+>            ("conbin", ScalarType "text"), ("consrc", ScalarType "text")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
+>            ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_conversion"
+>           [("conname", ScalarType "name"),
+>            ("connamespace", ScalarType "oid"), ("conowner", ScalarType "oid"),
+>            ("conforencoding", ScalarType "int4"),
+>            ("contoencoding", ScalarType "int4"),
+>            ("conproc", ScalarType "regproc"),
+>            ("condefault", ScalarType "bool")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
+>            ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_database"
+>           [("datname", ScalarType "name"), ("datdba", ScalarType "oid"),
+>            ("encoding", ScalarType "int4"), ("datcollate", ScalarType "name"),
+>            ("datctype", ScalarType "name"),
+>            ("datistemplate", ScalarType "bool"),
+>            ("datallowconn", ScalarType "bool"),
+>            ("datconnlimit", ScalarType "int4"),
+>            ("datlastsysoid", ScalarType "oid"),
+>            ("datfrozenxid", ScalarType "xid"),
+>            ("dattablespace", ScalarType "oid"),
+>            ("datconfig", ArrayType (ScalarType "text")),
+>            ("datacl", ArrayType (ScalarType "aclitem"))]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
+>            ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_depend"
+>           [("classid", ScalarType "oid"), ("objid", ScalarType "oid"),
+>            ("objsubid", ScalarType "int4"), ("refclassid", ScalarType "oid"),
+>            ("refobjid", ScalarType "oid"), ("refobjsubid", ScalarType "int4"),
+>            ("deptype", ScalarType "char")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_description"
+>           [("objoid", ScalarType "oid"), ("classoid", ScalarType "oid"),
+>            ("objsubid", ScalarType "int4"),
+>            ("description", ScalarType "text")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_enum"
+>           [("enumtypid", ScalarType "oid"), ("enumlabel", ScalarType "name")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
+>            ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_foreign_data_wrapper"
+>           [("fdwname", ScalarType "name"), ("fdwowner", ScalarType "oid"),
+>            ("fdwvalidator", ScalarType "oid"),
+>            ("fdwacl", ArrayType (ScalarType "aclitem")),
+>            ("fdwoptions", ArrayType (ScalarType "text"))]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
+>            ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_foreign_server"
+>           [("srvname", ScalarType "name"), ("srvowner", ScalarType "oid"),
+>            ("srvfdw", ScalarType "oid"), ("srvtype", ScalarType "text"),
+>            ("srvversion", ScalarType "text"),
+>            ("srvacl", ArrayType (ScalarType "aclitem")),
+>            ("srvoptions", ArrayType (ScalarType "text"))]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
+>            ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_index"
+>           [("indexrelid", ScalarType "oid"), ("indrelid", ScalarType "oid"),
+>            ("indnatts", ScalarType "int2"),
+>            ("indisunique", ScalarType "bool"),
+>            ("indisprimary", ScalarType "bool"),
+>            ("indisclustered", ScalarType "bool"),
+>            ("indisvalid", ScalarType "bool"),
+>            ("indcheckxmin", ScalarType "bool"),
+>            ("indisready", ScalarType "bool"),
+>            ("indkey", ScalarType "int2vector"),
+>            ("indclass", ScalarType "oidvector"),
+>            ("indoption", ScalarType "int2vector"),
+>            ("indexprs", ScalarType "text"), ("indpred", ScalarType "text")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_inherits"
+>           [("inhrelid", ScalarType "oid"), ("inhparent", ScalarType "oid"),
+>            ("inhseqno", ScalarType "int4")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_language"
+>           [("lanname", ScalarType "name"), ("lanowner", ScalarType "oid"),
+>            ("lanispl", ScalarType "bool"),
+>            ("lanpltrusted", ScalarType "bool"),
+>            ("lanplcallfoid", ScalarType "oid"),
+>            ("lanvalidator", ScalarType "oid"),
+>            ("lanacl", ArrayType (ScalarType "aclitem"))]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
+>            ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_largeobject"
+>           [("loid", ScalarType "oid"), ("pageno", ScalarType "int4"),
+>            ("data", ScalarType "bytea")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_listener"
+>           [("relname", ScalarType "name"),
+>            ("listenerpid", ScalarType "int4"),
+>            ("notification", ScalarType "int4")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_namespace"
+>           [("nspname", ScalarType "name"), ("nspowner", ScalarType "oid"),
+>            ("nspacl", ArrayType (ScalarType "aclitem"))]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
+>            ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_opclass"
+>           [("opcmethod", ScalarType "oid"), ("opcname", ScalarType "name"),
+>            ("opcnamespace", ScalarType "oid"), ("opcowner", ScalarType "oid"),
+>            ("opcfamily", ScalarType "oid"), ("opcintype", ScalarType "oid"),
+>            ("opcdefault", ScalarType "bool"),
+>            ("opckeytype", ScalarType "oid")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
+>            ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_operator"
+>           [("oprname", ScalarType "name"),
+>            ("oprnamespace", ScalarType "oid"), ("oprowner", ScalarType "oid"),
+>            ("oprkind", ScalarType "char"), ("oprcanmerge", ScalarType "bool"),
+>            ("oprcanhash", ScalarType "bool"), ("oprleft", ScalarType "oid"),
+>            ("oprright", ScalarType "oid"), ("oprresult", ScalarType "oid"),
+>            ("oprcom", ScalarType "oid"), ("oprnegate", ScalarType "oid"),
+>            ("oprcode", ScalarType "regproc"),
+>            ("oprrest", ScalarType "regproc"),
+>            ("oprjoin", ScalarType "regproc")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
+>            ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_opfamily"
+>           [("opfmethod", ScalarType "oid"), ("opfname", ScalarType "name"),
+>            ("opfnamespace", ScalarType "oid"), ("opfowner", ScalarType "oid")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
+>            ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_pltemplate"
+>           [("tmplname", ScalarType "name"),
+>            ("tmpltrusted", ScalarType "bool"),
+>            ("tmpldbacreate", ScalarType "bool"),
+>            ("tmplhandler", ScalarType "text"),
+>            ("tmplvalidator", ScalarType "text"),
+>            ("tmpllibrary", ScalarType "text"),
+>            ("tmplacl", ArrayType (ScalarType "aclitem"))]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_proc"
+>           [("proname", ScalarType "name"),
+>            ("pronamespace", ScalarType "oid"), ("proowner", ScalarType "oid"),
+>            ("prolang", ScalarType "oid"), ("procost", ScalarType "float4"),
+>            ("prorows", ScalarType "float4"),
+>            ("provariadic", ScalarType "oid"), ("proisagg", ScalarType "bool"),
+>            ("proiswindow", ScalarType "bool"),
+>            ("prosecdef", ScalarType "bool"),
+>            ("proisstrict", ScalarType "bool"),
+>            ("proretset", ScalarType "bool"),
+>            ("provolatile", ScalarType "char"),
+>            ("pronargs", ScalarType "int2"),
+>            ("pronargdefaults", ScalarType "int2"),
+>            ("prorettype", ScalarType "oid"),
+>            ("proargtypes", ScalarType "oidvector"),
+>            ("proallargtypes", ArrayType (ScalarType "oid")),
+>            ("proargmodes", ArrayType (ScalarType "char")),
+>            ("proargnames", ArrayType (ScalarType "text")),
+>            ("proargdefaults", ScalarType "text"),
+>            ("prosrc", ScalarType "text"), ("probin", ScalarType "bytea"),
+>            ("proconfig", ArrayType (ScalarType "text")),
+>            ("proacl", ArrayType (ScalarType "aclitem"))]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
+>            ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_rewrite"
+>           [("rulename", ScalarType "name"), ("ev_class", ScalarType "oid"),
+>            ("ev_attr", ScalarType "int2"), ("ev_type", ScalarType "char"),
+>            ("ev_enabled", ScalarType "char"),
+>            ("is_instead", ScalarType "bool"), ("ev_qual", ScalarType "text"),
+>            ("ev_action", ScalarType "text")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
+>            ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_shdepend"
+>           [("dbid", ScalarType "oid"), ("classid", ScalarType "oid"),
+>            ("objid", ScalarType "oid"), ("objsubid", ScalarType "int4"),
+>            ("refclassid", ScalarType "oid"), ("refobjid", ScalarType "oid"),
+>            ("deptype", ScalarType "char")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_shdescription"
+>           [("objoid", ScalarType "oid"), ("classoid", ScalarType "oid"),
+>            ("description", ScalarType "text")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_statistic"
+>           [("starelid", ScalarType "oid"), ("staattnum", ScalarType "int2"),
+>            ("stanullfrac", ScalarType "float4"),
+>            ("stawidth", ScalarType "int4"),
+>            ("stadistinct", ScalarType "float4"),
+>            ("stakind1", ScalarType "int2"), ("stakind2", ScalarType "int2"),
+>            ("stakind3", ScalarType "int2"), ("stakind4", ScalarType "int2"),
+>            ("staop1", ScalarType "oid"), ("staop2", ScalarType "oid"),
+>            ("staop3", ScalarType "oid"), ("staop4", ScalarType "oid"),
+>            ("stanumbers1", ArrayType (ScalarType "float4")),
+>            ("stanumbers2", ArrayType (ScalarType "float4")),
+>            ("stanumbers3", ArrayType (ScalarType "float4")),
+>            ("stanumbers4", ArrayType (ScalarType "float4")),
+>            ("stavalues1", Pseudo AnyArray), ("stavalues2", Pseudo AnyArray),
+>            ("stavalues3", Pseudo AnyArray), ("stavalues4", Pseudo AnyArray)]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_tablespace"
+>           [("spcname", ScalarType "name"), ("spcowner", ScalarType "oid"),
+>            ("spclocation", ScalarType "text"),
+>            ("spcacl", ArrayType (ScalarType "aclitem"))]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
+>            ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_trigger"
+>           [("tgrelid", ScalarType "oid"), ("tgname", ScalarType "name"),
+>            ("tgfoid", ScalarType "oid"), ("tgtype", ScalarType "int2"),
+>            ("tgenabled", ScalarType "char"),
+>            ("tgisconstraint", ScalarType "bool"),
+>            ("tgconstrname", ScalarType "name"),
+>            ("tgconstrrelid", ScalarType "oid"),
+>            ("tgconstraint", ScalarType "oid"),
+>            ("tgdeferrable", ScalarType "bool"),
+>            ("tginitdeferred", ScalarType "bool"),
+>            ("tgnargs", ScalarType "int2"),
+>            ("tgattr", ScalarType "int2vector"),
+>            ("tgargs", ScalarType "bytea")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
+>            ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_ts_config"
+>           [("cfgname", ScalarType "name"),
+>            ("cfgnamespace", ScalarType "oid"), ("cfgowner", ScalarType "oid"),
+>            ("cfgparser", ScalarType "oid")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
+>            ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_ts_config_map"
+>           [("mapcfg", ScalarType "oid"), ("maptokentype", ScalarType "int4"),
+>            ("mapseqno", ScalarType "int4"), ("mapdict", ScalarType "oid")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_ts_dict"
+>           [("dictname", ScalarType "name"),
+>            ("dictnamespace", ScalarType "oid"),
+>            ("dictowner", ScalarType "oid"),
+>            ("dicttemplate", ScalarType "oid"),
+>            ("dictinitoption", ScalarType "text")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
+>            ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_ts_parser"
+>           [("prsname", ScalarType "name"),
+>            ("prsnamespace", ScalarType "oid"),
+>            ("prsstart", ScalarType "regproc"),
+>            ("prstoken", ScalarType "regproc"),
+>            ("prsend", ScalarType "regproc"),
+>            ("prsheadline", ScalarType "regproc"),
+>            ("prslextype", ScalarType "regproc")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
+>            ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_ts_template"
+>           [("tmplname", ScalarType "name"),
+>            ("tmplnamespace", ScalarType "oid"),
+>            ("tmplinit", ScalarType "regproc"),
+>            ("tmpllexize", ScalarType "regproc")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
+>            ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_type"
+>           [("typname", ScalarType "name"),
+>            ("typnamespace", ScalarType "oid"), ("typowner", ScalarType "oid"),
+>            ("typlen", ScalarType "int2"), ("typbyval", ScalarType "bool"),
+>            ("typtype", ScalarType "char"), ("typcategory", ScalarType "char"),
+>            ("typispreferred", ScalarType "bool"),
+>            ("typisdefined", ScalarType "bool"),
+>            ("typdelim", ScalarType "char"), ("typrelid", ScalarType "oid"),
+>            ("typelem", ScalarType "oid"), ("typarray", ScalarType "oid"),
+>            ("typinput", ScalarType "regproc"),
+>            ("typoutput", ScalarType "regproc"),
+>            ("typreceive", ScalarType "regproc"),
+>            ("typsend", ScalarType "regproc"),
+>            ("typmodin", ScalarType "regproc"),
+>            ("typmodout", ScalarType "regproc"),
+>            ("typanalyze", ScalarType "regproc"),
+>            ("typalign", ScalarType "char"), ("typstorage", ScalarType "char"),
+>            ("typnotnull", ScalarType "bool"),
+>            ("typbasetype", ScalarType "oid"),
+>            ("typtypmod", ScalarType "int4"), ("typndims", ScalarType "int4"),
+>            ("typdefaultbin", ScalarType "text"),
+>            ("typdefault", ScalarType "text")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
+>            ("ctid", ScalarType "tid")],
+>         CatCreateTable "pg_user_mapping"
+>           [("umuser", ScalarType "oid"), ("umserver", ScalarType "oid"),
+>            ("umoptions", ArrayType (ScalarType "text"))]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("oid", ScalarType "oid"),
+>            ("ctid", ScalarType "tid")],
+>         CatCreateTable "information_schema.sql_features"
+>           [("feature_id", DomainType "information_schema.character_data"),
+>            ("feature_name", DomainType "information_schema.character_data"),
+>            ("sub_feature_id", DomainType "information_schema.character_data"),
+>            ("sub_feature_name",
+>             DomainType "information_schema.character_data"),
+>            ("is_supported", DomainType "information_schema.character_data"),
+>            ("is_verified_by", DomainType "information_schema.character_data"),
+>            ("comments", DomainType "information_schema.character_data")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
+>         CatCreateTable "information_schema.sql_implementation_info"
+>           [("implementation_info_id",
+>             DomainType "information_schema.character_data"),
+>            ("implementation_info_name",
+>             DomainType "information_schema.character_data"),
+>            ("integer_value", DomainType "information_schema.cardinal_number"),
+>            ("character_value",
+>             DomainType "information_schema.character_data"),
+>            ("comments", DomainType "information_schema.character_data")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
+>         CatCreateTable "information_schema.sql_languages"
+>           [("sql_language_source",
+>             DomainType "information_schema.character_data"),
+>            ("sql_language_year",
+>             DomainType "information_schema.character_data"),
+>            ("sql_language_conformance",
+>             DomainType "information_schema.character_data"),
+>            ("sql_language_integrity",
+>             DomainType "information_schema.character_data"),
+>            ("sql_language_implementation",
+>             DomainType "information_schema.character_data"),
+>            ("sql_language_binding_style",
+>             DomainType "information_schema.character_data"),
+>            ("sql_language_programming_language",
+>             DomainType "information_schema.character_data")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
+>         CatCreateTable "information_schema.sql_packages"
+>           [("feature_id", DomainType "information_schema.character_data"),
+>            ("feature_name", DomainType "information_schema.character_data"),
+>            ("is_supported", DomainType "information_schema.character_data"),
+>            ("is_verified_by", DomainType "information_schema.character_data"),
+>            ("comments", DomainType "information_schema.character_data")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
+>         CatCreateTable "information_schema.sql_parts"
+>           [("feature_id", DomainType "information_schema.character_data"),
+>            ("feature_name", DomainType "information_schema.character_data"),
+>            ("is_supported", DomainType "information_schema.character_data"),
+>            ("is_verified_by", DomainType "information_schema.character_data"),
+>            ("comments", DomainType "information_schema.character_data")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
+>         CatCreateTable "information_schema.sql_sizing"
+>           [("sizing_id", DomainType "information_schema.cardinal_number"),
+>            ("sizing_name", DomainType "information_schema.character_data"),
+>            ("supported_value",
+>             DomainType "information_schema.cardinal_number"),
+>            ("comments", DomainType "information_schema.character_data")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
+>         CatCreateTable "information_schema.sql_sizing_profiles"
+>           [("sizing_id", DomainType "information_schema.cardinal_number"),
+>            ("sizing_name", DomainType "information_schema.character_data"),
+>            ("profile_id", DomainType "information_schema.character_data"),
+>            ("required_value",
+>             DomainType "information_schema.cardinal_number"),
+>            ("comments", DomainType "information_schema.character_data")]
+>           [("tableoid", ScalarType "oid"), ("cmax", ScalarType "cid"),
+>            ("xmax", ScalarType "xid"), ("cmin", ScalarType "cid"),
+>            ("xmin", ScalarType "xid"), ("ctid", ScalarType "tid")],
+>         CatCreateView "information_schema._pg_foreign_data_wrappers"
+>           [("oid", ScalarType "oid"), ("fdwowner", ScalarType "oid"),
+>            ("fdwoptions", ArrayType (ScalarType "text")),
+>            ("foreign_data_wrapper_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("foreign_data_wrapper_name",
+>             DomainType "information_schema.sql_identifier"),
+>            ("authorization_identifier",
+>             DomainType "information_schema.sql_identifier"),
+>            ("foreign_data_wrapper_language",
+>             DomainType "information_schema.character_data")],
+>         CatCreateView "information_schema._pg_foreign_servers"
+>           [("oid", ScalarType "oid"),
+>            ("srvoptions", ArrayType (ScalarType "text")),
+>            ("foreign_server_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("foreign_server_name",
+>             DomainType "information_schema.sql_identifier"),
+>            ("foreign_data_wrapper_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("foreign_data_wrapper_name",
+>             DomainType "information_schema.sql_identifier"),
+>            ("foreign_server_type",
+>             DomainType "information_schema.character_data"),
+>            ("foreign_server_version",
+>             DomainType "information_schema.character_data"),
+>            ("authorization_identifier",
+>             DomainType "information_schema.sql_identifier")],
+>         CatCreateView "information_schema._pg_user_mappings"
+>           [("oid", ScalarType "oid"),
+>            ("umoptions", ArrayType (ScalarType "text")),
+>            ("umuser", ScalarType "oid"),
+>            ("authorization_identifier",
+>             DomainType "information_schema.sql_identifier"),
+>            ("foreign_server_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("foreign_server_name",
+>             DomainType "information_schema.sql_identifier"),
+>            ("srvowner", DomainType "information_schema.sql_identifier")],
+>         CatCreateView
+>           "information_schema.administrable_role_authorizations"
+>           [("grantee", DomainType "information_schema.sql_identifier"),
+>            ("role_name", DomainType "information_schema.sql_identifier"),
+>            ("is_grantable", DomainType "information_schema.character_data")],
+>         CatCreateView "information_schema.applicable_roles"
+>           [("grantee", DomainType "information_schema.sql_identifier"),
+>            ("role_name", DomainType "information_schema.sql_identifier"),
+>            ("is_grantable", DomainType "information_schema.character_data")],
+>         CatCreateView "information_schema.attributes"
+>           [("udt_catalog", DomainType "information_schema.sql_identifier"),
+>            ("udt_schema", DomainType "information_schema.sql_identifier"),
+>            ("udt_name", DomainType "information_schema.sql_identifier"),
+>            ("attribute_name", DomainType "information_schema.sql_identifier"),
+>            ("ordinal_position",
+>             DomainType "information_schema.cardinal_number"),
+>            ("attribute_default",
+>             DomainType "information_schema.character_data"),
+>            ("is_nullable", DomainType "information_schema.character_data"),
+>            ("data_type", DomainType "information_schema.character_data"),
+>            ("character_maximum_length",
+>             DomainType "information_schema.cardinal_number"),
+>            ("character_octet_length",
+>             DomainType "information_schema.cardinal_number"),
+>            ("character_set_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("character_set_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("character_set_name",
+>             DomainType "information_schema.sql_identifier"),
+>            ("collation_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("collation_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("collation_name", DomainType "information_schema.sql_identifier"),
+>            ("numeric_precision",
+>             DomainType "information_schema.cardinal_number"),
+>            ("numeric_precision_radix",
+>             DomainType "information_schema.cardinal_number"),
+>            ("numeric_scale", DomainType "information_schema.cardinal_number"),
+>            ("datetime_precision",
+>             DomainType "information_schema.cardinal_number"),
+>            ("interval_type", DomainType "information_schema.character_data"),
+>            ("interval_precision",
+>             DomainType "information_schema.character_data"),
+>            ("attribute_udt_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("attribute_udt_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("attribute_udt_name",
+>             DomainType "information_schema.sql_identifier"),
+>            ("scope_catalog", DomainType "information_schema.sql_identifier"),
+>            ("scope_schema", DomainType "information_schema.sql_identifier"),
+>            ("scope_name", DomainType "information_schema.sql_identifier"),
+>            ("maximum_cardinality",
+>             DomainType "information_schema.cardinal_number"),
+>            ("dtd_identifier", DomainType "information_schema.sql_identifier"),
+>            ("is_derived_reference_attribute",
+>             DomainType "information_schema.character_data")],
+>         CatCreateView "information_schema.check_constraint_routine_usage"
+>           [("constraint_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("constraint_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("constraint_name",
+>             DomainType "information_schema.sql_identifier"),
+>            ("specific_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("specific_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("specific_name", DomainType "information_schema.sql_identifier")],
+>         CatCreateView "information_schema.check_constraints"
+>           [("constraint_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("constraint_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("constraint_name",
+>             DomainType "information_schema.sql_identifier"),
+>            ("check_clause", DomainType "information_schema.character_data")],
+>         CatCreateView "information_schema.column_domain_usage"
+>           [("domain_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("domain_schema", DomainType "information_schema.sql_identifier"),
+>            ("domain_name", DomainType "information_schema.sql_identifier"),
+>            ("table_catalog", DomainType "information_schema.sql_identifier"),
+>            ("table_schema", DomainType "information_schema.sql_identifier"),
+>            ("table_name", DomainType "information_schema.sql_identifier"),
+>            ("column_name", DomainType "information_schema.sql_identifier")],
+>         CatCreateView "information_schema.column_privileges"
+>           [("grantor", DomainType "information_schema.sql_identifier"),
+>            ("grantee", DomainType "information_schema.sql_identifier"),
+>            ("table_catalog", DomainType "information_schema.sql_identifier"),
+>            ("table_schema", DomainType "information_schema.sql_identifier"),
+>            ("table_name", DomainType "information_schema.sql_identifier"),
+>            ("column_name", DomainType "information_schema.sql_identifier"),
+>            ("privilege_type", DomainType "information_schema.character_data"),
+>            ("is_grantable", DomainType "information_schema.character_data")],
+>         CatCreateView "information_schema.column_udt_usage"
+>           [("udt_catalog", DomainType "information_schema.sql_identifier"),
+>            ("udt_schema", DomainType "information_schema.sql_identifier"),
+>            ("udt_name", DomainType "information_schema.sql_identifier"),
+>            ("table_catalog", DomainType "information_schema.sql_identifier"),
+>            ("table_schema", DomainType "information_schema.sql_identifier"),
+>            ("table_name", DomainType "information_schema.sql_identifier"),
+>            ("column_name", DomainType "information_schema.sql_identifier")],
+>         CatCreateView "information_schema.columns"
+>           [("table_catalog", DomainType "information_schema.sql_identifier"),
+>            ("table_schema", DomainType "information_schema.sql_identifier"),
+>            ("table_name", DomainType "information_schema.sql_identifier"),
+>            ("column_name", DomainType "information_schema.sql_identifier"),
+>            ("ordinal_position",
+>             DomainType "information_schema.cardinal_number"),
+>            ("column_default", DomainType "information_schema.character_data"),
+>            ("is_nullable", DomainType "information_schema.character_data"),
+>            ("data_type", DomainType "information_schema.character_data"),
+>            ("character_maximum_length",
+>             DomainType "information_schema.cardinal_number"),
+>            ("character_octet_length",
+>             DomainType "information_schema.cardinal_number"),
+>            ("numeric_precision",
+>             DomainType "information_schema.cardinal_number"),
+>            ("numeric_precision_radix",
+>             DomainType "information_schema.cardinal_number"),
+>            ("numeric_scale", DomainType "information_schema.cardinal_number"),
+>            ("datetime_precision",
+>             DomainType "information_schema.cardinal_number"),
+>            ("interval_type", DomainType "information_schema.character_data"),
+>            ("interval_precision",
+>             DomainType "information_schema.character_data"),
+>            ("character_set_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("character_set_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("character_set_name",
+>             DomainType "information_schema.sql_identifier"),
+>            ("collation_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("collation_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("collation_name", DomainType "information_schema.sql_identifier"),
+>            ("domain_catalog", DomainType "information_schema.sql_identifier"),
+>            ("domain_schema", DomainType "information_schema.sql_identifier"),
+>            ("domain_name", DomainType "information_schema.sql_identifier"),
+>            ("udt_catalog", DomainType "information_schema.sql_identifier"),
+>            ("udt_schema", DomainType "information_schema.sql_identifier"),
+>            ("udt_name", DomainType "information_schema.sql_identifier"),
+>            ("scope_catalog", DomainType "information_schema.sql_identifier"),
+>            ("scope_schema", DomainType "information_schema.sql_identifier"),
+>            ("scope_name", DomainType "information_schema.sql_identifier"),
+>            ("maximum_cardinality",
+>             DomainType "information_schema.cardinal_number"),
+>            ("dtd_identifier", DomainType "information_schema.sql_identifier"),
+>            ("is_self_referencing",
+>             DomainType "information_schema.character_data"),
+>            ("is_identity", DomainType "information_schema.character_data"),
+>            ("identity_generation",
+>             DomainType "information_schema.character_data"),
+>            ("identity_start", DomainType "information_schema.character_data"),
+>            ("identity_increment",
+>             DomainType "information_schema.character_data"),
+>            ("identity_maximum",
+>             DomainType "information_schema.character_data"),
+>            ("identity_minimum",
+>             DomainType "information_schema.character_data"),
+>            ("identity_cycle", DomainType "information_schema.character_data"),
+>            ("is_generated", DomainType "information_schema.character_data"),
+>            ("generation_expression",
+>             DomainType "information_schema.character_data"),
+>            ("is_updatable", DomainType "information_schema.character_data")],
+>         CatCreateView "information_schema.constraint_column_usage"
+>           [("table_catalog", DomainType "information_schema.sql_identifier"),
+>            ("table_schema", DomainType "information_schema.sql_identifier"),
+>            ("table_name", DomainType "information_schema.sql_identifier"),
+>            ("column_name", DomainType "information_schema.sql_identifier"),
+>            ("constraint_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("constraint_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("constraint_name",
+>             DomainType "information_schema.sql_identifier")],
+>         CatCreateView "information_schema.constraint_table_usage"
+>           [("table_catalog", DomainType "information_schema.sql_identifier"),
+>            ("table_schema", DomainType "information_schema.sql_identifier"),
+>            ("table_name", DomainType "information_schema.sql_identifier"),
+>            ("constraint_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("constraint_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("constraint_name",
+>             DomainType "information_schema.sql_identifier")],
+>         CatCreateView "information_schema.data_type_privileges"
+>           [("object_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("object_schema", DomainType "information_schema.sql_identifier"),
+>            ("object_name", DomainType "information_schema.sql_identifier"),
+>            ("object_type", DomainType "information_schema.character_data"),
+>            ("dtd_identifier",
+>             DomainType "information_schema.sql_identifier")],
+>         CatCreateView "information_schema.domain_constraints"
+>           [("constraint_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("constraint_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("constraint_name",
+>             DomainType "information_schema.sql_identifier"),
+>            ("domain_catalog", DomainType "information_schema.sql_identifier"),
+>            ("domain_schema", DomainType "information_schema.sql_identifier"),
+>            ("domain_name", DomainType "information_schema.sql_identifier"),
+>            ("is_deferrable", DomainType "information_schema.character_data"),
+>            ("initially_deferred",
+>             DomainType "information_schema.character_data")],
+>         CatCreateView "information_schema.domain_udt_usage"
+>           [("udt_catalog", DomainType "information_schema.sql_identifier"),
+>            ("udt_schema", DomainType "information_schema.sql_identifier"),
+>            ("udt_name", DomainType "information_schema.sql_identifier"),
+>            ("domain_catalog", DomainType "information_schema.sql_identifier"),
+>            ("domain_schema", DomainType "information_schema.sql_identifier"),
+>            ("domain_name", DomainType "information_schema.sql_identifier")],
+>         CatCreateView "information_schema.domains"
+>           [("domain_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("domain_schema", DomainType "information_schema.sql_identifier"),
+>            ("domain_name", DomainType "information_schema.sql_identifier"),
+>            ("data_type", DomainType "information_schema.character_data"),
+>            ("character_maximum_length",
+>             DomainType "information_schema.cardinal_number"),
+>            ("character_octet_length",
+>             DomainType "information_schema.cardinal_number"),
+>            ("character_set_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("character_set_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("character_set_name",
+>             DomainType "information_schema.sql_identifier"),
+>            ("collation_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("collation_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("collation_name", DomainType "information_schema.sql_identifier"),
+>            ("numeric_precision",
+>             DomainType "information_schema.cardinal_number"),
+>            ("numeric_precision_radix",
+>             DomainType "information_schema.cardinal_number"),
+>            ("numeric_scale", DomainType "information_schema.cardinal_number"),
+>            ("datetime_precision",
+>             DomainType "information_schema.cardinal_number"),
+>            ("interval_type", DomainType "information_schema.character_data"),
+>            ("interval_precision",
+>             DomainType "information_schema.character_data"),
+>            ("domain_default", DomainType "information_schema.character_data"),
+>            ("udt_catalog", DomainType "information_schema.sql_identifier"),
+>            ("udt_schema", DomainType "information_schema.sql_identifier"),
+>            ("udt_name", DomainType "information_schema.sql_identifier"),
+>            ("scope_catalog", DomainType "information_schema.sql_identifier"),
+>            ("scope_schema", DomainType "information_schema.sql_identifier"),
+>            ("scope_name", DomainType "information_schema.sql_identifier"),
+>            ("maximum_cardinality",
+>             DomainType "information_schema.cardinal_number"),
+>            ("dtd_identifier",
+>             DomainType "information_schema.sql_identifier")],
+>         CatCreateView "information_schema.element_types"
+>           [("object_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("object_schema", DomainType "information_schema.sql_identifier"),
+>            ("object_name", DomainType "information_schema.sql_identifier"),
+>            ("object_type", DomainType "information_schema.character_data"),
+>            ("collection_type_identifier",
+>             DomainType "information_schema.sql_identifier"),
+>            ("data_type", DomainType "information_schema.character_data"),
+>            ("character_maximum_length",
+>             DomainType "information_schema.cardinal_number"),
+>            ("character_octet_length",
+>             DomainType "information_schema.cardinal_number"),
+>            ("character_set_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("character_set_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("character_set_name",
+>             DomainType "information_schema.sql_identifier"),
+>            ("collation_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("collation_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("collation_name", DomainType "information_schema.sql_identifier"),
+>            ("numeric_precision",
+>             DomainType "information_schema.cardinal_number"),
+>            ("numeric_precision_radix",
+>             DomainType "information_schema.cardinal_number"),
+>            ("numeric_scale", DomainType "information_schema.cardinal_number"),
+>            ("datetime_precision",
+>             DomainType "information_schema.cardinal_number"),
+>            ("interval_type", DomainType "information_schema.character_data"),
+>            ("interval_precision",
+>             DomainType "information_schema.character_data"),
+>            ("domain_default", DomainType "information_schema.character_data"),
+>            ("udt_catalog", DomainType "information_schema.sql_identifier"),
+>            ("udt_schema", DomainType "information_schema.sql_identifier"),
+>            ("udt_name", DomainType "information_schema.sql_identifier"),
+>            ("scope_catalog", DomainType "information_schema.sql_identifier"),
+>            ("scope_schema", DomainType "information_schema.sql_identifier"),
+>            ("scope_name", DomainType "information_schema.sql_identifier"),
+>            ("maximum_cardinality",
+>             DomainType "information_schema.cardinal_number"),
+>            ("dtd_identifier",
+>             DomainType "information_schema.sql_identifier")],
+>         CatCreateView "information_schema.enabled_roles"
+>           [("role_name", DomainType "information_schema.sql_identifier")],
+>         CatCreateView "information_schema.foreign_data_wrapper_options"
+>           [("foreign_data_wrapper_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("foreign_data_wrapper_name",
+>             DomainType "information_schema.sql_identifier"),
+>            ("option_name", DomainType "information_schema.sql_identifier"),
+>            ("option_value", DomainType "information_schema.character_data")],
+>         CatCreateView "information_schema.foreign_data_wrappers"
+>           [("foreign_data_wrapper_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("foreign_data_wrapper_name",
+>             DomainType "information_schema.sql_identifier"),
+>            ("authorization_identifier",
+>             DomainType "information_schema.sql_identifier"),
+>            ("library_name", DomainType "information_schema.character_data"),
+>            ("foreign_data_wrapper_language",
+>             DomainType "information_schema.character_data")],
+>         CatCreateView "information_schema.foreign_server_options"
+>           [("foreign_server_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("foreign_server_name",
+>             DomainType "information_schema.sql_identifier"),
+>            ("option_name", DomainType "information_schema.sql_identifier"),
+>            ("option_value", DomainType "information_schema.character_data")],
+>         CatCreateView "information_schema.foreign_servers"
+>           [("foreign_server_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("foreign_server_name",
+>             DomainType "information_schema.sql_identifier"),
+>            ("foreign_data_wrapper_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("foreign_data_wrapper_name",
+>             DomainType "information_schema.sql_identifier"),
+>            ("foreign_server_type",
+>             DomainType "information_schema.character_data"),
+>            ("foreign_server_version",
+>             DomainType "information_schema.character_data"),
+>            ("authorization_identifier",
+>             DomainType "information_schema.sql_identifier")],
+>         CatCreateView "information_schema.information_schema_catalog_name"
+>           [("catalog_name", DomainType "information_schema.sql_identifier")],
+>         CatCreateView "information_schema.key_column_usage"
+>           [("constraint_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("constraint_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("constraint_name",
+>             DomainType "information_schema.sql_identifier"),
+>            ("table_catalog", DomainType "information_schema.sql_identifier"),
+>            ("table_schema", DomainType "information_schema.sql_identifier"),
+>            ("table_name", DomainType "information_schema.sql_identifier"),
+>            ("column_name", DomainType "information_schema.sql_identifier"),
+>            ("ordinal_position",
+>             DomainType "information_schema.cardinal_number"),
+>            ("position_in_unique_constraint",
+>             DomainType "information_schema.cardinal_number")],
+>         CatCreateView "information_schema.parameters"
+>           [("specific_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("specific_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("specific_name", DomainType "information_schema.sql_identifier"),
+>            ("ordinal_position",
+>             DomainType "information_schema.cardinal_number"),
+>            ("parameter_mode", DomainType "information_schema.character_data"),
+>            ("is_result", DomainType "information_schema.character_data"),
+>            ("as_locator", DomainType "information_schema.character_data"),
+>            ("parameter_name", DomainType "information_schema.sql_identifier"),
+>            ("data_type", DomainType "information_schema.character_data"),
+>            ("character_maximum_length",
+>             DomainType "information_schema.cardinal_number"),
+>            ("character_octet_length",
+>             DomainType "information_schema.cardinal_number"),
+>            ("character_set_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("character_set_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("character_set_name",
+>             DomainType "information_schema.sql_identifier"),
+>            ("collation_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("collation_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("collation_name", DomainType "information_schema.sql_identifier"),
+>            ("numeric_precision",
+>             DomainType "information_schema.cardinal_number"),
+>            ("numeric_precision_radix",
+>             DomainType "information_schema.cardinal_number"),
+>            ("numeric_scale", DomainType "information_schema.cardinal_number"),
+>            ("datetime_precision",
+>             DomainType "information_schema.cardinal_number"),
+>            ("interval_type", DomainType "information_schema.character_data"),
+>            ("interval_precision",
+>             DomainType "information_schema.character_data"),
+>            ("udt_catalog", DomainType "information_schema.sql_identifier"),
+>            ("udt_schema", DomainType "information_schema.sql_identifier"),
+>            ("udt_name", DomainType "information_schema.sql_identifier"),
+>            ("scope_catalog", DomainType "information_schema.sql_identifier"),
+>            ("scope_schema", DomainType "information_schema.sql_identifier"),
+>            ("scope_name", DomainType "information_schema.sql_identifier"),
+>            ("maximum_cardinality",
+>             DomainType "information_schema.cardinal_number"),
+>            ("dtd_identifier",
+>             DomainType "information_schema.sql_identifier")],
+>         CatCreateView "pg_cursors"
+>           [("name", ScalarType "text"), ("statement", ScalarType "text"),
+>            ("is_holdable", ScalarType "bool"),
+>            ("is_binary", ScalarType "bool"),
+>            ("is_scrollable", ScalarType "bool"),
+>            ("creation_time", ScalarType "timestamptz")],
+>         CatCreateView "pg_group"
+>           [("groname", ScalarType "name"), ("grosysid", ScalarType "oid"),
+>            ("grolist", ArrayType (ScalarType "oid"))],
+>         CatCreateView "pg_indexes"
+>           [("schemaname", ScalarType "name"),
+>            ("tablename", ScalarType "name"), ("indexname", ScalarType "name"),
+>            ("tablespace", ScalarType "name"),
+>            ("indexdef", ScalarType "text")],
+>         CatCreateView "pg_locks"
+>           [("locktype", ScalarType "text"), ("database", ScalarType "oid"),
+>            ("relation", ScalarType "oid"), ("page", ScalarType "int4"),
+>            ("tuple", ScalarType "int2"), ("virtualxid", ScalarType "text"),
+>            ("transactionid", ScalarType "xid"), ("classid", ScalarType "oid"),
+>            ("objid", ScalarType "oid"), ("objsubid", ScalarType "int2"),
+>            ("virtualtransaction", ScalarType "text"),
+>            ("pid", ScalarType "int4"), ("mode", ScalarType "text"),
+>            ("granted", ScalarType "bool")],
+>         CatCreateView "pg_prepared_statements"
+>           [("name", ScalarType "text"), ("statement", ScalarType "text"),
+>            ("prepare_time", ScalarType "timestamptz"),
+>            ("parameter_types", ArrayType (ScalarType "regtype")),
+>            ("from_sql", ScalarType "bool")],
+>         CatCreateView "pg_prepared_xacts"
+>           [("transaction", ScalarType "xid"), ("gid", ScalarType "text"),
+>            ("prepared", ScalarType "timestamptz"),
+>            ("owner", ScalarType "name"), ("database", ScalarType "name")],
+>         CatCreateView "pg_roles"
+>           [("rolname", ScalarType "name"), ("rolsuper", ScalarType "bool"),
+>            ("rolinherit", ScalarType "bool"),
+>            ("rolcreaterole", ScalarType "bool"),
+>            ("rolcreatedb", ScalarType "bool"),
+>            ("rolcatupdate", ScalarType "bool"),
+>            ("rolcanlogin", ScalarType "bool"),
+>            ("rolconnlimit", ScalarType "int4"),
+>            ("rolpassword", ScalarType "text"),
+>            ("rolvaliduntil", ScalarType "timestamptz"),
+>            ("rolconfig", ArrayType (ScalarType "text")),
+>            ("oid", ScalarType "oid")],
+>         CatCreateView "pg_rules"
+>           [("schemaname", ScalarType "name"),
+>            ("tablename", ScalarType "name"), ("rulename", ScalarType "name"),
+>            ("definition", ScalarType "text")],
+>         CatCreateView "pg_settings"
+>           [("name", ScalarType "text"), ("setting", ScalarType "text"),
+>            ("unit", ScalarType "text"), ("category", ScalarType "text"),
+>            ("short_desc", ScalarType "text"),
+>            ("extra_desc", ScalarType "text"), ("context", ScalarType "text"),
+>            ("vartype", ScalarType "text"), ("source", ScalarType "text"),
+>            ("min_val", ScalarType "text"), ("max_val", ScalarType "text"),
+>            ("enumvals", ArrayType (ScalarType "text")),
+>            ("boot_val", ScalarType "text"), ("reset_val", ScalarType "text"),
+>            ("sourcefile", ScalarType "text"),
+>            ("sourceline", ScalarType "int4")],
+>         CatCreateView "pg_shadow"
+>           [("usename", ScalarType "name"), ("usesysid", ScalarType "oid"),
+>            ("usecreatedb", ScalarType "bool"),
+>            ("usesuper", ScalarType "bool"), ("usecatupd", ScalarType "bool"),
+>            ("passwd", ScalarType "text"), ("valuntil", ScalarType "abstime"),
+>            ("useconfig", ArrayType (ScalarType "text"))],
+>         CatCreateView "pg_stat_activity"
+>           [("datid", ScalarType "oid"), ("datname", ScalarType "name"),
+>            ("procpid", ScalarType "int4"), ("usesysid", ScalarType "oid"),
+>            ("usename", ScalarType "name"),
+>            ("current_query", ScalarType "text"),
+>            ("waiting", ScalarType "bool"),
+>            ("xact_start", ScalarType "timestamptz"),
+>            ("query_start", ScalarType "timestamptz"),
+>            ("backend_start", ScalarType "timestamptz"),
+>            ("client_addr", ScalarType "inet"),
+>            ("client_port", ScalarType "int4")],
+>         CatCreateView "pg_stat_all_indexes"
+>           [("relid", ScalarType "oid"), ("indexrelid", ScalarType "oid"),
+>            ("schemaname", ScalarType "name"), ("relname", ScalarType "name"),
+>            ("indexrelname", ScalarType "name"),
+>            ("idx_scan", ScalarType "int8"),
+>            ("idx_tup_read", ScalarType "int8"),
+>            ("idx_tup_fetch", ScalarType "int8")],
+>         CatCreateView "pg_stat_all_tables"
+>           [("relid", ScalarType "oid"), ("schemaname", ScalarType "name"),
+>            ("relname", ScalarType "name"), ("seq_scan", ScalarType "int8"),
+>            ("seq_tup_read", ScalarType "int8"),
+>            ("idx_scan", ScalarType "int8"),
+>            ("idx_tup_fetch", ScalarType "int8"),
+>            ("n_tup_ins", ScalarType "int8"), ("n_tup_upd", ScalarType "int8"),
+>            ("n_tup_del", ScalarType "int8"),
+>            ("n_tup_hot_upd", ScalarType "int8"),
+>            ("n_live_tup", ScalarType "int8"),
+>            ("n_dead_tup", ScalarType "int8"),
+>            ("last_vacuum", ScalarType "timestamptz"),
+>            ("last_autovacuum", ScalarType "timestamptz"),
+>            ("last_analyze", ScalarType "timestamptz"),
+>            ("last_autoanalyze", ScalarType "timestamptz")],
+>         CatCreateView "pg_stat_bgwriter"
+>           [("checkpoints_timed", ScalarType "int8"),
+>            ("checkpoints_req", ScalarType "int8"),
+>            ("buffers_checkpoint", ScalarType "int8"),
+>            ("buffers_clean", ScalarType "int8"),
+>            ("maxwritten_clean", ScalarType "int8"),
+>            ("buffers_backend", ScalarType "int8"),
+>            ("buffers_alloc", ScalarType "int8")],
+>         CatCreateView "pg_stat_database"
+>           [("datid", ScalarType "oid"), ("datname", ScalarType "name"),
+>            ("numbackends", ScalarType "int4"),
+>            ("xact_commit", ScalarType "int8"),
+>            ("xact_rollback", ScalarType "int8"),
+>            ("blks_read", ScalarType "int8"), ("blks_hit", ScalarType "int8"),
+>            ("tup_returned", ScalarType "int8"),
+>            ("tup_fetched", ScalarType "int8"),
+>            ("tup_inserted", ScalarType "int8"),
+>            ("tup_updated", ScalarType "int8"),
+>            ("tup_deleted", ScalarType "int8")],
+>         CatCreateView "pg_stat_sys_indexes"
+>           [("relid", ScalarType "oid"), ("indexrelid", ScalarType "oid"),
+>            ("schemaname", ScalarType "name"), ("relname", ScalarType "name"),
+>            ("indexrelname", ScalarType "name"),
+>            ("idx_scan", ScalarType "int8"),
+>            ("idx_tup_read", ScalarType "int8"),
+>            ("idx_tup_fetch", ScalarType "int8")],
+>         CatCreateView "pg_stat_sys_tables"
+>           [("relid", ScalarType "oid"), ("schemaname", ScalarType "name"),
+>            ("relname", ScalarType "name"), ("seq_scan", ScalarType "int8"),
+>            ("seq_tup_read", ScalarType "int8"),
+>            ("idx_scan", ScalarType "int8"),
+>            ("idx_tup_fetch", ScalarType "int8"),
+>            ("n_tup_ins", ScalarType "int8"), ("n_tup_upd", ScalarType "int8"),
+>            ("n_tup_del", ScalarType "int8"),
+>            ("n_tup_hot_upd", ScalarType "int8"),
+>            ("n_live_tup", ScalarType "int8"),
+>            ("n_dead_tup", ScalarType "int8"),
+>            ("last_vacuum", ScalarType "timestamptz"),
+>            ("last_autovacuum", ScalarType "timestamptz"),
+>            ("last_analyze", ScalarType "timestamptz"),
+>            ("last_autoanalyze", ScalarType "timestamptz")],
+>         CatCreateView "pg_stat_user_functions"
+>           [("funcid", ScalarType "oid"), ("schemaname", ScalarType "name"),
+>            ("funcname", ScalarType "name"), ("calls", ScalarType "int8"),
+>            ("total_time", ScalarType "int8"),
+>            ("self_time", ScalarType "int8")],
+>         CatCreateView "pg_stat_user_indexes"
+>           [("relid", ScalarType "oid"), ("indexrelid", ScalarType "oid"),
+>            ("schemaname", ScalarType "name"), ("relname", ScalarType "name"),
+>            ("indexrelname", ScalarType "name"),
+>            ("idx_scan", ScalarType "int8"),
+>            ("idx_tup_read", ScalarType "int8"),
+>            ("idx_tup_fetch", ScalarType "int8")],
+>         CatCreateView "pg_stat_user_tables"
+>           [("relid", ScalarType "oid"), ("schemaname", ScalarType "name"),
+>            ("relname", ScalarType "name"), ("seq_scan", ScalarType "int8"),
+>            ("seq_tup_read", ScalarType "int8"),
+>            ("idx_scan", ScalarType "int8"),
+>            ("idx_tup_fetch", ScalarType "int8"),
+>            ("n_tup_ins", ScalarType "int8"), ("n_tup_upd", ScalarType "int8"),
+>            ("n_tup_del", ScalarType "int8"),
+>            ("n_tup_hot_upd", ScalarType "int8"),
+>            ("n_live_tup", ScalarType "int8"),
+>            ("n_dead_tup", ScalarType "int8"),
+>            ("last_vacuum", ScalarType "timestamptz"),
+>            ("last_autovacuum", ScalarType "timestamptz"),
+>            ("last_analyze", ScalarType "timestamptz"),
+>            ("last_autoanalyze", ScalarType "timestamptz")],
+>         CatCreateView "pg_statio_all_indexes"
+>           [("relid", ScalarType "oid"), ("indexrelid", ScalarType "oid"),
+>            ("schemaname", ScalarType "name"), ("relname", ScalarType "name"),
+>            ("indexrelname", ScalarType "name"),
+>            ("idx_blks_read", ScalarType "int8"),
+>            ("idx_blks_hit", ScalarType "int8")],
+>         CatCreateView "pg_statio_all_sequences"
+>           [("relid", ScalarType "oid"), ("schemaname", ScalarType "name"),
+>            ("relname", ScalarType "name"), ("blks_read", ScalarType "int8"),
+>            ("blks_hit", ScalarType "int8")],
+>         CatCreateView "pg_statio_all_tables"
+>           [("relid", ScalarType "oid"), ("schemaname", ScalarType "name"),
+>            ("relname", ScalarType "name"),
+>            ("heap_blks_read", ScalarType "int8"),
+>            ("heap_blks_hit", ScalarType "int8"),
+>            ("idx_blks_read", ScalarType "int8"),
+>            ("idx_blks_hit", ScalarType "int8"),
+>            ("toast_blks_read", ScalarType "int8"),
+>            ("toast_blks_hit", ScalarType "int8"),
+>            ("tidx_blks_read", ScalarType "int8"),
+>            ("tidx_blks_hit", ScalarType "int8")],
+>         CatCreateView "pg_statio_sys_indexes"
+>           [("relid", ScalarType "oid"), ("indexrelid", ScalarType "oid"),
+>            ("schemaname", ScalarType "name"), ("relname", ScalarType "name"),
+>            ("indexrelname", ScalarType "name"),
+>            ("idx_blks_read", ScalarType "int8"),
+>            ("idx_blks_hit", ScalarType "int8")],
+>         CatCreateView "pg_statio_sys_sequences"
+>           [("relid", ScalarType "oid"), ("schemaname", ScalarType "name"),
+>            ("relname", ScalarType "name"), ("blks_read", ScalarType "int8"),
+>            ("blks_hit", ScalarType "int8")],
+>         CatCreateView "pg_statio_sys_tables"
+>           [("relid", ScalarType "oid"), ("schemaname", ScalarType "name"),
+>            ("relname", ScalarType "name"),
+>            ("heap_blks_read", ScalarType "int8"),
+>            ("heap_blks_hit", ScalarType "int8"),
+>            ("idx_blks_read", ScalarType "int8"),
+>            ("idx_blks_hit", ScalarType "int8"),
+>            ("toast_blks_read", ScalarType "int8"),
+>            ("toast_blks_hit", ScalarType "int8"),
+>            ("tidx_blks_read", ScalarType "int8"),
+>            ("tidx_blks_hit", ScalarType "int8")],
+>         CatCreateView "pg_statio_user_indexes"
+>           [("relid", ScalarType "oid"), ("indexrelid", ScalarType "oid"),
+>            ("schemaname", ScalarType "name"), ("relname", ScalarType "name"),
+>            ("indexrelname", ScalarType "name"),
+>            ("idx_blks_read", ScalarType "int8"),
+>            ("idx_blks_hit", ScalarType "int8")],
+>         CatCreateView "pg_statio_user_sequences"
+>           [("relid", ScalarType "oid"), ("schemaname", ScalarType "name"),
+>            ("relname", ScalarType "name"), ("blks_read", ScalarType "int8"),
+>            ("blks_hit", ScalarType "int8")],
+>         CatCreateView "pg_statio_user_tables"
+>           [("relid", ScalarType "oid"), ("schemaname", ScalarType "name"),
+>            ("relname", ScalarType "name"),
+>            ("heap_blks_read", ScalarType "int8"),
+>            ("heap_blks_hit", ScalarType "int8"),
+>            ("idx_blks_read", ScalarType "int8"),
+>            ("idx_blks_hit", ScalarType "int8"),
+>            ("toast_blks_read", ScalarType "int8"),
+>            ("toast_blks_hit", ScalarType "int8"),
+>            ("tidx_blks_read", ScalarType "int8"),
+>            ("tidx_blks_hit", ScalarType "int8")],
+>         CatCreateView "pg_stats"
+>           [("schemaname", ScalarType "name"),
+>            ("tablename", ScalarType "name"), ("attname", ScalarType "name"),
+>            ("null_frac", ScalarType "float4"),
+>            ("avg_width", ScalarType "int4"),
+>            ("n_distinct", ScalarType "float4"),
+>            ("most_common_vals", Pseudo AnyArray),
+>            ("most_common_freqs", ArrayType (ScalarType "float4")),
+>            ("histogram_bounds", Pseudo AnyArray),
+>            ("correlation", ScalarType "float4")],
+>         CatCreateView "pg_tables"
+>           [("schemaname", ScalarType "name"),
+>            ("tablename", ScalarType "name"),
+>            ("tableowner", ScalarType "name"),
+>            ("tablespace", ScalarType "name"),
+>            ("hasindexes", ScalarType "bool"), ("hasrules", ScalarType "bool"),
+>            ("hastriggers", ScalarType "bool")],
+>         CatCreateView "pg_timezone_abbrevs"
+>           [("abbrev", ScalarType "text"),
+>            ("utc_offset", ScalarType "interval"),
+>            ("is_dst", ScalarType "bool")],
+>         CatCreateView "pg_timezone_names"
+>           [("name", ScalarType "text"), ("abbrev", ScalarType "text"),
+>            ("utc_offset", ScalarType "interval"),
+>            ("is_dst", ScalarType "bool")],
+>         CatCreateView "pg_user"
+>           [("usename", ScalarType "name"), ("usesysid", ScalarType "oid"),
+>            ("usecreatedb", ScalarType "bool"),
+>            ("usesuper", ScalarType "bool"), ("usecatupd", ScalarType "bool"),
+>            ("passwd", ScalarType "text"), ("valuntil", ScalarType "abstime"),
+>            ("useconfig", ArrayType (ScalarType "text"))],
+>         CatCreateView "pg_user_mappings"
+>           [("umid", ScalarType "oid"), ("srvid", ScalarType "oid"),
+>            ("srvname", ScalarType "name"), ("umuser", ScalarType "oid"),
+>            ("usename", ScalarType "name"),
+>            ("umoptions", ArrayType (ScalarType "text"))],
+>         CatCreateView "pg_views"
+>           [("schemaname", ScalarType "name"),
+>            ("viewname", ScalarType "name"), ("viewowner", ScalarType "name"),
+>            ("definition", ScalarType "text")],
+>         CatCreateView "information_schema.referential_constraints"
+>           [("constraint_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("constraint_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("constraint_name",
+>             DomainType "information_schema.sql_identifier"),
+>            ("unique_constraint_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("unique_constraint_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("unique_constraint_name",
+>             DomainType "information_schema.sql_identifier"),
+>            ("match_option", DomainType "information_schema.character_data"),
+>            ("update_rule", DomainType "information_schema.character_data"),
+>            ("delete_rule", DomainType "information_schema.character_data")],
+>         CatCreateView "information_schema.role_column_grants"
+>           [("grantor", DomainType "information_schema.sql_identifier"),
+>            ("grantee", DomainType "information_schema.sql_identifier"),
+>            ("table_catalog", DomainType "information_schema.sql_identifier"),
+>            ("table_schema", DomainType "information_schema.sql_identifier"),
+>            ("table_name", DomainType "information_schema.sql_identifier"),
+>            ("column_name", DomainType "information_schema.sql_identifier"),
+>            ("privilege_type", DomainType "information_schema.character_data"),
+>            ("is_grantable", DomainType "information_schema.character_data")],
+>         CatCreateView "information_schema.role_routine_grants"
+>           [("grantor", DomainType "information_schema.sql_identifier"),
+>            ("grantee", DomainType "information_schema.sql_identifier"),
+>            ("specific_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("specific_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("specific_name", DomainType "information_schema.sql_identifier"),
+>            ("routine_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("routine_schema", DomainType "information_schema.sql_identifier"),
+>            ("routine_name", DomainType "information_schema.sql_identifier"),
+>            ("privilege_type", DomainType "information_schema.character_data"),
+>            ("is_grantable", DomainType "information_schema.character_data")],
+>         CatCreateView "information_schema.role_table_grants"
+>           [("grantor", DomainType "information_schema.sql_identifier"),
+>            ("grantee", DomainType "information_schema.sql_identifier"),
+>            ("table_catalog", DomainType "information_schema.sql_identifier"),
+>            ("table_schema", DomainType "information_schema.sql_identifier"),
+>            ("table_name", DomainType "information_schema.sql_identifier"),
+>            ("privilege_type", DomainType "information_schema.character_data"),
+>            ("is_grantable", DomainType "information_schema.character_data"),
+>            ("with_hierarchy",
+>             DomainType "information_schema.character_data")],
+>         CatCreateView "information_schema.role_usage_grants"
+>           [("grantor", DomainType "information_schema.sql_identifier"),
+>            ("grantee", DomainType "information_schema.sql_identifier"),
+>            ("object_catalog", DomainType "information_schema.sql_identifier"),
+>            ("object_schema", DomainType "information_schema.sql_identifier"),
+>            ("object_name", DomainType "information_schema.sql_identifier"),
+>            ("object_type", DomainType "information_schema.character_data"),
+>            ("privilege_type", DomainType "information_schema.character_data"),
+>            ("is_grantable", DomainType "information_schema.character_data")],
+>         CatCreateView "information_schema.routine_privileges"
+>           [("grantor", DomainType "information_schema.sql_identifier"),
+>            ("grantee", DomainType "information_schema.sql_identifier"),
+>            ("specific_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("specific_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("specific_name", DomainType "information_schema.sql_identifier"),
+>            ("routine_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("routine_schema", DomainType "information_schema.sql_identifier"),
+>            ("routine_name", DomainType "information_schema.sql_identifier"),
+>            ("privilege_type", DomainType "information_schema.character_data"),
+>            ("is_grantable", DomainType "information_schema.character_data")],
+>         CatCreateView "information_schema.routines"
+>           [("specific_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("specific_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("specific_name", DomainType "information_schema.sql_identifier"),
+>            ("routine_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("routine_schema", DomainType "information_schema.sql_identifier"),
+>            ("routine_name", DomainType "information_schema.sql_identifier"),
+>            ("routine_type", DomainType "information_schema.character_data"),
+>            ("module_catalog", DomainType "information_schema.sql_identifier"),
+>            ("module_schema", DomainType "information_schema.sql_identifier"),
+>            ("module_name", DomainType "information_schema.sql_identifier"),
+>            ("udt_catalog", DomainType "information_schema.sql_identifier"),
+>            ("udt_schema", DomainType "information_schema.sql_identifier"),
+>            ("udt_name", DomainType "information_schema.sql_identifier"),
+>            ("data_type", DomainType "information_schema.character_data"),
+>            ("character_maximum_length",
+>             DomainType "information_schema.cardinal_number"),
+>            ("character_octet_length",
+>             DomainType "information_schema.cardinal_number"),
+>            ("character_set_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("character_set_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("character_set_name",
+>             DomainType "information_schema.sql_identifier"),
+>            ("collation_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("collation_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("collation_name", DomainType "information_schema.sql_identifier"),
+>            ("numeric_precision",
+>             DomainType "information_schema.cardinal_number"),
+>            ("numeric_precision_radix",
+>             DomainType "information_schema.cardinal_number"),
+>            ("numeric_scale", DomainType "information_schema.cardinal_number"),
+>            ("datetime_precision",
+>             DomainType "information_schema.cardinal_number"),
+>            ("interval_type", DomainType "information_schema.character_data"),
+>            ("interval_precision",
+>             DomainType "information_schema.character_data"),
+>            ("type_udt_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("type_udt_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("type_udt_name", DomainType "information_schema.sql_identifier"),
+>            ("scope_catalog", DomainType "information_schema.sql_identifier"),
+>            ("scope_schema", DomainType "information_schema.sql_identifier"),
+>            ("scope_name", DomainType "information_schema.sql_identifier"),
+>            ("maximum_cardinality",
+>             DomainType "information_schema.cardinal_number"),
+>            ("dtd_identifier", DomainType "information_schema.sql_identifier"),
+>            ("routine_body", DomainType "information_schema.character_data"),
+>            ("routine_definition",
+>             DomainType "information_schema.character_data"),
+>            ("external_name", DomainType "information_schema.character_data"),
+>            ("external_language",
+>             DomainType "information_schema.character_data"),
+>            ("parameter_style",
+>             DomainType "information_schema.character_data"),
+>            ("is_deterministic",
+>             DomainType "information_schema.character_data"),
+>            ("sql_data_access",
+>             DomainType "information_schema.character_data"),
+>            ("is_null_call", DomainType "information_schema.character_data"),
+>            ("sql_path", DomainType "information_schema.character_data"),
+>            ("schema_level_routine",
+>             DomainType "information_schema.character_data"),
+>            ("max_dynamic_result_sets",
+>             DomainType "information_schema.cardinal_number"),
+>            ("is_user_defined_cast",
+>             DomainType "information_schema.character_data"),
+>            ("is_implicitly_invocable",
+>             DomainType "information_schema.character_data"),
+>            ("security_type", DomainType "information_schema.character_data"),
+>            ("to_sql_specific_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("to_sql_specific_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("to_sql_specific_name",
+>             DomainType "information_schema.sql_identifier"),
+>            ("as_locator", DomainType "information_schema.character_data"),
+>            ("created", DomainType "information_schema.time_stamp"),
+>            ("last_altered", DomainType "information_schema.time_stamp"),
+>            ("new_savepoint_level",
+>             DomainType "information_schema.character_data"),
+>            ("is_udt_dependent",
+>             DomainType "information_schema.character_data"),
+>            ("result_cast_from_data_type",
+>             DomainType "information_schema.character_data"),
+>            ("result_cast_as_locator",
+>             DomainType "information_schema.character_data"),
+>            ("result_cast_char_max_length",
+>             DomainType "information_schema.cardinal_number"),
+>            ("result_cast_char_octet_length",
+>             DomainType "information_schema.cardinal_number"),
+>            ("result_cast_char_set_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("result_cast_char_set_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("result_cast_character_set_name",
+>             DomainType "information_schema.sql_identifier"),
+>            ("result_cast_collation_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("result_cast_collation_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("result_cast_collation_name",
+>             DomainType "information_schema.sql_identifier"),
+>            ("result_cast_numeric_precision",
+>             DomainType "information_schema.cardinal_number"),
+>            ("result_cast_numeric_precision_radix",
+>             DomainType "information_schema.cardinal_number"),
+>            ("result_cast_numeric_scale",
+>             DomainType "information_schema.cardinal_number"),
+>            ("result_cast_datetime_precision",
+>             DomainType "information_schema.cardinal_number"),
+>            ("result_cast_interval_type",
+>             DomainType "information_schema.character_data"),
+>            ("result_cast_interval_precision",
+>             DomainType "information_schema.character_data"),
+>            ("result_cast_type_udt_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("result_cast_type_udt_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("result_cast_type_udt_name",
+>             DomainType "information_schema.sql_identifier"),
+>            ("result_cast_scope_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("result_cast_scope_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("result_cast_scope_name",
+>             DomainType "information_schema.sql_identifier"),
+>            ("result_cast_maximum_cardinality",
+>             DomainType "information_schema.cardinal_number"),
+>            ("result_cast_dtd_identifier",
+>             DomainType "information_schema.sql_identifier")],
+>         CatCreateView "information_schema.schemata"
+>           [("catalog_name", DomainType "information_schema.sql_identifier"),
+>            ("schema_name", DomainType "information_schema.sql_identifier"),
+>            ("schema_owner", DomainType "information_schema.sql_identifier"),
+>            ("default_character_set_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("default_character_set_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("default_character_set_name",
+>             DomainType "information_schema.sql_identifier"),
+>            ("sql_path", DomainType "information_schema.character_data")],
+>         CatCreateView "information_schema.sequences"
+>           [("sequence_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("sequence_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("sequence_name", DomainType "information_schema.sql_identifier"),
+>            ("data_type", DomainType "information_schema.character_data"),
+>            ("numeric_precision",
+>             DomainType "information_schema.cardinal_number"),
+>            ("numeric_precision_radix",
+>             DomainType "information_schema.cardinal_number"),
+>            ("numeric_scale", DomainType "information_schema.cardinal_number"),
+>            ("maximum_value", DomainType "information_schema.cardinal_number"),
+>            ("minimum_value", DomainType "information_schema.cardinal_number"),
+>            ("increment", DomainType "information_schema.cardinal_number"),
+>            ("cycle_option", DomainType "information_schema.character_data")],
+>         CatCreateView "information_schema.table_constraints"
+>           [("constraint_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("constraint_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("constraint_name",
+>             DomainType "information_schema.sql_identifier"),
+>            ("table_catalog", DomainType "information_schema.sql_identifier"),
+>            ("table_schema", DomainType "information_schema.sql_identifier"),
+>            ("table_name", DomainType "information_schema.sql_identifier"),
+>            ("constraint_type",
+>             DomainType "information_schema.character_data"),
+>            ("is_deferrable", DomainType "information_schema.character_data"),
+>            ("initially_deferred",
+>             DomainType "information_schema.character_data")],
+>         CatCreateView "information_schema.table_privileges"
+>           [("grantor", DomainType "information_schema.sql_identifier"),
+>            ("grantee", DomainType "information_schema.sql_identifier"),
+>            ("table_catalog", DomainType "information_schema.sql_identifier"),
+>            ("table_schema", DomainType "information_schema.sql_identifier"),
+>            ("table_name", DomainType "information_schema.sql_identifier"),
+>            ("privilege_type", DomainType "information_schema.character_data"),
+>            ("is_grantable", DomainType "information_schema.character_data"),
+>            ("with_hierarchy",
+>             DomainType "information_schema.character_data")],
+>         CatCreateView "information_schema.tables"
+>           [("table_catalog", DomainType "information_schema.sql_identifier"),
+>            ("table_schema", DomainType "information_schema.sql_identifier"),
+>            ("table_name", DomainType "information_schema.sql_identifier"),
+>            ("table_type", DomainType "information_schema.character_data"),
+>            ("self_referencing_column_name",
+>             DomainType "information_schema.sql_identifier"),
+>            ("reference_generation",
+>             DomainType "information_schema.character_data"),
+>            ("user_defined_type_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("user_defined_type_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("user_defined_type_name",
+>             DomainType "information_schema.sql_identifier"),
+>            ("is_insertable_into",
+>             DomainType "information_schema.character_data"),
+>            ("is_typed", DomainType "information_schema.character_data"),
+>            ("commit_action", DomainType "information_schema.character_data")],
+>         CatCreateView "information_schema.triggered_update_columns"
+>           [("trigger_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("trigger_schema", DomainType "information_schema.sql_identifier"),
+>            ("trigger_name", DomainType "information_schema.sql_identifier"),
+>            ("event_object_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("event_object_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("event_object_table",
+>             DomainType "information_schema.sql_identifier"),
+>            ("event_object_column",
+>             DomainType "information_schema.sql_identifier")],
+>         CatCreateView "information_schema.triggers"
+>           [("trigger_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("trigger_schema", DomainType "information_schema.sql_identifier"),
+>            ("trigger_name", DomainType "information_schema.sql_identifier"),
+>            ("event_manipulation",
+>             DomainType "information_schema.character_data"),
+>            ("event_object_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("event_object_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("event_object_table",
+>             DomainType "information_schema.sql_identifier"),
+>            ("action_order", DomainType "information_schema.cardinal_number"),
+>            ("action_condition",
+>             DomainType "information_schema.character_data"),
+>            ("action_statement",
+>             DomainType "information_schema.character_data"),
+>            ("action_orientation",
+>             DomainType "information_schema.character_data"),
+>            ("condition_timing",
+>             DomainType "information_schema.character_data"),
+>            ("condition_reference_old_table",
+>             DomainType "information_schema.sql_identifier"),
+>            ("condition_reference_new_table",
+>             DomainType "information_schema.sql_identifier"),
+>            ("condition_reference_old_row",
+>             DomainType "information_schema.sql_identifier"),
+>            ("condition_reference_new_row",
+>             DomainType "information_schema.sql_identifier"),
+>            ("created", DomainType "information_schema.time_stamp")],
+>         CatCreateView "information_schema.usage_privileges"
+>           [("grantor", DomainType "information_schema.sql_identifier"),
+>            ("grantee", DomainType "information_schema.sql_identifier"),
+>            ("object_catalog", DomainType "information_schema.sql_identifier"),
+>            ("object_schema", DomainType "information_schema.sql_identifier"),
+>            ("object_name", DomainType "information_schema.sql_identifier"),
+>            ("object_type", DomainType "information_schema.character_data"),
+>            ("privilege_type", DomainType "information_schema.character_data"),
+>            ("is_grantable", DomainType "information_schema.character_data")],
+>         CatCreateView "information_schema.user_mapping_options"
+>           [("authorization_identifier",
+>             DomainType "information_schema.sql_identifier"),
+>            ("foreign_server_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("foreign_server_name",
+>             DomainType "information_schema.sql_identifier"),
+>            ("option_name", DomainType "information_schema.sql_identifier"),
+>            ("option_value", DomainType "information_schema.character_data")],
+>         CatCreateView "information_schema.user_mappings"
+>           [("authorization_identifier",
+>             DomainType "information_schema.sql_identifier"),
+>            ("foreign_server_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("foreign_server_name",
+>             DomainType "information_schema.sql_identifier")],
+>         CatCreateView "information_schema.view_column_usage"
+>           [("view_catalog", DomainType "information_schema.sql_identifier"),
+>            ("view_schema", DomainType "information_schema.sql_identifier"),
+>            ("view_name", DomainType "information_schema.sql_identifier"),
+>            ("table_catalog", DomainType "information_schema.sql_identifier"),
+>            ("table_schema", DomainType "information_schema.sql_identifier"),
+>            ("table_name", DomainType "information_schema.sql_identifier"),
+>            ("column_name", DomainType "information_schema.sql_identifier")],
+>         CatCreateView "information_schema.view_routine_usage"
+>           [("table_catalog", DomainType "information_schema.sql_identifier"),
+>            ("table_schema", DomainType "information_schema.sql_identifier"),
+>            ("table_name", DomainType "information_schema.sql_identifier"),
+>            ("specific_catalog",
+>             DomainType "information_schema.sql_identifier"),
+>            ("specific_schema",
+>             DomainType "information_schema.sql_identifier"),
+>            ("specific_name", DomainType "information_schema.sql_identifier")],
+>         CatCreateView "information_schema.view_table_usage"
+>           [("view_catalog", DomainType "information_schema.sql_identifier"),
+>            ("view_schema", DomainType "information_schema.sql_identifier"),
+>            ("view_name", DomainType "information_schema.sql_identifier"),
+>            ("table_catalog", DomainType "information_schema.sql_identifier"),
+>            ("table_schema", DomainType "information_schema.sql_identifier"),
+>            ("table_name", DomainType "information_schema.sql_identifier")],
+>         CatCreateView "information_schema.views"
+>           [("table_catalog", DomainType "information_schema.sql_identifier"),
+>            ("table_schema", DomainType "information_schema.sql_identifier"),
+>            ("table_name", DomainType "information_schema.sql_identifier"),
+>            ("view_definition",
+>             DomainType "information_schema.character_data"),
+>            ("check_option", DomainType "information_schema.character_data"),
+>            ("is_updatable", DomainType "information_schema.character_data"),
+>            ("is_insertable_into",
+>             DomainType "information_schema.character_data")]]
+
diff --git a/src/Database/HsSqlPpp/Internals/TypeChecking/ErrorUtils.lhs b/src/Database/HsSqlPpp/Internals/TypeChecking/ErrorUtils.lhs
new file mode 100644
--- /dev/null
+++ b/src/Database/HsSqlPpp/Internals/TypeChecking/ErrorUtils.lhs
@@ -0,0 +1,30 @@
+
+This file contains a bunch of small low level utilities to help with
+type checking.
+
+> module Database.HsSqlPpp.Internals.TypeChecking.ErrorUtils
+>     where
+>
+> import Database.HsSqlPpp.Internals.TypeType
+> import Debug.Trace
+
+> type E a = Either [TypeError] a
+> type Et = E Type
+>
+> lmt :: Maybe a -> E a
+> lmt = maybe (Left []) Right
+>
+> tes :: E a -> [TypeError]
+> tes = either id (const [])
+>
+> etmt :: E a -> Maybe a
+> etmt = either (const Nothing) Just
+>
+
+> liftList :: [(a,Maybe b)] -> Maybe [(a,b)]
+> liftList is = sequence $ flip map is $ \(a,b) -> case b of
+>                                                    Just b' -> Just (a,b')
+>                                                    Nothing -> Nothing
+
+> showIt :: Show a => String -> a -> a
+> showIt m a = trace (m ++ " " ++ show a) a
diff --git a/src/Database/HsSqlPpp/Internals/TypeChecking/LocalBindings.lhs b/src/Database/HsSqlPpp/Internals/TypeChecking/LocalBindings.lhs
new file mode 100644
--- /dev/null
+++ b/src/Database/HsSqlPpp/Internals/TypeChecking/LocalBindings.lhs
@@ -0,0 +1,20 @@
+
+Forwarder for the interface to LocalBindingsInternal used by the rest
+of the system.
+
+> module Database.HsSqlPpp.Internals.TypeChecking.LocalBindings
+>     (
+>      LocalBindingsUpdate(..)
+>     ,LocalBindings
+>     ,emptyBindings
+>     ,lbUpdate
+>     ,lbLookupID
+>     ,lbLookupIDInType
+>     ,ppLocalBindings
+>     ,createLocalBindings
+>     ,getUnqualifiedBindings
+>     ,joinBindings
+>     ,lookupLocalBinding
+>     ) where
+>
+> import Database.HsSqlPpp.Internals.TypeChecking.LocalBindingsInternal
diff --git a/src/Database/HsSqlPpp/Internals/TypeChecking/LocalBindingsInternal.lhs b/src/Database/HsSqlPpp/Internals/TypeChecking/LocalBindingsInternal.lhs
new file mode 100644
--- /dev/null
+++ b/src/Database/HsSqlPpp/Internals/TypeChecking/LocalBindingsInternal.lhs
@@ -0,0 +1,740 @@
+
+This module contains the code to manage local identifier bindings
+during the type checking process. This is used for e.g. looking up the
+types of parameter and variable references in plpgsql functions, and
+for looking up the types of identifiers in select expressions.
+
+This module exposes the internals of the localbindings datatype for
+testing.
+
+The lookups to support are a single identifier, or to give a star
+expansion.
+
+
+Some notes on lookups
+all lookups are case insensitive
+start by searching the head of the lookup update list and working down
+the code here handles resolving the types of join columns when they
+are not the same, and the update routine returns error if the join columns are not compatible
+the code here handles expanding record types so that the components can be looked up
+
+The local bindings is arranged as a stack. To append to this stack,
+you use the LocalBindingsUpdate type. This is designed to be as easy as
+possible for clients to use, so as much logic as possible is pushed
+into the innards of this module, in particular most of the logic for
+working with joins is in here.
+
+The basic idea of the stack is at each level, there is a list of
+qualified and unqualified names and types, to look up individual
+ids. Some of the lookups map to ambiguous identifier errors. Also at
+each level is a list of star expansions, one for each correlation name
+in scope, and one for an unqualified star.
+
+> {-# LANGUAGE ScopedTypeVariables,TupleSections #-}
+>
+> module Database.HsSqlPpp.Internals.TypeChecking.LocalBindingsInternal
+>     (
+>      LocalBindingsUpdate(..)
+>     ,LocalBindings(..)
+>     ,Source
+>     ,FullId
+>     ,SimpleId
+>     ,IDLookup
+>     -- ,StarExpand
+>     ,LocalBindingsLookup(..)
+>     ,emptyBindings
+>     ,lbUpdate
+>     -- ,lbExpandStar
+>     ,lbLookupID
+>     ,lbLookupIDInType
+>     --,lbUpdateDot
+>     ,ppLocalBindings
+>     ,ppLbls
+>     ,createLocalBindings
+>     ,getUnqualifiedBindings
+>     ,joinBindings
+>     ,lookupLocalBinding
+>     ) where
+>
+> --import Control.Monad as M
+> --import Control.Applicative
+> --import Debug.Trace
+> --import Data.List
+> --import Data.Maybe
+> --import Data.Char
+> --import Data.Either
+> --import qualified Data.Map as M
+>
+> import Database.HsSqlPpp.Internals.TypeType
+> --import Database.HsSqlPpp.Utils.Utils
+> import Database.HsSqlPpp.Internals.Catalog.CatalogInternal
+> --import Database.HsSqlPpp.Internals.TypeChecking.TypeConversion
+> import Database.HsSqlPpp.Internals.TypeChecking.ErrorUtils
+>
+
+
+
+> data LocalBindings = LocalBindingsError
+>                    | LocalBindings [((String,String),Maybe Type)]
+
+> createLocalBindings :: Maybe [(String,[(String,Maybe Type)])] -> LocalBindings
+> createLocalBindings i =
+>   maybe LocalBindingsError mb i
+>   where
+>     mb b = LocalBindings
+>             $ flip concatMap b $ \(qn,cs) -> flip map cs $ \(c,t) -> ((qn,c), t)
+
+> getUnqualifiedBindings :: LocalBindings -> [(String,Maybe Type)]
+> getUnqualifiedBindings (LocalBindings ls) =
+>   map unwrap ls
+>   where
+>     unwrap ((_,n),t) = (n,t)
+> getUnqualifiedBindings LocalBindingsError = []
+
+> joinBindings :: LocalBindings -> LocalBindings -> LocalBindings
+> joinBindings (LocalBindings a) (LocalBindings b) = LocalBindings $ a ++ b
+> joinBindings LocalBindingsError _ = LocalBindingsError
+> joinBindings _ LocalBindingsError = LocalBindingsError
+
+> lookupLocalBinding :: LocalBindings -> String -> String -> E (Maybe Type)
+> lookupLocalBinding LocalBindingsError _ _ = Right Nothing
+> lookupLocalBinding (LocalBindings lb) q i =
+>   case lookup (q,i) lb of
+>     Just t -> Right t
+>     Nothing -> if (q == "") || any (==q) (map (fst . fst) lb)
+>                then Left [UnrecognisedIdentifier i]
+>                else Left [UnrecognisedCorrelationName q]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+---------------------------------------------
+
+
+
+The data type to represent a set of local bindings in scope. The list
+of updates used to create the local bindings is saved for debugging/
+information.
+
+> {-data LocalBindings = LocalBindings [LocalBindingsUpdate]
+>                                    [LocalBindingsLookup]
+>                      deriving Show-}
+
+Each layer of the local bindings stack is
+a map from (correlation name, id name) to source,correlation name, id
+name, type tuple, or a type error, used e.g. to represent ambigious
+ids, etc.;
+and a map from correlation name to a list of these tuples to handle
+star expansions.
+
+Missing correlation names are represented by an empty string for the
+correlation name.
+
+> type Source = String
+>
+> type FullId = (Source,[String],Type) -- source,fully qualified name components,type
+> type SimpleId = (String,Type)
+> type IDLookup = ([String], E FullId)
+> --type StarExpand = E [FullId] --the order of the [FullId] part is important
+>
+> data LocalBindingsLookup = LocalBindingsLookup [IDLookup]
+>                            deriving (Eq,Show)
+
+This is the local bindings update that users of this module use.
+
+> data LocalBindingsUpdate = LBIds {source :: Source
+>                                  ,correlationName :: Maybe String
+>                                  ,lbids :: [SimpleId]}
+>                          | LBTref {source :: Source
+>                                   ,talias :: String
+>                                   ,lbids :: [SimpleId]
+>                                   ,lbsysids :: [SimpleId]}
+>                          | LBJoinTref {source :: Source
+>                                       ,jtref1 :: LocalBindingsUpdate
+>                                       ,jtref2 :: LocalBindingsUpdate
+>                                       ,joinIds :: Either () [String] -- left () represents natural join
+>                                                            -- right [] represents no join ids
+>                                       ,jalias :: Maybe String}
+>                            deriving Show
+>
+> emptyBindings :: LocalBindings
+> emptyBindings = LocalBindings [] -- undefined --LocalBindings [] []
+
+================================================================================
+
+> ppLocalBindings :: LocalBindings -> String
+> ppLocalBindings = error "ppLocalBindings" -- (LocalBindings lbus lbls) =
+>   -- "LocalBindings\n" ++ doList show lbus ++ doList ppLbls lbls-}
+>
+> ppLbls :: LocalBindingsLookup -> String
+> ppLbls = error "ppLbls" {- (LocalBindingsLookup is) =
+>        "LocalBindingsLookup\n" ++ doList show is -}
+>
+> --doList :: (a -> String) -> [a] -> String
+> --doList m l = "[\n" ++ intercalate "\n," (map m l) ++ "\n]\n"
+
+================================================================================
+
+> lbUpdate :: Catalog -> LocalBindingsUpdate -> LocalBindings -> E LocalBindings
+> lbUpdate _ _ lb = return lb {- cat u1 (LocalBindings us s) = do
+>   ids <- updateStuff cat u1
+>   return $ LocalBindings (u1 : us) (LocalBindingsLookup ids : s)-}
+
+
+
+> --updateStuff :: Catalog -> LocalBindingsUpdate -> E [IDLookup]
+
+> --updateStuff _ _ = error "updateStuff"
+
+LBIds doesn't support any star expansion, and doesn't support
+accessing the whole set of ids as a composite via cn
+
+> {-updateStuff _ (LBIds src cn ids) =
+>     return (unQuals ++ quals)
+>     where
+>       unQuals = map (\(n,t) -> ([n], Right (src,maybe [n] (: [n]) cn, t))) ids
+>       quals = maybe [] (\cn' -> map (\(n,t) -> ([cn',n], Right (src,[cn',n], t))) ids) cn
+
+tref - used for a non join table reference, supports accessing public
+fields under the alias name as a composite, and also supports system
+id lookups. The star expansions are all the non system ids qualified and unqualified
+
+> updateStuff _ (LBTref src al ids sids) =
+>     -- comp has to come after unquals because an unqualified reference which could refer
+>     -- to a column or the composite resolves as the column
+>     return (unQuals ++ quals ++ [comp])
+>            -- ,[("",Right pids),(al,Right pids)])
+>     where
+>       allIds = ids ++ sids
+>       unQuals = map (\(n,t) -> ([n], Right (src,[al,n], t))) allIds
+>       quals = map (\(n,t) -> ([al,n], Right (src,[al,n], t))) allIds
+>       comp = ([al], Right (src, [al], CompositeType ids))
+>       pids = map (\(n,t) -> (src,[al,n],t)) ids
+
+
+LBJoinTref {source :: Source
+            ,jtref1 :: LocalBindingsUpdate
+            ,jtref2 :: LocalBindingsUpdate
+            ,joinIds :: Either () [String] -- left () represents natural join
+                  -- right [] represents no join ids
+            ,jalias :: Maybe String}
+
+> {-updateStuff cat (LBJoinTref _src u1 u2 jnames' _al) = do
+
+How to get the lbs for a join:
+
+First get the info for the two sub trefs:
+
+>   ids1 <- updateStuff cat u1
+>   ids2 <- updateStuff cat u2
+
+split these apart so we have the unqualified lookups and star expands
+separately
+
+>   let (uids1,qids1) = splitLkps ids1
+>       (uids2,qids2) = splitLkps ids2
+
+We need some information: the names and types of the join ids, and the
+names of any remaining ambiguous identifiers:
+
+>   let jnames :: [String]
+>       jnames = case jnames' of
+>                          Right ns -> ns
+>                          Left () -> intersect (map fst uids1)
+>                                               (map fst uids2)
+>   --todo: resolve these properly
+>   let jids = flip map jnames $ \i -> (i,fromJust $ lookup [i] ids1)
+
+
+First: get the names of the join ids: this is the explicit list in the
+case of a using join, or the commonly named fields in a natural
+join. We get the commonly named fields from the unqualified star
+expansions so we don't include system attributes in a natural join.
+
+Then check: make sure explicit join id list is in both trefs, and
+resolve the types of the join ids.
+
+If there is no alias:
+
+work out the lookups: the qualified lookups stay the same (doesn't
+properly deal with the same correlation names coming from 2 trefs at
+the moment).
+
+get the list of duplicate ids: uses the same code as getting the
+natural join id list, - there will be none if this is a natural
+join. Otherwise, get the list of common ids and remove any using ids
+from this list. TODO?: system attributes can't be referenced through a
+join unqualified?
+
+The unqualified lookups: start with the join ids and types, then add
+all the ids from each subtref except the ones which match the
+duplicate ids. Add these dups which now lookup to left ambiguous
+reference.
+
+work out the star expansion: the qualified star expansions stay the
+same
+
+for the unqualified star expansion: similar to lookups. Start with the
+join ids, but then add all the non join ids from each table - so we
+might have more than one column with the same name.
+
+If there is an alias:
+
+do the same as above for the unqualified ids/starexpand, add these
+again under the given alias, and don't pass through qualified lookups
+or star expands.
+
+
+>   {-let plainIds1 = pl ids1
+>       plainIds2 = pl ids2
+>   let jnames :: [String]
+>       jnames = case jids of
+>                          Right ns -> ns
+>                          Left () -> intersect (map fst plainIds1) (map fst plainIds2)
+>   -- make the lookups
+>       isJ :: IDLookup -> Bool
+>       isJ (ii,_) = case ii of
+>                        [i] | i `elem` jnames -> True
+>                        _ -> False
+>       nj :: [IDLookup] -> [IDLookup]
+>       nj = filter (not . isJ)
+>       joinLkps = filter isJ ids1
+>       nonJoinLkps1 = nj ids1
+>       nonJoinLkps2 = nj ids2-}
+>   {-let jids1 :: [(String,E FullId)]
+>       jids1 = flip map jnames $ \i -> (i,fromJust $ lookup i ids1)
+>       rj :: [(String,E FullId)] -> [(String,E FullId)]
+>       rj = filter $ \e -> fst e `notElem` jnames
+>       ids :: [(String,E FullId)]
+>       ids = jids1 ++ rj ids1 ++ rj ids2-}
+>   --make the star expansion
+>   --se1' <- se1
+>   --se2' <- se2
+>   {-let (us1',qs1) = splitSe se1'
+>       (us2',qs2) = splitSe se2'
+>   us1 <- us1'
+>   us2 <- us2'-}
+>   {-    rj1 :: [FullId] -> [FullId]
+>       rj1 = filter $ \(_,n,_t) -> last n `notElem` jnames
+>       se = map snd jids1 ++ map return (rj1 se1) ++ map return (rj1 se2)
+>   return (ids, sequence se)-}
+>   --let x = joinLkps ++ nonJoinLkps1 ++ nonJoinLkps2
+>   --trace ("join stuff: " ++ doList show x) $ return ()
+>   return (ids1 ++ ids1, se1 ++ se2) --(joinLkps ++ nonJoinLkps1 ++ nonJoinLkps2, ("", Right (us1 ++ us2)) : qs1 ++ qs2)
+>   where
+>     {-splitSe :: [(String,StarExpand)] -> (StarExpand,[(String,StarExpand)])
+>     splitSe se = (uq, nuq)
+>                  where
+>                    uq = maybe [] snd $ find isUq se
+>                    nuq = filter (not . isUq) se
+>                    isUq (Right (a,_)) = a == ""-}
+>     splitLkps :: [([String], E FullId)]
+>               -> ([(String, E FullId)],[([String], E FullId)])
+>     splitLkps = partitionEithers . (map $ \x -> case x of
+>                                                       ([n],t) -> Left (n,t)
+>                                                       z -> Right z)-} -}
+
+================================================================================
+
+> {-lbExpandStar :: LocalBindings -> String -> E [FullId]
+> lbExpandStar (LocalBindings _ (LocalBindingsLookup _ x : _)) c =
+>   maybe (case c of
+>            "" -> Left [BadStarExpand]
+>            y -> Left [UnrecognisedCorrelationName y])
+>            id $ lookup c x
+> lbExpandStar _ _ = Left [BadStarExpand]-}
+
+================================================================================
+
+> lbLookupID :: LocalBindings -> [String] -> E FullId
+> lbLookupID  = error "lbLookupID" {-(LocalBindings _ lbl) i =
+>     let ls :: [[([String],E FullId)]]
+>         ls = map getLbIdl lbl
+>     in lkp1 ls $ map mtl i
+>     where
+>       lkp1 :: [[IDLookup]] -> [String] -> E FullId
+>       lkp1 (l:ls) i1 = fromMaybe (lkp1 ls i1) (lookup i1 l)
+>       lkp1 [] _ = if corMatch
+>                   then Left [UnrecognisedIdentifier (intercalate "." i)]
+>                   else Left [UnrecognisedCorrelationName (head i)]
+>       getLbIdl (LocalBindingsLookup x ) = x
+>       corMatch = case i of
+>                    [q,_] -> q `elem` cors
+>                    _ -> True
+>       cors :: [String]
+>       cors = let ls = map getLbIdl lbl
+>              in catMaybes $ concatMap (map getQ) ls
+>       getQ :: ([String], E FullId) -> Maybe String
+>       getQ ([q,_], _) = Just q
+>       getQ _ = Nothing -}
+
+
+> lbLookupIDInType :: Catalog -> LocalBindings -> Type -> String -> E FullId
+> lbLookupIDInType = error "lbLookupIDInType" {-cat _ ty i = do
+>   t <- lmt $ getNamedCompositeTypes ty
+>   maybe (Left [UnrecognisedIdentifier i]) (fmap Right ("",[i],)) $ lookup i t
+>  where
+>    getNamedCompositeTypes :: Type -> Maybe [(String,Type)]
+>    getNamedCompositeTypes (NamedCompositeType n) =
+>         Just $ either (const []) id $ catCompositePublicAttrs cat [] n
+>    getNamedCompositeTypes (CompositeType t) = Just t
+>    getNamedCompositeTypes (PgRecord (Just t)) = getNamedCompositeTypes t
+>    getNamedCompositeTypes _ = Nothing -}
+
+================================================================================
+
+ > lbUpdateDot :: Catalog -> String -> LocalBindings -> E LocalBindings
+ > lbUpdateDot cat i lb = do
+ >     (_,_,c) <- lbLookupID lb i
+ >     f <- lmt $ expandComposite cat True c
+ >     lbUpdate cat (LBIds "dot qual" Nothing f) emptyBindings
+
+>     {-f <- lmt $ expandComposite cat True c
+>     let u1 = (LBIds "dot qual" Nothing f)
+>     (ids,_) <- updateStuff cat u1
+>     pf <- lmt $ expandComposite cat False c
+>     let se = Right $ map (\(n,t) -> ("dot qual", [i,n], t)) pf
+>     return $ LocalBindings [u1] [LocalBindingsLookup ids se]-}
+
+(Source, [String], Type)'
+           against inferred type `(String, Type)'
+
+ > expandComposite :: Catalog -> Bool -> Type -> Maybe [(String,Type)]
+ > expandComposite cat b (SetOfType t) = expandComposite cat b t
+ > expandComposite cat b (PgRecord (Just t)) = expandComposite cat b t
+ > expandComposite _ _ (CompositeType fs) = Just fs
+ > expandComposite cat b (NamedCompositeType n) = etmt $ (if b
+ >                                                        then catCompositeAttrs
+ >                                                        else catCompositePublicAttrs) cat [] n
+ > expandComposite _ _ _ = Nothing
+
+
+================================================================================
+
+> --mtl :: String -> String
+> --mtl = map toLower
+
+
+
+
+
+
+------------------------------------------------------------
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+wrapper for the proper lookupid function, this is for backwards
+compatibility with the old lookup code
+
+> {-lbLookupID :: LocalBindings
+>            -> String -- identifier name
+>            -> E Type
+> lbLookupID lb ci = let (cor,i) = splitIdentifier ci
+>                    in fmap extractType $ lbLookupID1 lb cor i
+>                    where
+>                      extractType (_,_,_,t) = t
+>                      splitIdentifier s = let (a,b) = span (/= '.') s
+>                                          in if b == ""
+>                                             then ("", a)
+>                                             else (a,tail b)
+>
+> lbLookupID1 :: LocalBindings
+>            -> String -- correlation name
+>            -> String -- identifier name
+>            -> E FullId -- type error or source, corr, type
+> lbLookupID1 (LocalBindings _ lkps) cor' i' =
+>   --trace ("lookup: " ++ showID cor' i'
+>   --       ++ "in " ++ concatMap ppLbls lkps) $
+>   -- hack for triggers
+>   case cor of
+>     "new" | isTrigRec -> Right ("", "new", i, UnknownType)
+>     "old" | isTrigRec -> Right ("", "old", i, UnknownType)
+>     _ -> lkId lkps
+>   where
+>     isTrigRec = case lbLookupID1 (LocalBindings undefined lkps) "" cor of
+>                   Right (_,_,_,Pseudo TriggerRecord) -> True
+>                   _ -> False
+>     cor = mtl cor'
+>     i = mtl i'
+>     lkId ((LocalBindingsLookup idmap _):ls) =
+>       case lookup (cor,i) idmap of
+>         Just s -> s
+>         Nothing -> if cor /= "" && any ((==cor) . fst . fst) idmap
+>                    then Left [UnrecognisedIdentifier $ showID cor i']
+>                    else lkId ls
+>     lkId [] = if cor' == "" --todo: need to throw unrecognised identifier, if the correlation name isn't "", a id isn't found, and there are other ids with that correlation name
+>               then Left [UnrecognisedIdentifier $ showID cor i']
+>               else Left [UnrecognisedCorrelationName cor']
+
+================================================================================
+
+wrapped for the proper expand star routine, for compatibility with the
+old implementation of local bindings
+
+> lbExpandStar :: LocalBindings -> String -> E [SimpleId]
+> lbExpandStar lb cor =
+>   fmap stripAll $ lbExpandStar1 lb cor
+>   where
+>     strip (_,_,n,t) = (n,t)
+>     stripAll = map strip
+>
+> lbExpandStar1 :: LocalBindings -> String -> E [FullId]
+> lbExpandStar1 (LocalBindings _ lkps) cor' =
+>   exSt lkps
+>   where
+>     cor = mtl cor'
+>     exSt ((LocalBindingsLookup _ lst):ls) =
+>         case lookup cor lst of
+>           Just s -> s
+>           Nothing -> exSt ls
+>     exSt [] = Left [UnrecognisedCorrelationName cor]
+
+================================================================================
+
+This is where constructing the local bindings lookup stacks is done
+
+> lbUpdate :: Catalog -> LocalBindingsUpdate -> LocalBindings -> E LocalBindings
+> lbUpdate cat lbu' (LocalBindings lbus lkps) = do
+>    lbl <- makeStack cat lbu
+>    lbl1 <- expandComposites cat lbl
+>    --trace ("update: " ++ ppLbls lbl1) $ return ()
+>    return $ LocalBindings (lbu':lbus) (lbl1:lkps)
+>    where
+>      lbu = lowerise lbu'
+>      -- make correlation names and id names case insensitive
+>      -- by making them all lowercase
+>      lowerise (LBIds src ids) =
+>        LBIds src (mtll ids)
+>      lowerise (LBJoinIds t1 t2 ji a) =
+>        LBJoinIds (lowerise t1) (lowerise t2) (fmap mtll1 ji) (mtl a)
+>      lowerise (LBParallel lbu1 lbu2) =
+>        LBParallel (lowerise lbu1) (lowerise lbu2)
+>      mtll = map (\(n,t) -> (mtl n, t))
+>      mtll1 = map (\l -> mtl l)
+>
+> makeStack :: Catalog -> LocalBindingsUpdate -> E LocalBindingsLookup
+> makeStack _ (LBIds src ids) =
+>   Right $ LocalBindingsLookup doIds doStar
+>   where
+>     doIds :: [((String,String)
+>               ,E FullId)]
+>     doIds = -- add unqualified if cor isn't empty string
+>             map (makeLookup "")
+>                    (case cor of
+>                             "" -> []
+>                             _ -> map addDetails ids ++ map addDetails iids)
+>             ++ map (makeLookup cor) (map addDetails ids ++ map addDetails iids)
+>             where
+>               makeLookup c1 (s,_,n,t)= ((c1,n), Right (s,cor,n,t))
+>     doStar :: [(String, E [FullId])]
+>     doStar = case cor of
+>                       "" -> []
+>                       _ -> [("",Right $ map addDetails ids)]
+>              ++ [(cor,Right $ map addDetails ids)]
+>     addDetails (n,t) = (src,cor,n,t)
+>
+> makeStack cat (LBJoinIds t1 t2 jns a) = do
+>   --first get the stacks from t1 and t2
+>   --combine the elements of these filtering out the join ids
+>   --
+>   (LocalBindingsLookup i1 s1) <- makeStack cat t1
+>   (LocalBindingsLookup i2 s2) <- makeStack cat t2
+>   -- get the names and types of the join columns
+>   let jns' = case jns of
+>              Left () -> -- natural join, so we have to work out the names
+>                         -- by looking at the common attributes
+>                         -- we do this by getting the star expansion
+>                         -- with no correlation name, and then finding
+>                         -- the ids which appear in both lists
+>                         -- (so this ignores internal ids)
+>                  let ic1 :: [FullId]
+>                      ic1 = fromRight [] $ maybe (Right []) id $ lookup "" s1
+>                      ic2 = fromRight [] $ maybe (Right []) id $ lookup "" s2
+>                      third (_,_,n,_) = n
+>                      ii1 :: [String]
+>                      ii1 = map third ic1
+>                      ii2 = map third ic2
+>                  in intersect ii1 ii2
+>              Right x -> x
+>       -- first prepare for the id lookups
+>       -- remove the join ids from the id lookups
+>       isJid ((_,n),_) = (n `elem` jns')
+>       removeJids = filter (not . isJid)
+>       i1' = removeJids i1
+>       i2' = removeJids i2
+>   jids <- M.sequence $ joinIDTypes i1 i2 jns'
+>   {-trace ("joinids: " ++ show jids
+>          ++ "\ni1 " ++ show i1
+>          ++ "\ni2 " ++ show i2
+>          ++ "\ni1' " ++ show i1'
+>          ++ "\ni2' " ++ show i2'
+>         ) $ return ()-}
+>   let jidsLk :: [IDLookup]
+>       jidsLk = if null i1 || null i2
+>                then [] --error?
+>                else let (_,Right (sc1,c1,_,_)) = head i1
+>                         (_,Right (sc2,c2,_,_)) = head i2
+>                     in flip concatMap jids $ \(n,t) -> [(("",n), Right (sc1,c1,n,t))
+>                                                        ,((c1,n), Right (sc1,c1,n,t))
+>                                                        ,((c2,n), Right (sc2,c2,n,t))
+>                                                        ]
+>       --jidsF :: [FullId]
+>       --jidsF = rights $ map snd jidsLk
+>       newIdLookups = (jidsLk ++ (combineAddAmbiguousErrors i1' i2'))
+>       -- now do the star expansions
+>       -- for each correlation name, remove any ids which match a join id
+>       -- then prepend the join ids to that list
+>       se = combineStarExpansions s1 s2 -- don't know if this is quite right
+>       removeJids1 :: StarLookup -> StarLookup
+>       removeJids1 (k,ids) = (k, fmap (filter (\(_,_,n,_) -> n `notElem` jns')) ids)
+>       prependJids :: StarLookup -> StarLookup
+>       prependJids (c, lkps) = case lkps of
+>                                 Left _ -> (c,lkps)
+>                                 Right r | null r -> (c,lkps)
+>                                 Right r -> let (s,c1,_,_) = head r
+>                                                ids = map (\(n,t) -> (s,c1,n,t)) jids
+>                                            in (c, fmap (ids++) lkps)
+>       newStarExpansion = map (prependJids . removeJids1) se
+>       -- if we have an alias then we just want unqualified ids, then
+>       -- the same ids with a t3 alias for both ids and star expansion
+>       -- with all the correlation names replaced with the alias
+>   if a == ""
+>     then return $ LocalBindingsLookup newIdLookups newStarExpansion
+>     else return $ LocalBindingsLookup (aliasIds newIdLookups) (aliasExps newStarExpansion)
+>   where
+>     aliasIds :: [IDLookup] -> [IDLookup]
+>     aliasIds lkps = let trimmed = filter (\((c,_),_) -> c == "") lkps
+>                         aliased = map (\(c,i) -> (c, fmap replaceCName i)) trimmed
+>                     in aliased ++ map (\((_,n),i) -> ((a,n),i)) aliased
+>     aliasExps :: [StarLookup] -> [StarLookup]
+>     aliasExps lkps = let is = fromMaybe (error "localbindingsinternal.makestack : fromJust") $
+>                               lookup "" lkps
+>                          aliased = fmap (map replaceCName) is
+>                      in [("",aliased), (a, aliased)]
+>     replaceCName (s,_,n,t) = (s,a,n,t)
+>     joinIDTypes :: [IDLookup] -> [IDLookup] -> [String] -> [E (String,Type)]
+>     joinIDTypes i1 i2 = map (joinIDType i1 i2)
+>     joinIDType :: [IDLookup] -> [IDLookup] -> String -> E (String,Type)
+>     joinIDType i1 i2 s = do
+>       (_,_,_,ty1) <- fromMaybe (Left [MissingJoinAttribute]) $
+>                      lookup ("",s) i1
+>       (_,_,_,ty2) <- fromMaybe (Left [MissingJoinAttribute]) $
+>                      lookup ("",s) i2
+>       ty <- resolveResultSetType cat [ty1,ty2]
+>       return (s,ty)
+>
+> makeStack cat (LBParallel u1 u2) = do
+>   -- get the two stacks,
+>   -- for any keys that appear in both respective lookups, replace with ambigious error
+>   -- and concatenate the lot
+>   (LocalBindingsLookup i1 s1) <- makeStack cat u1
+>   (LocalBindingsLookup i2 s2) <- makeStack cat u2
+>   return $ LocalBindingsLookup (combineAddAmbiguousErrors i1 i2) $ combineStarExpansions s1 s2
+>
+> combineStarExpansions :: [StarLookup] -> [StarLookup] -> [StarLookup]
+> combineStarExpansions s1 s2 =
+>   let p :: [(String, [(String, E [FullId])])]
+>       p = npartition fst (s1 ++ s2)
+>   in flip map p $ \(a,b) -> (a,concat <$> M.sequence (map snd b))
+>
+> combineAddAmbiguousErrors :: [IDLookup] -> [IDLookup] -> [IDLookup]
+> combineAddAmbiguousErrors i1 i2 =
+>   let commonIds = intersect (map fst i1) (map fst i2)
+>       removeCommonIds = filter (\a -> fst a `notElem` commonIds)
+>       fi1 = removeCommonIds i1
+>       fi2 = removeCommonIds i2
+>       errors = map (\(c,n) -> ((c,n),Left [AmbiguousIdentifier $ showID c n])) commonIds
+>   in fi1 ++ fi2 ++ errors
+
+===============================================================================
+
+> mtl :: String -> String
+> mtl = map toLower
+>
+> showID :: String -> String -> String
+> showID cor i = if cor == "" then i else cor ++ "." ++ i
+
+================================================================================
+
+expand composites
+
+slightly dodgy - run through all the unqualified ids in the idlookups, and if any
+have a composite type, add each element of that composite under the
+correlation name of the idlookup itself, and add a star expansion for
+that name also. This pretends that using a correlation name, composite
+name and id name as a three part id isn't possible
+
+> expandComposites :: Catalog -> LocalBindingsLookup -> E LocalBindingsLookup
+> expandComposites cat (LocalBindingsLookup idlkp stlkp) = do
+>   let unqids = filter (\((a,_),_) -> a == "") idlkp
+>       strip = map snd unqids
+>       getComposites = filter (\(_,_,_,t) -> isCt t) $ rights strip
+>   comps <- mapM compExp getComposites
+>   let sts = map toStarLookup comps
+>   Right (LocalBindingsLookup (idlkp ++ (concat comps)) (stlkp ++ sts))
+>   where
+>     isCt (SetOfType t) = isCompositeType t
+>     isCt t = isCompositeType t
+>     getCompFields :: Type -> E [(String,Type)]
+>     getCompFields (SetOfType t) = getCompFields t
+>     getCompFields (PgRecord Nothing) = Right []
+>     getCompFields (PgRecord (Just t)) = getCompFields t
+>     getCompFields (CompositeType f) = return f
+>     getCompFields (NamedCompositeType s) = catCompositePublicAttrs cat [] s
+>     getCompFields (AnonymousRecordType _) = Right [] -- ??
+>     getCompFields _ = Right []
+>     compExp :: FullId -> E [IDLookup]
+>     compExp (s,_,n,t) = do
+>       f <- getCompFields t
+>       return $ flip map f $ \(n1,t1) -> ((n,n1),Right (s,n,n1,t1))
+>     toStarLookup :: [IDLookup] -> StarLookup
+>     toStarLookup ids =
+>       let fids::[FullId]
+>           fids = rights $ map snd ids
+>           (_,c,_,_) = if null fids then (undefined,"ERROR",undefined,undefined) else head fids
+>       in (c,Right fids)-}
diff --git a/src/Database/HsSqlPpp/Internals/TypeChecking/TypeConversion.lhs b/src/Database/HsSqlPpp/Internals/TypeChecking/TypeConversion.lhs
new file mode 100644
--- /dev/null
+++ b/src/Database/HsSqlPpp/Internals/TypeChecking/TypeConversion.lhs
@@ -0,0 +1,668 @@
+
+
+This file contains the functions for resolving types and
+function/operator resolution. See the pg manual chapter 10:
+
+http://www.postgresql.org/docs/8.4/interactive/typeconv.html
+
+This code is really spaghettified.
+
+findCallMatch - pass in a name and a list of arguments, and it returns
+the matching function. (pg manual 10.2,10.3)
+
+resolveResultSetType - pass in a set of types, and it tries to find
+the common type they can all be cast to. (pg manual 10.5)
+
+checkAssignmentValid - pass in source type and target type, returns
+                typelist[] if ok, otherwise error, pg manual 10.4
+                Value Storage
+
+> {-# LANGUAGE PatternGuards #-}
+> module Database.HsSqlPpp.Internals.TypeChecking.TypeConversion (
+>                        findCallMatch
+>                       ,resolveResultSetType
+>                       ,checkAssignmentValid
+>                       ,checkAssignmentsValid
+>                       ) where
+>
+> import Data.Maybe
+> import Data.List
+> import Data.Either
+> --import Debug.Trace
+> import Data.Char
+>
+> import Database.HsSqlPpp.Internals.TypeType
+> import Database.HsSqlPpp.Internals.Catalog.CatalogInternal
+> import Database.HsSqlPpp.Utils.Utils
+
+ > traceIt :: Show a => String -> a -> a
+ > traceIt s t = trace (s ++ ": " ++ show t) t
+
+= findCallMatch
+
+~~~~
+
+findCallMatch - partially implements the type conversion rules for
+finding an operator or function match given a name and list of
+arguments with partial or fully specified types
+
+TODO:, qualifiers
+namespaces
+function style casts not in catalog
+variadic args
+default args
+domains -> base type
+what about aggregates and window functions?
+
+Algo:
+
+cands = all fns with matching names
+        and same number of args
+
+if exact match on types in this list, use it
+  (if binary operator being matched, and one arg is typed and one is
+  unknown, also match an operator by assuming the unknown is the same
+  as the typed arg)
+
+best match part:
+
+filter cands with args which don't exactly match input args, and input
+args cannot be converted by an implicit cast. unknowns count as
+matching anything
+if one left: use it
+
+filter for preferred types:
+
+for each cand, count each arg at each position which needs conversion,
+and the cand type is a preferred type at that position.
+if there are cands with count>0, keep only cands with the max count,
+if one return it
+if there are no cands with count>0, keep them all
+
+check unknowns:
+if any input args are unknown, and any cand accepts string at that
+position, fix that arg's category as string, otherwise if all cands
+accept same category at that position, fix that input args as that
+category.
+if we still have unknowns, then fail
+
+discard cands which don't match the new input arg/category list
+
+for each categorised input arg, if any cand accepts preferred type at
+that position, get rid of cands which don't accept preferred type at
+that position
+
+if one left: use
+else fail
+
+polymorphic matching:
+want to create a set of matches to insert into the cast pairs list
+so:
+
+find all matches on name, num args and have polymorphic parameters
+
+for each one, check the polymorphic categories - eliminate fns that
+have params in wrong category - array, non array, enum.
+work out the base types for the polymorphic args at each spot based on
+the args passed - so each arg is unchanged except arrays which have
+the array part stripped off
+
+now we have a list of types to match against the polymorphic params,
+use resolveResultSetType to see if we can produce a match, if so,
+create a new prototype which is the same as the polymorphic function
+but with this matching arg swapped in, work out the casts and add it
+into cand cast pairs, after exact match has been run.
+
+
+findCallMatch is a bit of a mess
+
+todos:
+
+rewrite this to try to make it a bit clearer
+
+find some way to draw a data flow diagram of the code easily
+
+add a logging facility so the function can explain what has happened
+at each state, so you can provide a detailed explanation e.g. if the
+code can't find an operator match to see what it has tried to match
+against.
+
+~~~~
+
+> type ProtArgCast = (FunctionPrototype, [ArgCastFlavour])
+
+>       {-
+>         between, greatest and least are treated as syntactic sugar so we
+>         delegate the function lookups to the <=/>= operators.
+>         the row comparison should be more general than this, since it supports
+>         any operator satisfying some properties
+> -}
+> findCallMatch :: Catalog -> String -> [Type] ->  Either [TypeError] FunctionPrototype
+> findCallMatch cat fnName' argsType =
+>     --trace ("typecheckfncall " ++ fnName' ++ show argsType) $
+>     --dependsOnRTpe argsType $
+>       case fnName of
+>               "count" -> -- not quite sure how this is suppose to work,
+>                          -- the counts in the pg catalog accept either
+>                          -- no args, or one arg of type any, but you can call
+>                          -- count with multiple arguments?
+>                          return ("count", argsType, typeBigInt, False)
+>               "!between" | as@[_,_,_] <- argsType -> do
+>                     -- not sure if this is correct - use the result set resolution
+>                     -- to make the argument types compatible
+>                     -- then just check there is a >=, <= returning a pair
+>                     -- of somethings which can be anded
+>                     t <- resolveResultSetType cat as
+>                     f1 <- lookupReturnType ">=" [t,t]
+>                     f2 <- lookupReturnType "<=" [t,t]
+>                     _ <- lookupFn "!and" [f1,f2]
+>                     return ("!between", [t,t,t], typeBool, False)
+>               "greatest" -> do
+>                     (_,a,t,x) <- lookupFn fnName argsType
+>                     _ <- lookupFn ">=" [t,t]
+>                     return ("greatest",a,t,x)
+>               "least" -> do
+>                     (_,a,t,x) <- lookupFn fnName argsType
+>                     _ <- lookupFn "<=" [t,t]
+>                     return ("greatest",a,t,x)
+>               "!rowctor" -> return ("!rowCtor", argsType, AnonymousRecordType argsType, False)
+>                     -- special case the row comparison ops
+>                     -- this needs to be fixed: we want to match
+>                     -- any implicit casts to functions on composite types
+>                     -- first, then we can use the anonymous record type on
+>                     -- any composite
+>               "." | [_,b] <- argsType -> Right (".", argsType, b, False)
+>               _ | fnName `elem` ["=", "<>", "<=", ">=", "<", ">"]
+>                          && length argsType == 2
+>                          && all isCompositeOrSetOfCompositeType argsType,
+>                          Just a1 <- matchCompTypes argsType ->
+>                          -- && compositesCompatible cat (head argsType) (head $ tail argsType) ->
+>                              return (fnName, a1, typeBool, False)
+>               --checked for all special cases, so run general case now
+>               s -> lookupFn s argsType
+>     where
+>       lookupReturnType :: String -> [Type] -> Either [TypeError] Type
+>       lookupReturnType s1 args = fmap (\(_,_,r,_) -> r) $ lookupFn s1 args
+>       lookupFn :: String -> [Type] -> Either [TypeError] FunctionPrototype
+>       lookupFn s1 = findCallMatch1 cat
+>                              (if s1 == "u-" then "-" else s1)
+>       fnName = map toLower fnName'
+>       -- help the type inference for rowCtors. pretty unfinished. If we compare
+>       -- two compatible row constructors, then replace any unknown types with the
+>       -- pair type
+>       matchCompTypes :: [Type] -> Maybe [Type]
+>       matchCompTypes [a@(AnonymousRecordType as),b@(AnonymousRecordType bs)] =
+>         if not (compositesCompatible cat a b)
+>         then Nothing
+>         else let (nt1,nt2) = unzip $ map (\(t,t1) -> case (t,t1) of
+>                                          (UnknownType, u) -> (u,u)
+>                                          (u, UnknownType) -> (u,u)
+>                                          _ -> (t,t1)) $ zip as bs
+>              in Just [AnonymousRecordType nt1,AnonymousRecordType nt2]
+>       matchCompTypes [a,b] =
+>         if not (compositesCompatible cat a b)
+>         then Nothing
+>         else Just [a,b]
+>       matchCompTypes _ = Nothing
+
+
+>
+> findCallMatch1 :: Catalog -> String -> [Type] ->  Either [TypeError] FunctionPrototype
+> findCallMatch1 cat f inArgs =
+>     returnIfOnne [
+>        exactMatch
+>       ,binOp1UnknownMatch
+>       ,polymorpicExactMatches
+>       ,reachable
+>       ,mostExactMatches
+>       ,filteredForPreferred
+>       ,unknownMatchesByCat]
+>       [NoMatchingOperator f inArgs]
+>     where
+>       -- basic lists which roughly mirror algo
+>       -- get the possibly matching candidates
+>       initialCandList :: [FunctionPrototype]
+>       initialCandList = filter (\(_,candArgs,_,_) ->
+>                                   length candArgs == length inArgs) $
+>                                map expandVariadic $ catLookupFns cat f
+>
+>       expandVariadic fp@(fn,a,r,v) =
+>         if v
+>           then case last a of
+>                  ArrayType t -> (fn, na,r,v)
+>                                 where na = init a ++ replicate (length inArgs - length a + 1) t
+>                  _ -> fp --should be error
+>           else fp
+>
+>       -- record what casts are needed for each candidate
+>       castPairs :: [[ArgCastFlavour]]
+>       castPairs = map (listCastPairs . getFnArgs) initialCandList
+>
+>       candCastPairs :: [ProtArgCast]
+>       candCastPairs = {-traceIt "candCastPairs" $-} zip initialCandList castPairs
+>
+>       -- see if we have an exact match
+>       exactMatch :: [ProtArgCast]
+>       exactMatch = filterCandCastPairs (all (==ExactMatch)) candCastPairs
+>
+>       -- implement the one known, one unknown resolution for binary operators
+>       binOp1UnknownMatch :: [ProtArgCast]
+>       binOp1UnknownMatch = getBinOp1UnknownMatch candCastPairs
+>
+>       --collect possible polymorphic matches
+>       polymorphicMatches :: [ProtArgCast]
+>       polymorphicMatches = filterPolymorphics candCastPairs
+>
+>       polymorpicExactMatches :: [ProtArgCast]
+>       polymorpicExactMatches = filterCandCastPairs (all (==ExactMatch)) polymorphicMatches
+>
+>       -- eliminate candidates for which the inargs cannot be casted to
+>       reachable :: [ProtArgCast]
+>       reachable = mergePolys (filterCandCastPairs (none (==CannotCast)) candCastPairs)
+>                     polymorphicMatches
+>
+>       mostExactMatches :: [ProtArgCast]
+>       mostExactMatches =
+>         let inArgsBase = map (replaceWithBase cat) inArgs
+>             exactCounts :: [Int]
+>             exactCounts =
+>               map ((length
+>                       . filter (\(a1,a2) -> a1==replaceWithBase cat a2)
+>                       . zip inArgsBase)
+>                 . (\((_,a,_,_),_) -> a)) reachable
+>             pairs = zip reachable exactCounts
+>             maxm = maximum exactCounts
+>         in case () of
+>              _ | null reachable -> []
+>                | maxm > 0 -> map fst $ filter (\(_,b) -> b == maxm) pairs
+>                | otherwise -> []
+>
+>       -- keep the cands with the most casts to preferred types
+>       preferredTypesCounts = countPreferredTypeCasts reachable
+>       keepCounts = maximum preferredTypesCounts
+>       itemCountPairs :: [(ProtArgCast,Int)]
+>       itemCountPairs = zip reachable preferredTypesCounts
+>       filteredForPreferred :: [ProtArgCast]
+>       filteredForPreferred = map fst $ filter (\(_,i) -> i == keepCounts) itemCountPairs
+>
+>       -- collect the inArg type categories to do unknown inArg resolution
+>       argCats :: [Either () String]
+>       argCats = getCastCategoriesForUnknowns filteredForPreferred
+>       unknownMatchesByCat :: [ProtArgCast]
+>       unknownMatchesByCat = getCandCatMatches filteredForPreferred argCats
+>
+>       -------------
+>
+>       listCastPairs :: [Type] -> [ArgCastFlavour]
+>       listCastPairs l = listCastPairs' inArgs l
+>                         where
+>                           listCastPairs' :: [Type] -> [Type] -> [ArgCastFlavour]
+>                           listCastPairs' (ia:ias) (ca:cas) =
+>                               (case () of
+>                                  _ | ia == ca -> ExactMatch
+>                                    | castableFromTo cat ImplicitCastContext ia ca ->
+>                                        if forceRight (catPreferredType cat ca)
+>                                          then ImplicitToPreferred
+>                                          else ImplicitToNonPreferred
+>                                    | otherwise -> CannotCast
+>                               ) : listCastPairs' ias cas
+>                           listCastPairs' [] [] = []
+>                           listCastPairs' _ _ = error "internal error: mismatched num args in implicit cast algorithm"
+>
+>
+>       getBinOp1UnknownMatch :: [ProtArgCast] -> [ProtArgCast]
+>       getBinOp1UnknownMatch cands =
+>           if not (isOperatorName f &&
+>                   length inArgs == 2 &&
+>                   count (==UnknownType) inArgs == 1)
+>             then []
+>             else let newInArgs =
+>                          replicate 2 (if head inArgs == UnknownType
+>                                         then inArgs !! 1
+>                                         else head inArgs)
+>                  in filter (\((_,a,_,_),_) -> a == newInArgs) cands
+>
+>       filterPolymorphics :: [ProtArgCast] -> [ProtArgCast]
+>       filterPolymorphics cl =
+>           let ms :: [ProtArgCast]
+>               ms = filter canMatch polys
+>               polyTypes :: [Maybe Type]
+>               polyTypes = map resolvePolyType ms
+>               polyTypePairs :: [(Maybe Type, ProtArgCast)]
+>               polyTypePairs = zip polyTypes ms
+>               keepPolyTypePairs :: [(Type, ProtArgCast)]
+>               keepPolyTypePairs =
+>                 mapMaybe (\(t,p) -> case t of
+>                                            Nothing -> Nothing
+>                                            Just t' -> Just (t',p))
+>                               polyTypePairs
+>               finalRows = map (\(t,p) -> instantiatePolyType p t)
+>                               keepPolyTypePairs
+>               --create the new cast lists
+>               cps :: [[ArgCastFlavour]]
+>               cps = map (listCastPairs . getFnArgs . fst) finalRows
+>           in zip (map fst finalRows) cps
+>           where
+>             polys :: [ProtArgCast]
+>             polys = filter (\((_,a,_,_),_) -> any (`elem`
+>                                               -- bit hacky
+>                                              [Pseudo Any
+>                                              ,Pseudo AnyArray
+>                                              ,Pseudo AnyElement
+>                                              ,Pseudo AnyEnum
+>                                              ,Pseudo AnyNonArray]) a) cl
+>             canMatch :: ProtArgCast -> Bool
+>             canMatch pac =
+>                let ((_,fnArgs,_,_),_) = pac
+>                in canMatch' inArgs fnArgs
+>                where
+>                  canMatch' [] [] = True
+>                  canMatch' (ia:ias) (pa:pas) =
+>                    case pa of
+>                      Pseudo Any -> nextMatch
+>                      Pseudo AnyArray -> isArrayType ia && nextMatch
+>                      Pseudo AnyElement -> nextMatch
+>                      Pseudo AnyEnum -> False
+>                      Pseudo AnyNonArray -> if isArrayType ia
+>                                              then False
+>                                              else nextMatch
+>                      _ -> True
+>                    where
+>                      nextMatch = canMatch' ias pas
+>                  canMatch' _ _ = error "internal error: mismatched lists in canMatch'"
+>             resolvePolyType :: ProtArgCast -> Maybe Type
+>             resolvePolyType ((_,fnArgs,_,_),_) =
+>                 {-trace ("\nresolving " ++ show fnArgs ++ " against " ++ show inArgs ++ "\n") $-}
+>                 let argPairs = zip inArgs fnArgs
+>                     typeList :: [Type]
+>                     typeList = catMaybes $ flip map argPairs
+>                                  $ \(ia,fa) -> case fa of
+>                                                   Pseudo Any -> if isArrayType ia
+>                                                                 then eitherToMaybe $ unwrapArray ia
+>                                                                 else Just ia
+>                                                   Pseudo AnyArray -> eitherToMaybe $ unwrapArray ia
+>                                                   Pseudo AnyElement -> if isArrayType ia
+>                                                                        then eitherToMaybe $ unwrapArray ia
+>                                                                        else Just ia
+>                                                   Pseudo AnyEnum -> Nothing
+>                                                   Pseudo AnyNonArray -> Just ia
+>                                                   _ -> Nothing
+>                 in {-trace ("\nresolve types: " ++ show typeList ++ "\n") $-}
+>                    case resolveResultSetType cat typeList of
+>                      Left _ -> Nothing
+>                      Right t -> Just t
+>             instantiatePolyType :: ProtArgCast -> Type -> ProtArgCast
+>             instantiatePolyType pac t =
+>               let ((fn,a,r,v),_) = pac
+>                   instArgs = swapPolys t a
+>                   p1 = (fn, instArgs, swapPoly t r,v)
+>               in let x = (p1,listCastPairs instArgs)
+>                  in {-trace ("\nfixed:" ++ show x ++ "\n")-} x
+>               where
+>                 swapPolys :: Type -> [Type] -> [Type]
+>                 swapPolys = map . swapPoly
+>                 swapPoly :: Type -> Type -> Type
+>                 swapPoly pit at =
+>                   case at of
+>                     Pseudo Any -> if isArrayType at
+>                                     then ArrayType pit
+>                                     else pit
+>                     Pseudo AnyArray -> ArrayType pit
+>                     Pseudo AnyElement -> if isArrayType at
+>                                            then ArrayType pit
+>                                            else pit
+>                     Pseudo AnyEnum -> pit
+>                     Pseudo AnyNonArray -> pit
+>                     SetOfType (Pseudo AnyElement) -> if isArrayType at
+>                                                      then SetOfType (ArrayType pit)
+>                                                      else SetOfType pit
+>                     _ -> at
+>       --merge in the instantiated poly functions, with a twist:
+>       -- if we already have the exact same set of args in the non poly list
+>       -- as a poly, then don't include that poly
+>       mergePolys :: [ProtArgCast] -> [ProtArgCast] -> [ProtArgCast]
+>       mergePolys orig polys =
+>           let origArgs = map (\((_,a,_,_),_) -> a) orig
+>               filteredPolys = filter (\((_,a,_,_),_) -> a `notElem` origArgs) polys
+>           in orig ++ filteredPolys
+>
+>       countPreferredTypeCasts :: [ProtArgCast] -> [Int]
+>       countPreferredTypeCasts =
+>           map (\(_,cp) -> count (==ImplicitToPreferred) cp)
+>
+>       -- Left () is used for inArgs which aren't unknown,
+>       --                      and for unknowns which we don't have a
+>       --                      unique category
+>       -- Right s -> s is the single letter category at
+>       --                           that position
+>       getCastCategoriesForUnknowns :: [ProtArgCast] -> [Either () String]
+>       getCastCategoriesForUnknowns cands =
+>           filterArgN 0
+>           where
+>             candArgLists :: [[Type]]
+>             candArgLists = map (\((_,a,_,_), _) -> a) cands
+>             filterArgN :: Int -> [Either () String]
+>             filterArgN n =
+>                 if n == length inArgs
+>                   then []
+>                   else let targType = inArgs !! n
+>                        in ((if targType /= UnknownType
+>                               then Left ()
+>                               else getCandsCatAt n) : filterArgN (n+1))
+>                 where
+>                   getCandsCatAt :: Int -> Either () String
+>                   getCandsCatAt n' =
+>                       let typesAtN = map (!!n') candArgLists
+>                           catsAtN = map (forceRight . catTypeCategory cat) typesAtN
+>                       in case () of
+>                            --if any are string choose string
+>                            _ | any (== "S") catsAtN -> Right "S"
+>                              -- if all are same cat choose that
+>                              | all (== head catsAtN) catsAtN -> Right $ head catsAtN
+>                              -- otherwise no match, this will be
+>                              -- picked up as complete failure to match
+>                              -- later on
+>                              | otherwise -> Left ()
+>
+>       getCandCatMatches :: [ProtArgCast] -> [Either () String] -> [ProtArgCast]
+>       getCandCatMatches candsA cats = getMatches candsA 0
+>          where
+>            getMatches :: [ProtArgCast] -> Int -> [ProtArgCast]
+>            getMatches cands n =
+>                case () of
+>                  _ | n == length inArgs -> cands
+>                    | (inArgs !! n) /= UnknownType -> getMatches cands (n + 1)
+>                    | otherwise ->
+>                        let catMatches :: [ProtArgCast]
+>                            catMatches = filter (\c -> Right (getCatForArgN n c) ==
+>                                                      (cats !! n)) cands
+>                            prefMatches :: [ProtArgCast]
+>                            prefMatches = filter (forceRight . catPreferredType cat .
+>                                                    getTypeForArgN n) catMatches
+>                            keepMatches :: [ProtArgCast]
+>                            keepMatches = if length prefMatches > 0
+>                                            then prefMatches
+>                                            else catMatches
+>                        in getMatches keepMatches (n + 1)
+>            getTypeForArgN :: Int -> ProtArgCast -> Type
+>            getTypeForArgN n ((_,a,_,_),_) = a !! n
+>            getCatForArgN :: Int -> ProtArgCast -> String
+>            getCatForArgN n = forceRight . catTypeCategory cat . getTypeForArgN n
+>
+>       -- utils
+>       -- filter a candidate/cast flavours pair by a predicate on each
+>       -- individual cast flavour
+>       filterCandCastPairs :: ([ArgCastFlavour] -> Bool)
+>                           -> [ProtArgCast]
+>                           -> [ProtArgCast]
+>       filterCandCastPairs predi = filter (\(_,cp) -> predi cp)
+>
+>       getFnArgs :: FunctionPrototype -> [Type]
+>       getFnArgs (_,a,_,_) = a
+>       returnIfOnne [] e = Left e
+>       returnIfOnne (l:ls) e = if length l == 1
+>                               then Right $ getHeadFn l
+>                               else returnIfOnne ls e
+>
+>       getHeadFn :: [ProtArgCast] -> FunctionPrototype
+>       getHeadFn l =  let ((hdFn, _):_) = l
+>                      in hdFn
+>       none p = not . any p
+>       count p = length . filter p
+>
+> data ArgCastFlavour = ExactMatch
+>                     | CannotCast
+>                     | ImplicitToPreferred
+>                     | ImplicitToNonPreferred
+>                       deriving (Eq,Show)
+>
+
+~~~~
+resolveResultSetType -
+partially implement the typing of results sets where the types aren't
+all the same and not unknown
+used in union,except,intersect columns, case, array ctor, values, greatest and least
+
+algo:
+if all inputs are same and not unknown -> that type
+replace domains with base types
+if all inputs are unknown then text
+if the non unknown types aren't all in same category then fail
+choose first input type that is a preferred type if there is one
+choose last non unknown type that has implicit casts from all preceding inputs
+check all can convert to selected type else fail
+
+code is not as much of a mess as findCallMatch
+~~~~
+
+> resolveResultSetType :: Catalog -> [Type] -> Either [TypeError] Type
+> resolveResultSetType cat inArgs = do
+>   errorWhen (null inArgs) [TypelessEmptyArray]
+>   returnWhen allSameType (head inArgs) $ do
+>   returnWhen allSameBaseType (head inArgsBase) $ do
+>   --returnWhen allUnknown (UnknownType) $ do
+>   errorWhen (not allSameCat) [IncompatibleTypeSet inArgs]
+>   returnWhen (isJust targetType &&
+>               allConvertibleToFrom (fromMaybe (error "TypeConversion.resolveresultsettype 1: fromJust") targetType) inArgs)
+>               (fromMaybe (error "TypeConversion.resolveresultsettype 2: fromJust") targetType) $ do
+>   Left [IncompatibleTypeSet inArgs]
+>   where
+>      allSameType = all (== head inArgs) inArgs -- &&
+>                      --head inArgs /= UnknownType
+>      allSameBaseType = all (== head inArgsBase) inArgsBase &&
+>                      head inArgsBase /= UnknownType
+>      inArgsBase = map (replaceWithBase cat) inArgs
+>      --allUnknown = all (==UnknownType) inArgsBase
+>      allSameCat = let firstCat = catTypeCategory cat (head knownTypes)
+>                   in all (\t -> catTypeCategory cat t == firstCat)
+>                          knownTypes
+>      targetType = case catMaybes [firstPreferred, lastAllConvertibleTo] of
+>                     [] -> Nothing
+>                     (x:_) -> Just x
+>      firstPreferred = find (forceRight . catPreferredType cat) knownTypes
+>      lastAllConvertibleTo = firstAllConvertibleTo (reverse knownTypes)
+>      firstAllConvertibleTo (x:xs) = if allConvertibleToFrom x xs
+>                                       then Just x
+>                                       else firstAllConvertibleTo xs
+>      firstAllConvertibleTo [] = Nothing
+>      knownTypes = filter (/=UnknownType) inArgsBase
+>      allConvertibleToFrom = all . flip (castableFromTo cat ImplicitCastContext)
+
+todo:
+cast empty array, where else can an empty array work?
+
+================================================================================
+
+= checkAssignmentValue
+
+> checkAssignmentValid :: Catalog -> Type -> Type -> Either [TypeError] ()
+> checkAssignmentValid cat from to =
+>     if castableFromTo cat AssignmentCastContext from to
+>     then Right ()
+>     else Left [IncompatibleTypes to from]
+>
+> compositesCompatible :: Catalog -> Type -> Type -> Bool
+> compositesCompatible cat =
+>     castableFromTo cat ImplicitCastContext
+
+> checkAssignmentsValid :: Catalog -> [Type] -> [Type] -> Either [TypeError] ()
+> checkAssignmentsValid cat from to = do
+>     -- special case for assigning to composite
+>     let f = case to of
+>                    [t] | isCompositeType t -> [AnonymousRecordType from]
+>                    _ -> from
+>     errorWhen (length f /= length to)
+>               [WrongNumberOfColumns]
+>     let ls = concat $ lefts $ zipWith (checkAssignmentValid cat) f to
+>     errorWhen (not (null ls)) ls
+
+
+================================================================================
+
+= castable function
+
+wrapper around the catalog to add a bunch of extra valid casts
+
+> castableFromTo :: Catalog -> CastContext -> Type -> Type -> Bool
+> castableFromTo cat cc from to =
+>   --trace ("check cast " ++ show from ++ "->" ++ show to) $
+>   -- put this here to avoid having to write it everywhere else
+>   from == to
+>   -- unknown can be implicitly cast to anything (is this completely true?)
+>   || from == UnknownType
+>   --hack?
+>   || to == UnknownType
+>   -- check base types of domains
+>   || ((isDomainType from || isDomainType to)
+>       && castableFromTo cat cc (replaceWithBase cat from)
+>                                (replaceWithBase cat to))
+>   -- check the casts listed in the catalog
+>   || forceRight (catCast cat cc from to)
+>   -- implicitcast => assignment cast
+>   || (cc == AssignmentCastContext
+>       && forceRight (catCast cat ImplicitCastContext from to))
+>   -- can assign composite to record
+>   || (cc == AssignmentCastContext
+>       && isCompOrSetoOfComp from
+>       && case to of
+>            PgRecord _ -> True
+>            _ -> False)
+>   -- check unboxing: wrapped single attribute
+>   || recurseTransFrom (unboxedSingleType from)
+>   || recurseTransTo (unboxedSingleType to)
+>   -- check unboxing: wrapped composite
+>   || recurseTransFrom (unboxedSetOfType from)
+>   || recurseTransTo (unboxedSetOfType to)
+>   -- check composites compatible by comparing attribute types
+>   || case (getCompositeTypes from
+>           ,getCompositeTypes to) of
+>        -- zip almost does the right thing here, needs a bit of tweaking
+>        (Just ft, Just tt) | length ft == length tt -> all (uncurry $ castableFromTo cat cc) $ zip ft tt
+>        _ -> False
+>   where
+>
+>     getCompositeTypes (NamedCompositeType n) =
+>         Just $ map snd $ fromRight [] $ catCompositePublicAttrs cat [] n
+>     getCompositeTypes (CompositeType t) = Just $ map snd t
+>     getCompositeTypes (AnonymousRecordType t) = Just t
+>     getCompositeTypes (PgRecord Nothing) = Nothing
+>     getCompositeTypes (PgRecord (Just t)) = getCompositeTypes t
+>     getCompositeTypes _ = Nothing
+>
+>     isCompOrSetoOfComp (SetOfType c) = isCompositeType c
+>     isCompOrSetoOfComp c = isCompositeType c
+>
+>     unboxedSingleType (SetOfType (CompositeType [(_,t)])) = Just t
+>     unboxedSingleType (PgRecord (Just t)) = unboxedSingleType t
+>     unboxedSingleType _ = Nothing
+>
+>     unboxedSetOfType (SetOfType a) = Just a
+>     unboxedSetOfType (PgRecord (Just t)) = unboxedSetOfType t
+>     unboxedSetOfType _ = Nothing
+>
+>     recurseTransFrom = maybe False (flip (castableFromTo cat cc) to)
+>     recurseTransTo = maybe False (castableFromTo cat cc from)
+>
+> replaceWithBase :: Catalog -> Type -> Type
+> replaceWithBase cat t@(DomainType _) = forceRight $ catDomainBaseType cat t
+> replaceWithBase _ t = t
diff --git a/src/Database/HsSqlPpp/Internals/TypeChecking/Utils.lhs b/src/Database/HsSqlPpp/Internals/TypeChecking/Utils.lhs
new file mode 100644
--- /dev/null
+++ b/src/Database/HsSqlPpp/Internals/TypeChecking/Utils.lhs
@@ -0,0 +1,127 @@
+
+For extra utility functions to help with asts
+
+> module Database.HsSqlPpp.Internals.TypeChecking.Utils
+>     (addExplicitCasts
+>     ,canonicalizeTypeNames) where
+
+> import Data.Data
+> import Database.HsSqlPpp.Internals.AstInternal
+> import Data.Generics.Uniplate.Data
+> import Database.HsSqlPpp.Internals.AstAnnotation
+> import Database.HsSqlPpp.Internals.TypeType
+> import Control.Monad
+
+
+
+> -- | Run through a typechecked tree and add in explicit casts where
+> -- implicit casts are used to typecheck. Does function and operator
+> -- calls, case result expressions, and string, integer and float
+> -- literals at the moment, todo: union, array, greatest, least
+> addExplicitCasts :: Data a => a -> a
+> addExplicitCasts =
+>   refix . tr . canonicalizeTypeNames
+>   where
+>     tr = transformBi $ \x -> case x of
+>            FunCall a f as | Just p <- getProtoATys a
+>                           , Just ats <- getTys as
+>                           , p /= ats
+>              -> FunCall a f $ zipWith3 addCastIfNeeded p ats as
+>            Case a cs els | (Just f) <- doCase a cs els -> f
+>            CaseSimple a v cs els | (Just f) <- doCaseSimple a v cs els -> f
+>            i@(NumberLit a _) | Just t <- infType a -> castToT t i
+>            i@(StringLit a _) | Just t <- infType a -> castToT t i
+>            x1 -> x1
+>     -- need to put the type annotation in the created cast to allow
+>     -- adding explicit casts to continue up the tree
+>     castToT t e = Cast ea {atype = Just t,infType = Just t} e $ typeName 1 t
+>     getProtoATys :: Annotation -> Maybe [Type]
+>     getProtoATys a = let p = fnProt a
+>                      in flip fmap p $ \(_,t,_,_) -> t
+>     getTys :: [ScalarExpr] -> Maybe [Type]
+>     getTys = mapM $ atype . getAnnotation
+>     addCastIfNeeded :: Type -> Type -> ScalarExpr -> ScalarExpr
+>     addCastIfNeeded nt ot e =
+>       if ot == nt
+>       then e
+>       else Cast ea e $ typeName 2 nt
+>     -- not sure how to avoid inserting a cast for a literal which is
+>     -- already being cast when using transformBi, so run through and
+>     -- remove the suplerfluous casts in a second sweep
+>     -- spot them when there is a cast of a cast of a literal
+>     -- and the type of the inner cast is the same as the type of the literal
+>     -- not sure if this pass can cause other problems
+>     refix = transformBi $ \x -> case x of
+>               Cast ca (Cast _ l t) t1 | isLiteral l
+>                                       , Just lt <- infType $ getAnnotation l
+>                                       , t == typeName 3 lt
+>                 -> Cast ca l t1
+>               x1 -> x1
+>     isLiteral (NumberLit _ _) = True
+>     isLiteral (StringLit _ _) = True
+>     isLiteral _ = False
+
+
+> typeName :: Int -> Type -> TypeName
+> typeName _ (ScalarType t) = SimpleTypeName ea t
+> typeName i e = error $ "don't know how to convert " ++ show e ++ " to typename " ++ show i
+
+> ea :: Annotation
+> ea = emptyAnnotation
+
+> doCase :: Annotation -> [([ScalarExpr],ScalarExpr)] -> Maybe ScalarExpr -> Maybe ScalarExpr
+> doCase a whths els = do
+>   (whths',els') <- doCaseStuff a whths els
+>   return $ Case a whths' els'
+
+> doCaseSimple :: Annotation -> ScalarExpr -> [([ScalarExpr],ScalarExpr)] -> Maybe ScalarExpr -> Maybe ScalarExpr
+> doCaseSimple a v whths els = do
+>   (whths',els') <- doCaseStuff a whths els
+>   return $ CaseSimple a v whths' els'
+
+> doCaseStuff :: Annotation -> [([ScalarExpr],ScalarExpr)] -> Maybe ScalarExpr -> Maybe ([([ScalarExpr],ScalarExpr)],Maybe ScalarExpr)
+> doCaseStuff a whths els = do
+>   --trace (show $ atype a) $ return ()
+>   expectedType <- atype a
+>   --trace (show $ map (atype . getAnnotation . snd) whths) $ return ()
+>   thenTypes <- mapM (atype . getAnnotation . snd) whths
+>   --trace (show els) $ return ()
+>   thenAndElseTypes <- case els of
+>                         Nothing -> return thenTypes
+>                         Just els' -> fmap (:thenTypes) $ atype $ getAnnotation els'
+>   --trace ("checking cast: " ++ show expectedType ++ " " ++ show thenAndElseTypes)
+>   when (all (==expectedType) thenAndElseTypes) Nothing
+>   return (map (fixWhTh expectedType) whths
+>          ,castElse expectedType)
+>   where
+>     castElse et = case els of
+>                     Nothing -> Nothing
+>                     Just els' | Just t' <- atype $ getAnnotation els
+>                               , t' /= et
+>                       -> Just (Cast ea els' $ typeName 4 et)
+>                               | otherwise -> els
+>     fixWhTh :: Type -> ([ScalarExpr],ScalarExpr) -> ([ScalarExpr],ScalarExpr)
+>     fixWhTh et (whs,th) | Just t' <- atype $ getAnnotation th
+>                         , t' /= et = (whs, Cast ea th $ typeName 5 et)
+>                         | otherwise = (whs,th)
+
+> -- bit crap, this function is called canonicalizeTypeNames
+> -- and it uses a function called canonicalizeTypeName
+
+> -- | Convert all the typenames in the ast to canonical form
+> -- e.g. int -> int4
+> canonicalizeTypeNames :: Data a => a -> a
+> canonicalizeTypeNames = fixTypes . fixTypeNames
+>   where
+>     fixTypes =
+>       transformBi $ \x -> case x of
+>         ScalarType t -> ScalarType $ ct t
+>         x1 -> x1
+>     fixTypeNames =
+>       transformBi $ \x -> case x of
+>         SimpleTypeName a t -> SimpleTypeName a $ ct t
+>         PrecTypeName a t i -> PrecTypeName a (ct t) i
+>         Prec2TypeName a t i0 i1 -> Prec2TypeName a (ct t) i0 i1
+>         x1 -> x1
+>     ct = canonicalizeTypeName
+
diff --git a/src/Database/HsSqlPpp/Internals/TypeType.lhs b/src/Database/HsSqlPpp/Internals/TypeType.lhs
new file mode 100644
--- /dev/null
+++ b/src/Database/HsSqlPpp/Internals/TypeType.lhs
@@ -0,0 +1,421 @@
+
+This file contains the data type Type. It is kept separate so we can
+compile the types and function information from the database
+separately to AstInternal.ag.
+
+Types overview:
+
+Regular types: scalarType, arrayType, composite type, domaintype
+we can use these anywhere.
+
+~~~~
+semi first class types: row, unknownstringlit (called unknown in pg) -
+these can be used in some places, but not others, in particular an
+expression can have this type or select can have a row with these
+type, but a view can't have a column with this type (so a select can
+be valid on it's own but not as a view. Not sure if Row types can be
+variables, unknownstringlit definitely can't. (Update, seems a view
+can have a column with type unknown.)
+
+pseudo types - mirror pg pseudo types
+Internal, LanguageHandler, Opaque probably won't ever be properly supported
+Not sure exactly what Any is, can't use it in functions like the other any types?
+ - update: seems that Any is like AnyElement, but multiple Anys don't
+   have to have the same type.
+AnyElement, AnyArray, AnyEnum, AnyNonArray - used to implement polymorphic functions,
+  can only be used in these functions as params, return type (and local vars?).
+Cstring - treated as variant of text?
+record -dynamically typed, depends where it is used, i think is used
+for type inference in function return types (so you don't have to
+write the correct type, the compiler fills it in), and as a dynamically
+typed variable in functions, where it can take any composite typed
+value.
+void is used for functions which return nothing
+trigger is a tag to say a function is used in triggers, used as a
+return type only
+typecheckfailed is used to represent the type of anything which the code
+is currently unable to type check, this usage should disappear at some
+point, and then it will only represent code which doesn't type check
+because of a mistake.
+
+The Type type identifies the type of a node, but doesn't necessarily
+describe the type.
+
+Typing relational valued expressions:
+use SetOfType combined with composite type for now, see if it works
+out. If not, will have to add another type.
+~~~~
+
+> {-# LANGUAGE FlexibleInstances,DeriveDataTypeable #-}
+>
+> module Database.HsSqlPpp.Internals.TypeType where
+>
+> import Control.Monad.Trans.Error
+> --import Control.Monad.Error
+>
+> import Data.Data
+> import Data.Generics.Uniplate.Data
+> import Data.Char
+
+> data Type = ScalarType String
+>           | ArrayType Type
+>           | SetOfType Type
+>             --three variations, choose better name for rowctor
+>             --refer to composite type in catalog
+>           | NamedCompositeType String
+>             --refer to composite type either in catalog or one generated on fly
+>           | CompositeType [(String,Type)]
+>             --refer to anonymous composite type: the fields have no names
+>             --these three types are equality and assign compatible if the fields
+>             --are ignoring the names, so the fields have to be in the same order.
+>           | AnonymousRecordType [Type] -- was rowctor
+>           | PgRecord (Maybe Type) -- can only hold namedcomposite, composite or anonymousrecord
+>           | DomainType String
+>           | EnumType String
+>           | Pseudo PseudoType
+>           | UnknownType -- represents a string literal
+>                              -- token whose type isn't yet
+>                              -- determined
+>             deriving (Eq,Show,Ord,Typeable,Data)
+>
+> data PseudoType = Any
+>                 | AnyArray
+>                 | AnyElement
+>                 | AnyEnum
+>                 | AnyNonArray
+>                 | Cstring
+>                 | Record
+>                 | TriggerRecord
+>                 | Trigger
+>                 | Void
+>                 | Internal
+>                 | LanguageHandler
+>                 | Opaque
+>                   deriving (Eq,Show,Ord,Typeable,Data)
+
+this list will need reviewing, probably refactor to a completely
+different set of infos, also will want to add more information to
+these, and to provide a way of converting into a user friendly
+string. It is intended for this code to produce highly useful errors
+later on down the line.
+
+>                    -- mostly expected,got
+> data TypeError = WrongTypes Type [Type]
+>                | UnknownTypeError Type
+>                | UnknownTypeName String
+>                | NoMatchingOperator String [Type]
+>                | TypelessEmptyArray
+>                | IncompatibleTypeSet [Type]
+>                | IncompatibleTypes Type Type
+>                | ValuesListsMustBeSameLength
+>                | NoRowsGivenForValues
+>                | UnrecognisedIdentifier String
+>                | UnrecognisedRelation String
+>                | UnrecognisedCorrelationName String
+>                | BadStarExpand
+>                | AmbiguousIdentifier String
+>                | ContextError String
+>                | MissingJoinAttribute
+>                | ExpressionMustBeBool
+>                | WrongNumberOfColumns
+>                | ExpectedDomainType Type
+>                | DomainDefNotFound Type
+>                | BadCatalogUpdate String
+>                | TypeAlreadyExists Type
+>                | AnyAllError String
+>                | InternalError String
+>                | FromToTypesNotSame Type Type
+>                | WrongNumberOfAliasCols Int Int
+>                 --shoved in to humour the Either Monad
+>                | MiscError String
+>                  deriving (Eq,Show,Ord,Typeable,Data)
+>
+
+ > instance Error ([TypeError]) where
+ >   noMsg = [MiscError "Unknown error"]
+ >   strMsg str = [MiscError str]
+
+> instance ErrorList TypeError where
+>    listMsg s = [MiscError s]
+
+
+=== canonical type name support
+
+Introduce some aliases to protect client code if/when the ast
+canonical names are changed:
+
+> typeSmallInt,typeBigInt,typeInt,typeNumeric,typeFloat4,
+>   typeFloat8,typeVarChar,typeChar,typeBool,typeDate,
+>   typeInterval :: Type
+> typeSmallInt = ScalarType "int2"
+> typeBigInt = ScalarType "int8"
+> typeInt = ScalarType "int4"
+> typeNumeric = ScalarType "numeric"
+> typeFloat4 = ScalarType "float4"
+> typeFloat8 = ScalarType "float8"
+> typeVarChar = ScalarType "varchar"
+> typeChar = ScalarType "char"
+> typeBool = ScalarType "bool"
+> typeDate = ScalarType "date"
+> typeInterval = ScalarType "interval"
+
+this converts the name of a type to its canonical name:
+try to follow the names that pg uses in a dump
+this converts the name of a type to its canonical name:
+try to follow the names that pg uses in a dump
+
+> canonicalizeTypeName :: String -> String
+> canonicalizeTypeName s' =
+>   case () of
+>                   _ | s `elem` smallIntNames -> "int2"
+>                     | s `elem` intNames -> "int4"
+>                     | s `elem` bigIntNames -> "int8"
+>                     | s `elem` numericNames -> "numeric"
+>                     | s `elem` float4Names -> "float4"
+>                     | s `elem` float8Names -> "float8"
+>                     | s `elem` varcharNames -> "varchar"
+>                     | s `elem` charNames -> "char"
+>                     | s `elem` boolNames -> "bool"
+>                     | otherwise -> s
+>   where
+>       smallIntNames = ["int2", "smallint"]
+>       intNames = ["int4", "integer", "int", "serial"]
+>       bigIntNames = ["int8", "bigint"]
+>       numericNames = ["numeric", "decimal"]
+>       float4Names = ["real", "float4"]
+>       float8Names = ["double precision", "float"]
+>       varcharNames = ["character varying", "varchar"]
+>       charNames = ["character", "char"]
+>       boolNames = ["boolean", "bool"]
+>       s = map toLower s'
+>
+> canonicalizeTypes :: Data a => a -> a
+> canonicalizeTypes =
+>   transformBi $ \x ->
+>       case x of
+>         ScalarType s -> ScalarType $ canonicalizeTypeName s
+>         x1 -> x1
+
+random notes on pg types:
+
+~~~~
+
+== domains:
+the point of domains is you can't put constraints on types, but you
+can wrap a type up in a domain and put a constraint on it there.
+
+== literals/selectors
+
+source strings are parsed as unknown type: they can be implicitly cast
+to almost any type in the right context.
+
+rows ctors can also be implicitly cast to any composite type matching
+the elements (now sure how exactly are they matched? - number of
+elements, type compatibility of elements, just by context?).
+
+string literals are not checked for valid syntax currently, but this
+will probably change so we can type check string literals statically.
+Postgres defers all checking to runtime, because it has to cope with
+custom data types. This code will allow adding a grammar checker for
+each type so you can optionally check the string lits statically.
+
+== notes on type checking types
+
+=== basic type checking
+Currently can lookup type names against a default template1 list of
+types, or against the current list in a database (which is read before
+processing and sql code).
+
+todo: collect type names from current source file to check against
+A lot of the infrastructure to do this is already in place. We also
+need to do this for all other definitions, etc.
+
+=== Type aliases
+
+Some types in postgresql have multiple names. I think this is
+hardcoded in the pg parser.
+
+For the canonical name in this code, we use the name given in the
+postgresql pg_type catalog relvar.
+
+TODO: Change the ast canonical names: where there is a choice, prefer
+the sql standard name, where there are multiple sql standard names,
+choose the most concise or common one, so the ast will use different
+canonical names to postgresql.
+
+planned ast canonical names:
+numbers:
+int2, int4/integer, int8 -> smallint, int, bigint
+numeric, decimal -> numeric
+float(1) to float(24), real -> float(24)
+float, float(25) to float(53), double precision -> float
+serial, serial4 -> int
+bigserial, serial8 -> bigint
+character varying(n), varchar(n)-> varchar(n)
+character(n), char(n) -> char(n)
+
+TODO:
+
+what about PrecTypeName? - need to fix the ast and parser (found out
+these are called type modifiers in pg)
+
+also, what can setof be applied to - don't know if it can apply to an
+array or setof type
+
+array types have to match an exact array type in the catalog, so we
+can't create an arbitrary array of any type. Not sure if this is
+handled quite correctly in this code.
+
+~~~~
+
+--------------------------------------------------------------------------------
+
+utilities for working with Types
+
+These may indicate that the haskell type system isn't being used very well.
+
+> isArrayType :: Type -> Bool
+> isArrayType (ArrayType _) = True
+> isArrayType _ = False
+>
+> isDomainType :: Type -> Bool
+> isDomainType (DomainType _) = True
+> isDomainType _ = False
+>
+> isCompositeType :: Type -> Bool
+> isCompositeType (CompositeType _) = True
+> isCompositeType (NamedCompositeType _) = True
+> isCompositeType (AnonymousRecordType _) = True
+> isCompositeType (PgRecord _) = True
+> isCompositeType _ = False
+>
+> isCompositeOrSetOfCompositeType :: Type -> Bool
+> isCompositeOrSetOfCompositeType (SetOfType a) = isCompositeType a
+> isCompositeOrSetOfCompositeType a = isCompositeType a
+>
+> unwrapArray :: Type -> Either [TypeError] Type
+> unwrapArray (ArrayType t) = Right t
+> unwrapArray x = Left [InternalError $ "can't get types from non array " ++ show x]
+>
+> unwrapSetOfWhenComposite :: Type -> Either [TypeError] Type
+> unwrapSetOfWhenComposite (SetOfType a@(CompositeType _)) = Right a
+> unwrapSetOfWhenComposite x = Left [InternalError $ "tried to unwrapSetOfWhenComposite on " ++ show x]
+>
+> unwrapSetOfComposite :: Type -> Either [TypeError]  [(String,Type)]
+> unwrapSetOfComposite (SetOfType (CompositeType a)) = Right a
+> unwrapSetOfComposite x = Left [InternalError $ "tried to unwrapSetOfComposite on " ++ show x]
+>
+> unwrapSetOf :: Type -> Either [TypeError] Type
+> unwrapSetOf (SetOfType a) = Right a
+> unwrapSetOf x = Left [InternalError $ "tried to unwrapSetOf on " ++ show x]
+>
+> unwrapComposite :: Type -> Either [TypeError] [(String,Type)]
+> unwrapComposite (CompositeType a) = Right a
+> unwrapComposite x = Left [InternalError $ "cannot unwrapComposite on " ++ show x]
+>
+> consComposite :: (String,Type) -> Type -> Either [TypeError] Type
+> consComposite l (CompositeType a) = Right $ CompositeType (l:a)
+> consComposite a b = Left [InternalError $ "called consComposite on " ++ show (a,b)]
+>
+> unwrapRowCtor :: Type -> Either [TypeError] [Type]
+> unwrapRowCtor (AnonymousRecordType a) = Right a
+> unwrapRowCtor x = Left [InternalError $ "cannot unwrapRowCtor on " ++ show x]
+
+--------------------------------------------------------------------------------
+
+~~~~
+new plan for types:
+
+The type annotations attached to nodes will be either typecheckfailed 'type'
+this will allow chaining type check failed more robustly. Type errors don't change.
+
+the sql type type will be changed so we can track the different
+contexts where different sql types can be used, split to use different
+sets of types so we can use the haskell type system to enforce these
+contexts.
+
+rename type to sqltype, too confusing otherwise
+new set of sqltypes: (these aren't in one haskell type anymore)
+scalar type - corresponds to sqltypes in pg which aren't one of the
+  other types (no easy way to define this)
+array type
+setof type : can be applied to scalar, domain, ... but not all types
+composite types are changed:
+namedcomposite string
+composite [(string,type)] -> what types can appear in the attribute list?
+anonymousrecord [type] -> what types can appear here? -> this
+represents a row expression type, which can be returned in select
+expressions (but not as a column in a view), and is used in other places
+domaintype : what types are allowable as the base type?
+pseudo types: these are used for arguments and return values for function prototypes only
+any*, record - just means pg infers the return type which will be a composite type (namedcomposite, composite or anonymousrecord), trigger: just a tag, void: just a tag, any*: polymorphic functions, ignore cstring, internal, language handler and opaque.
+issue: a variable declaration can be a polymorphic type in a polymorphic function, but we can't use the other pseudo types so need to split these
+a variable declared as type record IS NOT the same thing as the pseudo record type, I've finally worked out.
+so our plpgsqlrecordtype is plpgsqlrecordtype (Nothing|one of the three composite types)
+
+typechecking polymorphic functions: will have to relax the type
+checking to some degree. want to check against each usage of the
+polymorphic function in the source, so substitute in the actual types
+and check the function.
+
+contexts:
+function prototypes: args and return type
+function calls: args and return
+variable declaration in plpgsql
+attribute in a select expression
+attribute in a view (less permissive than a select expression), also create table as?
+attribute in a table, type (is this the same list as for composite and anonymous records? - can nest anonymous records)
+base type for domain
+cast expression
+insert: targetatts are same set of types as attributes in a table
+update: targets can be attr types or anonymous records of attr types for rowset style assign (x,y) = selectexp
+assignment statement: type on left same set as type in a for, types in select into, etc?
+return statement
+return query statement
+expressions in a raise statement
+expressions in execute, anything else?
+types used inside select expression checking:
+  selectlist, trefs, groupby, orderby, limit, offset, where, having
+expressions:
+what can an identifiers type be?
+what can the type of an Expression node be?
+  scalar: integerlit,floatlit
+  stringlit: what can an unknown resolve to (not quite everything)
+  booleanlit: scalar
+  nulllit: same as stringlit?
+  positionalarg: any type that a function arg can have
+  cast: any type you can cast to
+  identifier: ?
+  case, casesimple: any type in the rhs expressions, what are these?
+  exists: scalar
+  funcall: any type a function return type can have
+  inpredicate: scalar
+  windowfn: ?
+  liftoperator: booleans only?
+
+problem: can't get types using gettypeannotation function and support
+different valid combinations of types
+
+
+new notes
+type contexts - these all have different possible types
+function return type
+function parameter type
+OLD & NEW
+declared variable
+attribute in create table
+attribute create type
+column in select expression
+column in view
+column in insert
+item in set in update: includes row type with contained types restricted
+placeholder
+id lookups in local bindings
+typenames??
+
+create list of each type for each context
+create wrapper types which convert from other types to either
+  typeerror type for bad type for context
+
+~~~~
+
diff --git a/src/Database/HsSqlPpp/Parsing/ParserInternal.lhs b/src/Database/HsSqlPpp/Parsing/ParserInternal.lhs
--- a/src/Database/HsSqlPpp/Parsing/ParserInternal.lhs
+++ b/src/Database/HsSqlPpp/Parsing/ParserInternal.lhs
@@ -2,8 +2,7 @@
 The main file for parsing sql, uses parsec. Not sure if parsec is the
 right choice, but it seems to do the job pretty well at the moment.
 
-> {-# LANGUAGE RankNTypes,FlexibleContexts #-}
->
+> {-# LANGUAGE FlexibleContexts #-}
 > -- | Functions to parse SQL.
 > module Database.HsSqlPpp.Parsing.ParserInternal
 >     (-- * Main
@@ -42,12 +41,12 @@
 > import Data.Maybe
 > import Data.Char
 >
-> import Data.Generics.PlateData
+> import Data.Generics.Uniplate.Data
 > import Data.Data hiding (Prefix,Infix)
 >
 > import Database.HsSqlPpp.Parsing.Lexer
 > import Database.HsSqlPpp.Parsing.ParseErrors
-> import Database.HsSqlPpp.AstInternals.AstAnti
+> import Database.HsSqlPpp.Internals.AstAnti
 > --import Database.HsSqlPpp.Ast
 > import qualified Database.HsSqlPpp.Ast as A
 > import Database.HsSqlPpp.Annotation as A
@@ -201,7 +200,7 @@
 >     p = expr <* eof
 >     ps = Just (l,c)
 >
-> --utility function to do error handling in one place
+> -- utility function to do error handling in one place
 > parseIt :: forall t s u b.(Stream s Identity t, Data b) =>
 >            Either ParseErrorExtra s
 >         -> Parsec s u b
@@ -1403,13 +1402,6 @@
 >   where
 >     digChars = concatMap show [(0::Int)..9]
 
- > integerLit :: SParser ScalarExpr
- > integerLit = do
- >   p <- pos
- >   (IntegerLit p) <$> integer
-
- IntegerLit <$> pos <*> integer
-
 >
 > caseScalarExpr :: SParser ScalarExpr
 > caseScalarExpr = do
@@ -1446,8 +1438,8 @@
 >
 > arraySubSuffix :: ScalarExpr -> SParser ScalarExpr
 > arraySubSuffix e = case e of
->                      Identifier _ "array" -> fail "can't use array as \
->                                                   \identifier name"
+>                      Identifier _ "array" -> fail "can't use array \
+>                                                   \as identifier name"
 >                      _ -> FunCall <$> pos
 >                                   <*> return "!arraysub"
 >                                   <*> ((e:) <$> squares (commaSep1 expr))
@@ -1503,15 +1495,10 @@
 > betweenSuffix a = do
 >   p <- pos
 >   keyword "between"
->   b <- b_expr --dodgyParseElement
+>   b <- b_expr
 >   keyword "and"
->   c <- b_expr -- dodgyParseElement
+>   c <- b_expr
 >   return $ FunCall p "!between" [a,b,c]
->              --can't use the full expression parser at this time
->              --because of a conflict between the operator 'and' and
->              --the 'and' part of a between
->   --where
->   --  dodgyParseElement = factor
 
 
 > functionCallSuffix :: ScalarExpr -> SParser ScalarExpr
@@ -1634,7 +1621,7 @@
 >            p <- pos
 >            symbol "."
 >            i1 <- idString
->            return $ QIdentifier p i i1 --FunCall p "." [i,i1]
+>            return $ QIdentifier p i i1
 >          ,return i]
 
 > dqi :: SParser SQIdentifier
@@ -1700,11 +1687,6 @@
 >                                    SymbolTok s | c==s -> Just ()
 >                                    _           -> Nothing)
 >
-> {-integer :: SParser Integer
-> integer = mytoken (\tok -> case tok of
->                                     IntegerTok n -> Just n
->                                     _ -> Nothing)-}
->
 > liftPositionalArgTok :: SParser Integer
 > liftPositionalArgTok =
 >   mytoken (\tok -> case tok of
@@ -1954,8 +1936,7 @@
 >                                  "any" -> LiftAny
 >                                  "some" -> LiftAny
 >                                  "all" -> LiftAll
->                                  z -> error $ "internal error in parsing \
->                                               \lift transform: " ++ z
+>                                  z -> error $ "internal error in parsing lift transform: " ++ z
 >              x1 -> x1
 
 --------------------------------------------------------------------------------
diff --git a/src/Database/HsSqlPpp/Pretty.lhs b/src/Database/HsSqlPpp/Pretty.lhs
--- a/src/Database/HsSqlPpp/Pretty.lhs
+++ b/src/Database/HsSqlPpp/Pretty.lhs
@@ -740,8 +740,7 @@
 >     ho = not (null order)
 >     convFrm = case frm of
 >                 FrameUnboundedPreceding -> text "range unbounded preceding"
->                 FrameUnboundedFull -> text "range between unbounded \
->                                            \preceding and unbounded following"
+>                 FrameUnboundedFull -> text "range between unbounded preceding and unbounded following"
 >                 FrameRowsUnboundedPreceding -> text "rows unbounded preceding"
 >
 > convExp nice (Case _ whens els) =
diff --git a/src/Database/HsSqlPpp/Quote.lhs b/src/Database/HsSqlPpp/Quote.lhs
new file mode 100644
--- /dev/null
+++ b/src/Database/HsSqlPpp/Quote.lhs
@@ -0,0 +1,280 @@
+
+> {- | A quasiquoter for SQL. Antiquoting is a bit inconsistent. The
+> splice variable names must be all lower case because of a limitation
+> in the parser.
+>
+> Example:
+>
+> >
+> > {-# LANGUAGE QuasiQuotes #-}
+> > import Database.HsSqlPpp.Ast
+> > import Database.HsSqlPpp.Quote
+> > import Database.HsSqlPpp.Annotation
+> >
+> > test :: Statement
+> > test = [$sqlStmt|
+> >
+> >   create table $(tablename) (
+> >    $(varname) $(typename)
+> >   );
+> >
+> >         |]
+> >   where
+> >     tablename = "my_table"
+> >     varname = "my_field"
+> >     typename = "text"
+> >
+>
+> See <http://jakewheat.github.com/hssqlppp/QuasiQuoteTests.html>
+> for more simple examples
+>      -}
+
+, and
+<http://jakewheat.github.com/hssqlppp/source/examples/Database/HsSqlPpp/Examples/Extensions/>
+for some example files which use quasiquotation to do ast
+transformations which implement syntax extensions to sql
+
+>
+> {-# LANGUAGE ScopedTypeVariables #-}
+>
+> module Database.HsSqlPpp.Quote
+>     (sqlStmts,sqlStmt,pgsqlStmts,pgsqlStmt,sqlExpr) where
+
+> import Language.Haskell.TH.Quote
+> import Language.Haskell.TH
+> import Data.Generics
+> import Data.List
+>
+> import Database.HsSqlPpp.Parsing.ParserInternal
+> import Database.HsSqlPpp.Annotation
+> import Database.HsSqlPpp.Internals.AstAnti
+>
+
+public api: the quasiquote functions
+
+> -- | quotes Statements
+> sqlStmts :: QuasiQuoter
+> sqlStmts = makeQQ parseAntiSql
+>
+> -- | quotes a single Statement
+> sqlStmt :: QuasiQuoter
+> sqlStmt = makeQQ parseOneAntiSql
+>
+> -- | quotes plpgsql Statements
+> pgsqlStmts :: QuasiQuoter
+> pgsqlStmts = makeQQ parseAntiPlpgsql
+>
+> -- | quotes a plpgsql Statement
+> pgsqlStmt :: QuasiQuoter
+> pgsqlStmt = makeQQ parseOneAntiPlpgsql
+
+> -- | quotes a ScalarExpr
+> sqlExpr :: QuasiQuoter
+> sqlExpr = makeQQ parseAntiScalarExpr
+
+boilerplate utils to hook everything together
+
+> type Parser e a = (String
+>                    -> Int
+>                    -> Int
+>                    -> String
+>                    -> Either e a)
+>
+> makeQQ :: (Show e, Data a) =>
+>           Parser e a -> QuasiQuoter
+> makeQQ p = QuasiQuoter {quoteExp = (parseExprExp p)
+>                        ,quotePat = (parseExprPat p)
+>                        ,quoteType = undefined
+>                        ,quoteDec = undefined}
+
+these return asts of from the module
+Database.HsSqlPpp.Internals.AstAnti, but when you expect the result
+of a quasiquote to be from the module Database.HsSqlPpp.Ast, it
+magically converts from one to the other ...
+
+> parseExprExp :: (Show e, Data a) =>
+>                 Parser e a -> String -> Q Exp
+> parseExprExp p s = parseSql' p s
+>                    >>=  dataToExpQ (const Nothing
+>                                     `extQ` antiExpE
+>                                     `extQ` antiStrE
+>                                     `extQ` antiTriggerEventE
+>                                     `extQ` antiStatementE)
+>
+> parseExprPat :: (Show e, Data a) =>
+>                 Parser e a ->  String -> Q Pat
+> parseExprPat p s = parseSql' p s
+>                    >>=  dataToPatQ (const Nothing
+>                                     `extQ` antiExprP
+>                                     `extQ` antiStrP
+>                                     `extQ` annotToWildCard
+>                                     --`extQ` antiTriggerEventE
+>                                     --`extQ` antiStatementE
+>                                    )
+>
+
+wrapper for all the different parsers which sets the source location
+and converts left to fail
+
+> parseSql' :: (Data a, Show e) => Parser e a -> String -> Q a
+> parseSql' p s = do
+>     Loc fn _ _ (l,c) _ <- location
+>     either (fail . show) return (p fn l c s)
+
+wrappers - the Parser module doesn't expose methods which parse
+exactly one statement
+
+> parseOneAntiPlpgsql :: Parser String Statement
+> parseOneAntiPlpgsql f l c s =
+>     case parseAntiPlpgsql f l c s of
+>       Right [st] -> Right st
+>       Right _ -> Left "got multiple statements"
+>       Left e -> Left $ show e
+>
+> parseOneAntiSql :: Parser String Statement
+> parseOneAntiSql f l c s =
+>     case parseAntiSql f l c s of
+>       Right [st] -> Right st
+>       Right _ -> Left "got multiple statements"
+>       Left e -> Left $ show e
+
+hack: replace the annotations in asts produced by parsing with
+wildcards, if we don't do this then pattern matches generally don't
+work since the source position annotations from the parser don't match
+up. The source position annotations are still available so that e.g. a
+function can pattern match against a statement then get the source
+position from the matched statements.
+
+> annotToWildCard :: Annotation -> Maybe PatQ
+> annotToWildCard _ = Just $ return WildP
+
+= individual antinode lookup functions
+
+> antiExpE :: ScalarExpr -> Maybe ExpQ
+> antiExpE v = fmap varE (antiExp v)
+>
+> antiExprP :: ScalarExpr -> Maybe PatQ
+> antiExprP v = fmap varP $ antiExp v
+>
+> antiExp :: ScalarExpr -> Maybe Name
+> antiExp (AntiScalarExpr v) = Just $ mkName v
+> antiExp _ = Nothing
+
+antistatements not working ...
+trying to replace a single antistatement node with multiple statement
+nodes and my generics skills aren't up to the task.
+
+> antiStatementE :: [Statement] -> Maybe ExpQ
+> antiStatementE (AntiStatement v : tl) =
+>    Just (listE (vref : conArgs))
+>    where
+>      conArgs = gmapQ (dataToExpQ (const Nothing
+>                        `extQ` antiExpE
+>                        `extQ` antiStrE
+>                        `extQ` antiTriggerEventE
+>                        `extQ` antiStatementE)) tl
+>      vref :: ExpQ
+>      vref = varE $ mkName v
+> antiStatementE _ = Nothing
+
+> antiStrE :: String -> Maybe ExpQ
+> antiStrE v = fmap varE $ antiStr v
+
+> antiStrP :: String -> Maybe PatQ
+> antiStrP v = fmap varP $ antiStr v
+
+> antiStr :: String -> Maybe Name
+> antiStr v =
+>   fmap mkName $ getSpliceName v
+>   where
+>     getSpliceName s | isPrefixOf "$(" s && last s == ')' =
+>       Just $ drop 2 $ take (length s - 1) s
+>                     | isPrefixOf "$s(" s && last s == ')' =
+>       Just $ drop 3 $ take (length s - 1) s
+>                     | isPrefixOf "$i(" s && last s == ')' =
+>       Just $ drop 3 $ take (length s - 1) s
+>                     | otherwise = Nothing
+
+>
+> antiTriggerEventE :: TriggerEvent -> Maybe ExpQ
+> antiTriggerEventE (AntiTriggerEvent v) = Just $ varE $ mkName v
+> antiTriggerEventE _ = Nothing
+
+~~~~
+
+ > antiExpP :: Expression -> Maybe PatQ
+ > antiExpP (AntiExpression v ) = Just $ varP $ mkName v
+ > antiExpP _ = Nothing
+
+to add support for a new splice location, add the type name to the
+list at the top of MakeAntiNodes, adjust the parser to parse splices
+at that point, and add a new antiQ function in this file
+
+
+new idea - to support antiquotation as much as possible, have more
+than one splice syntax:
+
+[$sqlExpr| $(x) |] - want to do a splice like this, sometimes it
+should be
+
+where x= "str" gives
+Identifier [] "str" <- need $(x) to parse as an antiidentifier
+
+and sometimes
+
+where x = FunCall [] "fn" []
+gives
+FunCall [] "fn" [] <- need $(x) to parse as an antiexpression
+
+need context which we don't have to make this decision (and would
+probably be really hard even if the context was available)
+
+so - use two different splice syntaxes.
+
+to avoid doing string splices using [$sqlExpr| '$(sp)' |] which is
+ugly and wrong (?), add another splice for strings?
+
+...
+
+work on tests to try to get some sort of design - want to minimise the
+number of splice syntaxes at the same time not make it difficult to
+work out which syntax to use in which spot.
+
+
+
+what needs to be done to support _ in pattern quasiquotes? -> I think
+it's just adding a wildcard ctor to the appropriate ast types using
+makeantinodes, and adding in lexing and parsing support - actually
+using wildcards is now working with the annotation approach above
+
+~~~~
+
+Some ideas about moving forward
+
+after working on a number of extensions, it seems clear that the quasi
+quotation is a bit limited, specifically the number of splice points
+is too limiting and a lot of ast transforms end up using a lot of ast
+types directly rather than via quotes which is crap.
+
+some possible resolutions:
+
+live with it
+
+add lots more splice points, will need lots of different splice
+syntaxes e.g. to cope with splicing a trigger event list or a single
+trigger event. Will also need to have a load more quote functions to
+parse sql fragments for different contexts.
+
+try and use e.g. a haskell or lisp like syntax for sql, to reduce the
+number of ast types drastically - this will allow much more regular
+use of splice points, quotes, etc.
+
+variant on this idea is instead to move to a tutorial d like syntax,
+which is vastly more regular than sql syntax and should allow for a
+much smaller range of quoters and splice syntaxes also.
+
+maybe might as well switch to haskelldb? the haskell or lisp like
+version of sql syntax keeps us writing the databases in sql, whereas
+tutorial d. haskelldb mean sql really disappears into the
+plumbing. These approaches might solve some problems with custom
+syntax also.
diff --git a/src/Database/HsSqlPpp/TypeChecker.lhs b/src/Database/HsSqlPpp/TypeChecker.lhs
--- a/src/Database/HsSqlPpp/TypeChecker.lhs
+++ b/src/Database/HsSqlPpp/TypeChecker.lhs
@@ -39,7 +39,7 @@
 >     ,getStatementAnnotations
 >     ) where
 >
-> import Database.HsSqlPpp.AstInternals.AstInternal
-> import Database.HsSqlPpp.AstInternals.TypeChecking.Utils
-> --import Database.HsSqlPpp.AstInternals.AstAnnotation
-> import Database.HsSqlPpp.AstInternals.AnnotationUtils
+> import Database.HsSqlPpp.Internals.AstInternal
+> import Database.HsSqlPpp.Internals.TypeChecking.Utils
+> --import Database.HsSqlPpp.Internals.AstAnnotation
+> import Database.HsSqlPpp.Internals.AnnotationUtils
diff --git a/src/Database/HsSqlPpp/Types.lhs b/src/Database/HsSqlPpp/Types.lhs
--- a/src/Database/HsSqlPpp/Types.lhs
+++ b/src/Database/HsSqlPpp/Types.lhs
@@ -22,4 +22,4 @@
 >     ,TypeError (..)
 >     ) where
 >
-> import Database.HsSqlPpp.AstInternals.TypeType
+> import Database.HsSqlPpp.Internals.TypeType
diff --git a/src/Database/HsSqlPpp/Utils/Utils.lhs b/src/Database/HsSqlPpp/Utils/Utils.lhs
--- a/src/Database/HsSqlPpp/Utils/Utils.lhs
+++ b/src/Database/HsSqlPpp/Utils/Utils.lhs
@@ -2,7 +2,6 @@
 This file contains some generic utility stuff
 
 > {-# LANGUAGE FlexibleContexts #-}
->
 > module Database.HsSqlPpp.Utils.Utils where
 >
 > import Data.List
@@ -123,7 +122,7 @@
 >   np [] l
 >   where
 >     np acc =
->       foldl (\ acc p -> insertWith (++) (keyf p) [p] acc) acc
+>       foldl (\ acc' p -> insertWith (++) (keyf p) [p] acc') acc
 >
 > insertWith :: Eq k => (a -> a -> a) -> k -> a -> [(k,a)] -> [(k,a)]
 > insertWith ac k v m =
