packages feed

hssqlppp 0.3.0 → 0.3.1

raw patch · 34 files changed

+31496/−31241 lines, 34 filesdep +template-haskelldep ~prettyPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: template-haskell

Dependency ranges changed: pretty

API changes (from Hackage documentation)

- Database.HsSqlPpp.Types: typeBigInt :: Type
- Database.HsSqlPpp.Types: typeBool :: Type
- Database.HsSqlPpp.Types: typeChar :: Type
- Database.HsSqlPpp.Types: typeDate :: Type
- Database.HsSqlPpp.Types: typeFloat4 :: Type
- Database.HsSqlPpp.Types: typeFloat8 :: Type
- Database.HsSqlPpp.Types: typeInt :: Type
- Database.HsSqlPpp.Types: typeInterval :: Type
- Database.HsSqlPpp.Types: typeNumeric :: Type
- Database.HsSqlPpp.Types: typeSmallInt :: Type
- Database.HsSqlPpp.Types: typeVarChar :: Type
+ Database.HsSqlPpp.Quote: pgsqlStmt :: QuasiQuoter
+ Database.HsSqlPpp.Quote: pgsqlStmts :: QuasiQuoter
+ Database.HsSqlPpp.Quote: sqlExpr :: QuasiQuoter
+ Database.HsSqlPpp.Quote: sqlStmt :: QuasiQuoter
+ Database.HsSqlPpp.Quote: sqlStmts :: QuasiQuoter
+ Database.HsSqlPpp.Types: typeSmallInt, typeInterval, typeDate, typeBool, typeChar, typeVarChar, typeFloat8, typeFloat4, typeNumeric, typeInt, typeBigInt :: Type

Files

hssqlppp.cabal view
@@ -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
src/Database/HsSqlPpp/Annotation.lhs view
@@ -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
src/Database/HsSqlPpp/Ast.lhs view
@@ -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
− src/Database/HsSqlPpp/AstInternals/AnnotationUtils.lhs
@@ -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)
− src/Database/HsSqlPpp/AstInternals/AstAnnotation.lhs
@@ -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
− src/Database/HsSqlPpp/AstInternals/AstAnti.hs
@@ -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
− src/Database/HsSqlPpp/AstInternals/AstInternal.hs
@@ -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)))
− src/Database/HsSqlPpp/AstInternals/Catalog/CatalogInternal.lhs
@@ -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)
− src/Database/HsSqlPpp/AstInternals/Catalog/DefaultTemplate1Catalog.lhs
@@ -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")]]-
− src/Database/HsSqlPpp/AstInternals/TypeChecking/ErrorUtils.lhs
@@ -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
− src/Database/HsSqlPpp/AstInternals/TypeChecking/LocalBindings.lhs
@@ -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
− src/Database/HsSqlPpp/AstInternals/TypeChecking/LocalBindingsInternal.lhs
@@ -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)-}
− src/Database/HsSqlPpp/AstInternals/TypeChecking/TypeConversion.lhs
@@ -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
− src/Database/HsSqlPpp/AstInternals/TypeChecking/Utils.lhs
@@ -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-
− src/Database/HsSqlPpp/AstInternals/TypeType.lhs
@@ -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--~~~~-
src/Database/HsSqlPpp/Catalog.lhs view
@@ -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
+ src/Database/HsSqlPpp/Internals/AnnotationUtils.lhs view
@@ -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)
+ src/Database/HsSqlPpp/Internals/AstAnnotation.lhs view
@@ -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
+ src/Database/HsSqlPpp/Internals/AstAnti.hs view
@@ -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
+ src/Database/HsSqlPpp/Internals/AstInternal.hs view
@@ -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)))
+ src/Database/HsSqlPpp/Internals/Catalog/CatalogInternal.lhs view
@@ -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)
+ src/Database/HsSqlPpp/Internals/Catalog/DefaultTemplate1Catalog.lhs view
@@ -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")]]+
+ src/Database/HsSqlPpp/Internals/TypeChecking/ErrorUtils.lhs view
@@ -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
+ src/Database/HsSqlPpp/Internals/TypeChecking/LocalBindings.lhs view
@@ -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
+ src/Database/HsSqlPpp/Internals/TypeChecking/LocalBindingsInternal.lhs view
@@ -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)-}
+ src/Database/HsSqlPpp/Internals/TypeChecking/TypeConversion.lhs view
@@ -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
+ src/Database/HsSqlPpp/Internals/TypeChecking/Utils.lhs view
@@ -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+
+ src/Database/HsSqlPpp/Internals/TypeType.lhs view
@@ -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++~~~~+
src/Database/HsSqlPpp/Parsing/ParserInternal.lhs view
@@ -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  --------------------------------------------------------------------------------
src/Database/HsSqlPpp/Pretty.lhs view
@@ -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) =
+ src/Database/HsSqlPpp/Quote.lhs view
@@ -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.
src/Database/HsSqlPpp/TypeChecker.lhs view
@@ -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
src/Database/HsSqlPpp/Types.lhs view
@@ -22,4 +22,4 @@ >     ,TypeError (..) >     ) where >-> import Database.HsSqlPpp.AstInternals.TypeType+> import Database.HsSqlPpp.Internals.TypeType
src/Database/HsSqlPpp/Utils/Utils.lhs view
@@ -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 =