c?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  None  Safe-Inferred>Specifies a part in a SQL statement which is currently in use.Filtering of rows.Physical or virtual table.Projection of columns.jLists all features which lead to a termination, for a given feature coming from an operator placed below.fDetermines whether two feature sets collide and therefore whether we should terminate a SQL fragment.'      NoneThe graph type.The vertex type.5Constructs a graph from the given out-adjacency list. Fetches the parents of a vertex.!Fetches the children of a vertex.Fetches the label of a vertex.Sorts the vertices topological.%Gets all vertices from a given graph.    Safe-InferredVDefines the possible modes used for certain tasks like rendering and materialization.  Safe-InferredXRepresentation of a null value. (While this can basically be part of any nullable type, it is added here for simplicity. Values aren't linked to types anyways.)e.g. TRUE, FALSE! (but not UNKOWN in this variant)e.g. foo *A double precision floating point number. !7Numeric data type with fixed precision and scale (e.g. 1.4) " 42#Types of valid SQL 99 datatypes (most likely a small subset) as stated in 'SQL 1999: Understanding Relational Language Components' (Melton, Simon)$ BOOLEAN% DOUBLE PRECISION& DECIMAL' INTEGER(Types of unary functions)Types of binary functions.*0Shorthand for the value expression base part of +.+bA type which does not extend basic value expressions, and therefore can appear in any SQL clause.,A template which allows the definition of a mutual recursive type for value expressions, such that it can be extended with further constructors by other data definitions.-.CASE WHEN ELSE (restricted to one WHEN branch).e.g. 1 IN (VALUES (1))/The value to check for.0The query to check in.1e.g. EXISTS (VALUES (1))2The query to check on.3 Application of the not function.4The expression to negate.5The applied function6 The operand7!Application of a binary function.8The applied function.9The first operand.:The second operand.;A type cast (e.g. CAST(1 AS DOUBLE PRECISION)).<The target of the cast.=The type to cast into.> A column.?=The name of the column. | The optional prefix of the column.@-Encapsulates a representation of a SQL value.AThe value contained.BAggregate functions.C0Shorthand for the value expression base part of D.D4Basic value expressions extended only by aggregates.EWindow functionsFWindow frame end specificationGUNBOUNDED FOLLOWINGH value FOLLOWINGI CURRENT ROWJ Window frame start specificationK CURRENT ROWL value PRECEDINGMUNBOUNDED PRECEDINGNA special order expression, which is used in windows of window functions. This is needed because we can use window functions in the ORDER BY clause, but not in window functions.O0Shorthand for the value expression base part of P.PDBasic value expressions extended by aggregates and window functions.QAggregate function expression. R .f() OVER (PARTITION BY p ORDER BY s framespec)S'Function to be computed over the windowTThe expressions to partition byUOptional partition orderingVOptional frame specificationWEncapsulates the base cases.XThe value expression.YORepresents a subset of possible statements which can occur in a select clause.Z SELECT foo AS bar ...[The value expression aliased.\The name of the alias.]The name of the table.^The sub query._MRepresents a subset of possible statements which can occur in a from clause.`The aliased expression.aThe name of the alias.bOptional column names.cThe direction to sort in.d5Tells which column to sort by and in which direction.eThe expression to order after.fRepresents a SQL query using select and other optional clauses. The reason this type is seperated (and not within VQSelect) is the use within tile merging in earlier steps.g&The constituents of the select clause.h)Indicates whether duplicates are removed.i$The constituents of the from clause.j(A list of conjunctive column expression.kThe values to group by.l2The values and direction to order the table after.m&A (multi-) set operation for two sets.n&A Query which has a table as a result.oThe left query.p2The right query. The used (multi-) set operation.qThe bindings of the with query as a list of tuples, each containing the table alias, the optional column names and the used query.rThe values contained.s&A query which defines something (DDL).t6Mixed datatype for sequences of both types of queries.u !"#$v%&'(wxyz{|}~)*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu !"#$v%&'(wxyz{|}~)*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu"! #'&%v$( ~}|{zyxw)*+,@>;731.-A?<=89:5642/0BCDE FIHGJMLKNOP WRQXSTUVYZ[\^]_`abcdefghijklmn rqopst Safe-Inferred Replaces all references in this f* with the result from the given function./Generic value expression substitution function.   Safe-Inferred,Helper value to construct select statements.5Shorthand to make a prefixed column value expression.-Embeds a query into a from part as sub query.7Check whether we need an expression within an ORDER BY  GROUP BY  PARTITION BY clause, based on a simple heuristic. The main purpose is to eliminate single values, everything else is optional. This means that some expressions have no effect on the sort order but will still return .None  A keyword.A single character keyword.Terminate a SQL query.SRender a conjunction list, renders the neutral element, when given the empty list.+Render a list of generic order expressions.aRender a list of columns as definition within a from clause or within a common table expression.Renders an optional prefix.Generic , renderer. Render a O with the generic renderer. Render a * with the generic renderer.(     (     None!"024HM  Declare need for position columns in the query result. The distinction between AbsPos and RelPos is only relevant for the optimizer: AbsPos signals that the actual pos values are required. RelPos signals that only the order induced by the pos column is relevant./Window frame end specification0UNBOUNDED FOLLOWING1 value FOLLOWING2 CURRENT ROW3 Window frame start specification4 CURRENT ROW5 value PRECEDING6UNBOUNDED PRECEDING76Comparison operators which can be used for ThetaJoins.>ySchema information, represents a table structure, the first element of the tuple is the column name the second its type.?A tuple is a list of values@@New column name and the expression that generates the new columnAHExpressions which are used to specify partitioning in window functions.BProjection expressionsH(Unary functions/operators in expressionsU-Binary functions and operators in expressionsgSorting informationh@Key of a database table, a key consists of multiple column namesj Typed columnskName of a database tablelZRight attribute name, used to represent the right argument when applying binary operatorsmXLeft attribute name, used to represent the left argument when applying binary operatorsn;Names of partition attributes used in window specificationsocName of an attribute in which the result of an expression, aggregate or window function is stored.pAttribute name or column nameq=Wrapper around values that can occur in an table algebra planxstable algebra types At this level we do not have any structural types anymore those are represented by columns.Sorting rows in a direction8Show the values in the way compatible with the xml plan.MShow the table algebra types in a way that is compatible with the xml plan.FThe show instance results in values that are accepted in the xml plan.  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~x~}|{zyqwvutsrponmlkjhigUfedcba`_^]\[ZYXWVHTSRQPONMLKJIBGFEDCA@?>7=<;:983654/210,.-"+*)('&%$#!   .  ! " +*)('&%$#,.-/21036547=<;:98>?@ABGFEDCH TSRQPONMLKJIUfedcba`_^]\[ZYXWVghijklmnopqwvutsrx~}|{zyNone0243 !"#$%&'()*+,-./0123456789:;<=>?@/ !"#$%&'()*+,-./0123456789:;<=>?@None*Create a TA int valueCreate a TA string valueCreate a TA boolean valueCreate a TA double valueCreate a TA decimal valueCreate a TA nat valueTypes of atomic valuesTypes of atomic valuesTypes of atomic valuesTypes of atomic valuesTypes of atomic valuesTypes of atomic valuesConstruct a database table node The first argument is the emph{qualified} name of the database table. The second describes the columns in alphabetical order. The third argument describes the database keys (one table key can span over multiple columns). Construct a table with one value8Construct a literal table with multiple columns and rowsUJoin two plans where the columns n1 of table 1 and columns n2 of table 2 are equal.&Assign a number to each row in column o incrementally sorted by sort. The numbering is not dense!)Compute the difference between two plans.,Same as rank but provides a dense numbering.Select rows where the column SelAttr contains True.Remove duplicate rows!Make cross product from two plansUnion between two plans+Project/rename certain column out of a plan#Apply aggregate functions to a planbSimilar to rowrank but this will assign a unique number to every row (even if two rows are equal)@Same as rownum but columns can be assigned an ordering directionPerform theta join on two plans Perform a semi join on two plans!Perform an anti join on two plansUJoin two plans where the columns n1 of table 1 and columns n2 of table 2 are equal.&Assign a number to each row in column o incrementing sorted by sort. The numbering is not dense!)Compute the difference between two plans.,Same as rank but provides a dense numbering.Select rows where the column SelAttr contains True.Remove duplicate rows!Make cross product from two plansUnion between two plans+Project/rename certain column out of a plan#Apply aggregate functions to a planhSimilar to rowrank but this will assign a emph{unique} number to every row (even if two rows are equal)@Same as rownum but columns can be assigned an ordering direction1AB//1ABNone$*CThe result of the D function.EVThe transform monad is used for transforming DAGs into dense tiles, it is built from:A reader for the DAG(A writer for outputting the dependenciesDA state for generating fresh names and maintain the mapping of nodesFA combination of types which need to be modified state wise while transforming: * The processed nodes with multiple parents.,The current state of the table id generator./The current state of the variable id generator.GFAssociation list (where dependencies should be ordered topologically).HTable algebra DAGsI Defines the tile tree structure.JyA reference pointing to another TileTree: The second argument specifies the columns of the referenced table expression.K:A tile: The first argument determines which features the f uses.LJAliased tile children, where the first part is the alias used within the f.M?The type used to reference table expressions outside of a tile.NA tile internal reference type.OThe initial state.P Adds a new binding to the state.Q&Tries to look up a binding for a node.R<A table expression id generator using the state within the E type.S A variable identifier generator.T#Unpack values (or run computation).U'Check if node has more than one parent.VGet the column schema of a K.WGet the column schema of a f.D Transform a H\, while swapping out repeatedly used sub expressions (nodes with more than one parent). A Ho can have multiple root nodes, and therefore the function returns a list of root tiles and their dependencies.XThis function basically checks for already referenced nodes with more than one parent, returning a reference to already computed Is.YAbstraction for rank operators.ZGenerates a new IJ by attaching a column, generated by a function taking the select clause.[.Abstracts over binary set operation operators.\'Perform a cross join between two nodes.]ATerminates a SQL fragment when suggested. Returns the resulting  of the child, the f and its children.^Does the same as ](, but further handles combining of the # and applies it to the constructor._$Embeds an external reference into a f.`FGenerate a select clause with column names from a schema and a prefix.aCreates Y7 which points at a prefixed column with the same name.bLSearch the select clause for a specific column definition and return it as +.cLSearch the select clause for a specific column definition and return it as D.dLSearch the select clause for a specific column definition and return it as P.e|Generic base converter for the value expression template. Since types do not have equal functionality, conversion can fail.f Converts an P to a +, if possible.g Converts an P to a D, if possible.h'Shorthand to make an unprefixed column.iHAppend predicate expressions to the WHERE clause of a select statement.j Translate 7 into ).kaTranslate sort information into '[Q.WindowOrderExpr]', using the column function, which takes a l.m,Translate a single join condition into it's + equivalent. BT contained within the join condition are inlined with the according select clauses.DCEFnopqrGHIJKLMNOP(The key as a node with multiple parents.&Name of the reference and its columns.QRsST The used DAG.The inital state.UVWDXtYuZv[\wx]^_`aybcdefghz&The expression added with logical and.The select statement to add to. The result.ij{|}~kmLeft select clause.Right select clause. CGHIJKLMND=CEFnopqrGHIKJLMNOPQRsSTUVWDXtYuZv[\wx]^_`aybcdefghzij{|}~kmNone=The type of materialization function. The result consists of:+The queries which need to be executed first(The queries produced from the root nodesNoneA flat tile containing:the body of the tile?a multiset of a type which identifies a referenceable flat tile:Flatten a transform result using SQL identifiers directly.Flatten the transformed result and apply the given functions where possible. The materializer should produce the desired representation, and the substituter should produce expressions which can be substituted as .The materializer.The substituter.NoneThe used graph.Generate a graph from tiles.None5The state monad used to find single parent ancestors.tThe lowest single parent ancestor state contains: * A map of vertices mapping to their single parent ancestors.9Describes the binding behaviour within a dependency tree.Merges all tiles reachable by a single root tile into nested common table expressions (depending on their scope) and all tiles reachable by multiple root tiles into a temporary table. The binding strategy determines whether it is merged in the highest possible CTE or in the lowest.Same as materializeByBehaviour with  as behaviour.Merges all tiles reachable by a single root tile into nested common table expressions (depending on their scope) and all tiles reachable by multiple root tiles into a temporary table.uReturns the list of single parent ancestors for a vertex or the empty list if the vertex has not been processed yet.Take a list of vertices and intersect their single parent ancestors with each other, effectively calculating the single parent ancestors for this vertex.This function descends the given root vertices and returns the single parent ancestors for each vertex, reachable by any of the given root vertices. A vertex with parents, which are not reachable through the given root nodes can and will not be computed.:Chooses the lowest single parent ancestor for each vertex.;Chooses the highest single parent ancestor for each vertex.7Reverses an out-adjacency map into an in-adjacency map.PConstructs a list of queries from the given arguments. Takes an out-adjacency map of the single parent ancestors (which means the child vertices are mapped from their corresponding single parent ancestor). The map should resemble a tree structure (i.e. no vertex has multiple parents), otherwise queries are executed multiple times.cTraverses the reversed SPA map like a tree, building a tree of CTEs, starting at the given vertex.The used graph.The current vertex.Labeled graph.Root vertices.Temporary vertices.Out adjacency list.The corresponding graph.The reversed spa map.The materializer.Vertex to build the query for.None$ provides a state for the current bindings which are gathered and a reader to have access to the set which contains all vertices reachable by the current root vertex.HCreate a CTE for every root tile and add a binding for every dependency.NoneXWrap all dependencies into temporary tables, and put the root tiles into value queries.NoneNone Returns a 5 containing debug information for a transform result.QRenders a list of queries in an ugly but fast way, feasible as direct SQL input.-Renders a list of queries in a beautiful way.7Renders a list of queries without colors but formatted.None:Produces pretty output, optionally with debug information.&Renders a DAG with the given renderer.Render output directly for DSH. The order from the root nodes in the directed acyclic graph is preserved. (This function uses the combined materialization strategy.)jRender output directly for DSH. The order from the root nodes in the directed acyclic graph is preserved.nProduces output which allows further inspection with the psql command line utility (and possibly others too).   None:Labels (to collect all operations (nullary, unary,binary)) Dot colorsNullary operationsCreate an abstract Dot edge Nullaryops8Render a Dot document from the preamble, nodes and edges>extract the operator descriptions and list of edges from a DAG7Render an TableAlgebra plan into a dot file (GraphViz).X-None !"#$%&'()*+,-.//012344567,89:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}}~                                                         ! " #  $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N D E F G H I J K O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                   f                       $ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~F                                                                                       algebra-sql-0.1.0.1"Database.Algebra.SQL.CompatibilityDatabase.Algebra.Table.Lang"Database.Algebra.Table.Render.JSON Database.Algebra.Table.Construct$Database.Algebra.SQL.Materialization-Database.Algebra.SQL.Materialization.Combined(Database.Algebra.SQL.Materialization.CTEDatabase.Algebra.SQL.Util!Database.Algebra.Table.Render.DotDatabase.Algebra.Impossible Database.Algebra.SQL.Termination*Database.Algebra.SQL.Materialization.GraphDatabase.Algebra.SQL.Query'Database.Algebra.SQL.Query.SubstitutionDatabase.Algebra.SQL.Query.Util!Database.Algebra.SQL.Render.QueryDatabase.Algebra.SQL.Tile!Database.Algebra.SQL.Tile.Flatten)Database.Algebra.SQL.Materialization.Util3Database.Algebra.SQL.Materialization.TemporaryTable Database.Algebra.SQL.Render.TileDatabase.Algebra.SQL.RenderDatabase.Algebra.SQL.File CompatModeMonetDB PostgreSQLSQL99 TableAlgebraBinOp Difference DisjUnionAntiJoinSemiJoin ThetaJoinEqJoinCrossUnOp SerializeAggrDistinctSelectProjectRankWinFunRowRankRowNum PayloadColSerializeOrderNoPosRelPosAbsPosDescrColNullOpTableRefLitTableWinCount WinLastValue WinFirstValueWinAnyWinAllWinAvgWinSumWinMinWinMax FrameBounds ClosedFrame HalfOpenFrameFrameEnd FEUnboundFolFEValFol FECurrRow FrameStart FSCurrRow FSValPrec FSUnboundPrecJoinRelNeJLeJLtJGeJGtJEqJ SchemaInfosTupleProjPartExprExprIfEConstEColEUnAppEBinAppEUnFun SubStringExpLogSqrtATanACosASinTanCosSinCastNotBinFunConcatLike SimilarToContainsModuloDivTimesMinusPlusOrAndNEqEqLtEGtELtGtSortSpecKey TypedAttr TableName RightAttrLeftAttrPartAttrResAttrAttrAValVNatVDecVDoubleVBoolVStrVIntATyANatADoubleADecABoolAStrAIntAggrTypeAnyAllCountSumMinMaxAvgSortDirDescAscreplace replaceChild$fOperatorAlgebra$fShowPayloadCol$fShowSerializeOrder$fShowDescrCol $fShowJoinRel $fShowExpr $fShowUnFun $fShowBinFun $fShowAVal $fShowATy $fShowSortDir$fShowAggrType serializePlandeserializePlan planToFile planFromFileintstringbooldoubledecnatintTstringTboolTdecTdoubleTnatTdbTablelitTable litTable'eqJoin thetaJoinsemiJoinantiJoinrank differencerowrankselectdistinctcrossunionprojaggrwinFunrownumrownum' thetaJoinM semiJoinM antiJoinMeqJoinMrankM differenceMrowrankMselectM distinctMcrossMunionMprojMaggrMwinFunMrownumMrownum'MMatFunBindingStrategyHighestLowestmaterializeByBindingStrategy materializelegacyMaterializerenderDebugOutput putShowSLnrenderOutputCompactrenderOutputPlainrenderOutputDSHrenderOutputDSHWithrenderAdvancedDebugOutput renderTADot impossible unimplementedFeatureFilterFTableF ProjectionFterminatingFeaturesterminatesOver FeatureSetFunFAggrAndGroupingFWindowFunctionFSortFDupElimFwrapnoneFprojectFfilterFtableFdupElimFsortFwindowFunctionFaggrAndGroupingF$fShowFeatureSet$fMonoidFeatureSetbase Data.Monoid<>mconcatmappendmemptyMonoidgetDualDualappEndoEndogetAllgetAnygetSum getProductProductgetFirstFirstgetLastLastGraphVertexmkGraphparentschildrennodetopSortverticesgraph reachableVNullVBooleanVTextVDoublePrecisionVDecimalVIntegerDataType DTBooleanDTDoublePrecision DTDecimal DTInteger UnaryFunctionBinaryFunctionColumnExprBase ColumnExprValueExprTemplateVECaseVEIninExprinQueryVEExists existsQueryVENotnTargetunFunargVEBinAppbinFun firstExpr secondExprVECasttargettype_VEColumncNameVEValuevalueAggregateFunction AggrExprBaseAggrExprWindowFunctionWindowOrderExprExtendedExprBase ExtendedExpr EEAggrExprEEWinFunpartColsorderBy frameSpecEEBase valueExpr SelectColumnSCAliassExprsNametableReferenceNamesubQueryFromPartfExprfName optColumns SortDirection OrderExproExpr SelectStmt selectClause fromClause whereClause groupByClause orderByClause SetOperation ValueQuery leftQuery rightQuery cBindingsrowsDefinitionQueryQueryValueDTText UFSubStringUFLogUFExpUFSqrtUFATanUFACosUFASinUFTanUFCosUFSinBFOrBFAnd BFNotEqualBFEqual BFLowerEqual BFLowerThanBFGreaterEqual BFGreaterThanBFConcatBFLike BFSimilarTo BFContainsBFModuloBFDivBFTimesBFMinusBFPlusCEBasecondExpr thenBranch elseBranchVEUnAppcPrefixAFAnyAFAllAFCountAFSumAFMinAFMaxAFAvg AEAggregate optValueExpr aFunctionAEBase WFRowNumber WFDenseRankWFRankWFCount WFLastValue WFFirstValueWFAnyWFAllWFAvgWFSumWFMinWFMax FrameSpecFClosed FHalfOpenWOEwoExprwSortDirectionaggrExprSCExprFromExprFETableReference FEVariable vIdentifier FESubQuery ReferenceTypeFPAlias Descending AscendingOE sortDirection SOExceptAll SOUnionAllVQBinarySetOperation operationVQWithcBody VQLiteralVQSelect selectStmtDQTemporaryTable tTableName DQMatView sourceQueryviewNameQDefinitionQuerydefinitionQuery QValueQuery valueQueryreplaceReferencesSelectStmt"replaceReferencesValueExprTemplateSubstitutionFunctionreplaceReferencesSelectColumnreplaceReferencesExtendedExprreplaceReferencesColumnExprreplaceReferencesAggrExprreplaceReferencesFromPartreplaceReferencesFromExprreplaceReferencesValueQueryreplaceReferencesOrderExpr replaceReferencesWindowOrderExprreplaceReferencesWindowFunctionemptySelectStmtmkPCol mkSubQuery!affectsSortOrderValueExprTemplateghc-prim GHC.TypesTrueaffectsSortOrderCEaffectsSortOrderEEaffectsSortOrderAEkwop terminate renderAndListrenderGenericOrderByListrenderOptColDefsrenderOptPrefixrenderValueExprTemplaterenderExtendedExprBaserenderColumnExprBaseenlist enlistOnLine renderQueryrenderDefinitionQueryrenderValueQueryrenderSetOperationrenderSelectStmtrenderOrderExprrenderWindowOrderExprrenderWindowOrderByListrenderFrameSpecrenderFrameStartrenderFrameEndrenderSortDirectionrenderFromPartrenderSubQueryrenderFromExprrenderSelectColumnrenderExtendedExprrenderAggrExprrenderSubStringrenderAggregateFunction renderFunCallrenderWindowFunctionrenderColumnExprrenderBinaryFunctionrenderUnaryFunctionrenderDataTypeliteral renderValuePlantagsroots$fFromJSONPlan $fToJSONPlan$fFromJSONFrameStart$fFromJSONFrameEnd$fFromJSONFrameBounds$fFromJSONPayloadCol$fFromJSONSerializeOrder$fFromJSONDescrCol $fFromJSONKey$fFromJSONBinFun$fFromJSONUnFun$fFromJSONExpr$fFromJSONBinOp$fFromJSONUnOp$fFromJSONWinFun$fFromJSONNullOp$fFromJSONAggrType $fFromJSON(,)$fFromJSONJoinRel$fFromJSONSortDir$fFromJSONAVal $fFromJSONATy$fToJSONFrameStart$fToJSONFrameEnd$fToJSONFrameBounds$fToJSONPayloadCol$fToJSONSerializeOrder$fToJSONDescrCol $fToJSONKey$fToJSONBinFun $fToJSONUnFun $fToJSONExpr $fToJSONBinOp $fToJSONUnOp$fToJSONWinFun$fToJSONNullOp$fToJSONAggrType $fToJSON(,)$fToJSONJoinRel$fToJSONSortDir $fToJSONAVal $fToJSONATybind1bind2TransformResult transform TransformTransformStateDependencyListTADagTileTree ReferenceLeafTileNode TileChildrenExternalReferenceInternalReferencesInitial sAddBindingsLookupBinding freshTableIdfreshVariableId runTransformisMultiReferencedgetSchemaTileTreegetSchemaSelectStmt transformNodetransformUnOpRankattachColFunUnOptransformBinSetOptransformBinCrossJointransformTerminatedtransformTerminated'embedExternalReferencecolumnsFromSchemaasSelectColumninlineCEinlineAEinlineEEconvertEEBaseTemplate convertEEtoCE convertEEtoAEmkColappendAllToWheretranslateJoinReltranslateSortInfGHC.BaseStringtranslateJoinCondTSmultiParentNodes tableIdGen aliasIdGenvarIdGen freshAliastransformNullaryOp transformUnOppruneColtransformBinOptransformExistsJoinasWindowOrderExprList appendToWheretranslateFrameSpectranslateFrameStarttranslateFrameEndtranslateWindowFunctiontranslateAggrTypetranslateExprValueExprTemplatetranslateExprCEtranslateExprEEtranslateExprAEtranslateBinFuntranslateSortDir translateAVal translateATyFlatTileflattenTransformResultflattenTransformResultWithflattenTileTreeWithflattenTileNodeWithgraphFromFlatResultSFinderSStatematerializeByFunctionsfGetSingleParentAncestorssfComputeSingleParentAncestorsfindSPAchooseLowestSPAchooseHighestSPA inToOutAdjMapqueriesFromSPAbuildValueQuerysfVertexProcessedtraverseGatherintRefextRefrenderTileTreeNoderenderTileTreerenderTransformResultdebugTransformResultGHC.ShowShowS renderCompact renderPretty renderPlainrenderPrettySimpleDoc renderWithrenderOutputWith resultFromDAGTALabelDotColor opDotLabelconstructDotEdge opDotColor renderDotextractGraphStructure SerializeL AntiJoinL SemiJoinL ThetaJoinLEqJoinL DisjUnionL DifferenceLCrossLSelLRowRankLRowNumLRankLProjectL DistinctLWinFunLAggrL TableRefL LitTableLDotEdgeDotNode DotNodeIDDotLabelDotStyleSolid DCHotPinkDCWhiteDCCyan4DCCyanDCOrangeDCDarkDCOrangeDCGray52DCGray91DCLightSkyBlue DCDodgerBlueDCBeigeDCSiennaDCGreen DCCrimson DCOrangeDCRedDCRedDCTanDCGold DCDimDCGrayDCGrayDCSalmonDCTomato nodeToDoc tagsToDoc labelToDoc lookupTagscommas renderProj renderAggr renderSortInfrenderJoinArgsrenderPartExprs renderKey renderColumn renderTuple renderDatarenderTableInfo renderWinFun renderWinFunsrenderPartSpecrenderSortSpecrenderFrameBounds renderSerColconstructDotNode renderDotEdge renderColor renderDotNodepreamble labelOfOp labelOfBinOp labelOfUnOplabelOfNullaryOpreadDagFromFile outputDot