sql

package
v0.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 5, 2019 License: Apache-2.0 Imports: 13 Imported by: 0

README

TODO:
 - support namespace operations
 - support table schema operations: SHOW TABLES, DESCRIBE, CREATE TABLE, DROP TABLE
 - support write operations: INSERT, DELETE, ALTER, DROP/ADD COLUM
 - support EXPLAIN
 - support sub queries: WITH, VALUES + subquery
 - SET operation: INTERSECT, UNIN, EXCEPT
 - window function?
 - support string operations: CONCAT, LIKE

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Parse

func Parse(sql string, logger common.Logger) (aql *queryCom.AQLQuery, err error)

Parse parses input sql

Types

type ASTBuilder

type ASTBuilder struct {
	// Logger is a logger from appConfig
	Logger common.Logger
	// IStream is input antlr char stream
	IStream *antlr.CommonTokenStream
	// ParameterPosition is position in sql
	ParameterPosition int
	// SQL2AqlContext is the context of construncting AQL
	SQL2AqlCtx *SQL2AqlContext
	// contains filtered or unexported fields
}

ASTBuilder is a visitor

func (*ASTBuilder) GetAQL

func (v *ASTBuilder) GetAQL() *queryCom.AQLQuery

GetAQL construct AQLQuery via read through SQL2AqlCtx

func (*ASTBuilder) GetTextIfPresent

func (v *ASTBuilder) GetTextIfPresent(token antlr.Token) string

GetTextIfPresent visits the node

func (*ASTBuilder) Visit

func (v *ASTBuilder) Visit(tree antlr.ParseTree) interface{}

Visit visits the node

func (*ASTBuilder) VisitAliasedRelation

func (v *ASTBuilder) VisitAliasedRelation(ctx *antlrgen.AliasedRelationContext) interface{}

VisitAliasedRelation visits the node

func (*ASTBuilder) VisitArithmeticBinary

func (v *ASTBuilder) VisitArithmeticBinary(ctx *antlrgen.ArithmeticBinaryContext) interface{}

VisitArithmeticBinary visits the node

func (*ASTBuilder) VisitArithmeticUnary

func (v *ASTBuilder) VisitArithmeticUnary(ctx *antlrgen.ArithmeticUnaryContext) interface{}

VisitArithmeticUnary visits the node

func (*ASTBuilder) VisitArrayConstructor

func (v *ASTBuilder) VisitArrayConstructor(ctx *antlrgen.ArrayConstructorContext) interface{}

VisitArrayConstructor visits the node

func (*ASTBuilder) VisitAtTimeZone

func (v *ASTBuilder) VisitAtTimeZone(ctx *antlrgen.AtTimeZoneContext) interface{}

VisitAtTimeZone visits the node

func (*ASTBuilder) VisitBackQuotedIdentifier

func (v *ASTBuilder) VisitBackQuotedIdentifier(ctx *antlrgen.BackQuotedIdentifierContext) interface{}

VisitBackQuotedIdentifier visits the node

func (*ASTBuilder) VisitBaseType

func (v *ASTBuilder) VisitBaseType(ctx *antlrgen.BaseTypeContext) interface{}

VisitBaseType visits the node

func (*ASTBuilder) VisitBasicStringLiteral

func (v *ASTBuilder) VisitBasicStringLiteral(ctx *antlrgen.BasicStringLiteralContext) interface{}

VisitBasicStringLiteral visits the node

func (*ASTBuilder) VisitBetween

func (v *ASTBuilder) VisitBetween(ctx *antlrgen.BetweenContext) interface{}

VisitBetween visits the node

func (*ASTBuilder) VisitBinaryLiteral

func (v *ASTBuilder) VisitBinaryLiteral(ctx *antlrgen.BinaryLiteralContext) interface{}

VisitBinaryLiteral visits the node

func (*ASTBuilder) VisitBooleanDefault

func (v *ASTBuilder) VisitBooleanDefault(ctx *antlrgen.BooleanDefaultContext) interface{}

VisitBooleanDefault visits the node

func (*ASTBuilder) VisitBooleanLiteral

func (v *ASTBuilder) VisitBooleanLiteral(ctx *antlrgen.BooleanLiteralContext) interface{}

VisitBooleanLiteral visits the node

func (*ASTBuilder) VisitBooleanValue

func (v *ASTBuilder) VisitBooleanValue(ctx *antlrgen.BooleanValueContext) interface{}

VisitBooleanValue visits the node

func (*ASTBuilder) VisitChildren

func (v *ASTBuilder) VisitChildren(node antlr.RuleNode) interface{}

VisitChildren visits the node

func (*ASTBuilder) VisitColumnAliases

func (v *ASTBuilder) VisitColumnAliases(ctx *antlrgen.ColumnAliasesContext) interface{}

VisitColumnAliases visits the node

func (*ASTBuilder) VisitColumnReference

func (v *ASTBuilder) VisitColumnReference(ctx *antlrgen.ColumnReferenceContext) interface{}

VisitColumnReference \visits the node

func (*ASTBuilder) VisitComparison

func (v *ASTBuilder) VisitComparison(ctx *antlrgen.ComparisonContext) interface{}

VisitComparison visits the node

func (*ASTBuilder) VisitComparisonOperator

func (v *ASTBuilder) VisitComparisonOperator(ctx *antlrgen.ComparisonOperatorContext) interface{}

VisitComparisonOperator visits the node

func (*ASTBuilder) VisitComparisonQuantifier

func (v *ASTBuilder) VisitComparisonQuantifier(ctx *antlrgen.ComparisonQuantifierContext) interface{}

VisitComparisonQuantifier visits the node

func (*ASTBuilder) VisitConcatenation

func (v *ASTBuilder) VisitConcatenation(ctx *antlrgen.ConcatenationContext) interface{}

VisitConcatenation visits the node

func (*ASTBuilder) VisitCurrentUser

func (v *ASTBuilder) VisitCurrentUser(ctx *antlrgen.CurrentUserContext) interface{}

VisitCurrentUser visits the node

func (*ASTBuilder) VisitDecimalLiteral

func (v *ASTBuilder) VisitDecimalLiteral(ctx *antlrgen.DecimalLiteralContext) interface{}

VisitDecimalLiteral visits the node

func (*ASTBuilder) VisitDereference

func (v *ASTBuilder) VisitDereference(ctx *antlrgen.DereferenceContext) interface{}

VisitDereference visits the node

func (*ASTBuilder) VisitDigitIdentifier

func (v *ASTBuilder) VisitDigitIdentifier(ctx *antlrgen.DigitIdentifierContext) interface{}

VisitDigitIdentifier visits the node

func (*ASTBuilder) VisitDoubleLiteral

func (v *ASTBuilder) VisitDoubleLiteral(ctx *antlrgen.DoubleLiteralContext) interface{}

VisitDoubleLiteral visits the node

func (*ASTBuilder) VisitErrorNode

func (v *ASTBuilder) VisitErrorNode(node antlr.ErrorNode) interface{}

VisitErrorNode visits the node

func (*ASTBuilder) VisitExpression

func (v *ASTBuilder) VisitExpression(ctx *antlrgen.ExpressionContext) interface{}

VisitExpression visits the node

func (*ASTBuilder) VisitFilter

func (v *ASTBuilder) VisitFilter(ctx *antlrgen.FilterContext) interface{}

VisitFilter visits the node

func (*ASTBuilder) VisitFunctionCall

func (v *ASTBuilder) VisitFunctionCall(ctx *antlrgen.FunctionCallContext) interface{}

VisitFunctionCall visits the node

func (*ASTBuilder) VisitGroupBy

func (v *ASTBuilder) VisitGroupBy(ctx *antlrgen.GroupByContext) interface{}

VisitGroupBy visits the node

func (*ASTBuilder) VisitGroupingExpressions

func (v *ASTBuilder) VisitGroupingExpressions(ctx *antlrgen.GroupingExpressionsContext) interface{}

VisitGroupingExpressions visits the node

func (*ASTBuilder) VisitGroupingOperation

func (v *ASTBuilder) VisitGroupingOperation(ctx *antlrgen.GroupingOperationContext) interface{}

VisitGroupingOperation visits the node

func (*ASTBuilder) VisitInList

func (v *ASTBuilder) VisitInList(ctx *antlrgen.InListContext) interface{}

VisitInList visits the node

func (*ASTBuilder) VisitInSubquery

func (v *ASTBuilder) VisitInSubquery(ctx *antlrgen.InSubqueryContext) interface{}

VisitInSubquery visits the node

func (*ASTBuilder) VisitInlineTable

func (v *ASTBuilder) VisitInlineTable(ctx *antlrgen.InlineTableContext) interface{}

VisitInlineTable visits the node

func (*ASTBuilder) VisitIntegerLiteral

func (v *ASTBuilder) VisitIntegerLiteral(ctx *antlrgen.IntegerLiteralContext) interface{}

VisitIntegerLiteral visits the node

func (*ASTBuilder) VisitInterval

func (v *ASTBuilder) VisitInterval(ctx *antlrgen.IntervalContext) interface{}

VisitInterval visits the node

func (*ASTBuilder) VisitIntervalField

func (v *ASTBuilder) VisitIntervalField(ctx *antlrgen.IntervalFieldContext) interface{}

VisitIntervalField visits the node

func (*ASTBuilder) VisitIntervalLiteral

func (v *ASTBuilder) VisitIntervalLiteral(ctx *antlrgen.IntervalLiteralContext) interface{}

VisitIntervalLiteral visits the node

func (*ASTBuilder) VisitJoinCriteria

func (v *ASTBuilder) VisitJoinCriteria(ctx *antlrgen.JoinCriteriaContext) interface{}

VisitJoinCriteria visits the node

func (*ASTBuilder) VisitJoinRelation

func (v *ASTBuilder) VisitJoinRelation(ctx *antlrgen.JoinRelationContext) interface{}

VisitJoinRelation visits the node

func (*ASTBuilder) VisitJoinType

func (v *ASTBuilder) VisitJoinType(ctx *antlrgen.JoinTypeContext) interface{}

VisitJoinType visits the node

func (*ASTBuilder) VisitLogicalBinary

func (v *ASTBuilder) VisitLogicalBinary(ctx *antlrgen.LogicalBinaryContext) interface{}

VisitLogicalBinary visits the node

func (*ASTBuilder) VisitLogicalNot

func (v *ASTBuilder) VisitLogicalNot(ctx *antlrgen.LogicalNotContext) interface{}

VisitLogicalNot visits the node

func (*ASTBuilder) VisitNamedQuery

func (v *ASTBuilder) VisitNamedQuery(ctx *antlrgen.NamedQueryContext) interface{}

VisitNamedQuery visits the node

func (*ASTBuilder) VisitNonReserved

func (v *ASTBuilder) VisitNonReserved(ctx *antlrgen.NonReservedContext) interface{}

VisitNonReserved visits the node

func (*ASTBuilder) VisitNormalForm

func (v *ASTBuilder) VisitNormalForm(ctx *antlrgen.NormalFormContext) interface{}

VisitNormalForm visits the node

func (*ASTBuilder) VisitNullLiteral

func (v *ASTBuilder) VisitNullLiteral(ctx *antlrgen.NullLiteralContext) interface{}

VisitNullLiteral visits the node

func (*ASTBuilder) VisitNumericLiteral

func (v *ASTBuilder) VisitNumericLiteral(ctx *antlrgen.NumericLiteralContext) interface{}

VisitNumericLiteral visits the node

func (*ASTBuilder) VisitParenthesizedExpression

func (v *ASTBuilder) VisitParenthesizedExpression(ctx *antlrgen.ParenthesizedExpressionContext) interface{}

VisitParenthesizedExpression visits the node

func (*ASTBuilder) VisitParenthesizedRelation

func (v *ASTBuilder) VisitParenthesizedRelation(ctx *antlrgen.ParenthesizedRelationContext) interface{}

VisitParenthesizedRelation visits the node

func (*ASTBuilder) VisitPredicated

func (v *ASTBuilder) VisitPredicated(ctx *antlrgen.PredicatedContext) interface{}

VisitPredicated visits the node

func (*ASTBuilder) VisitQualifiedName

func (v *ASTBuilder) VisitQualifiedName(ctx *antlrgen.QualifiedNameContext) interface{}

VisitQualifiedName visits the node

func (*ASTBuilder) VisitQuantifiedComparison

func (v *ASTBuilder) VisitQuantifiedComparison(ctx *antlrgen.QuantifiedComparisonContext) interface{}

VisitQuantifiedComparison visits the node

func (*ASTBuilder) VisitQuery

func (v *ASTBuilder) VisitQuery(ctx *antlrgen.QueryContext) interface{}

VisitQuery visits the node

func (*ASTBuilder) VisitQueryNoWith

func (v *ASTBuilder) VisitQueryNoWith(ctx *antlrgen.QueryNoWithContext) interface{}

VisitQueryNoWith visits the node

func (*ASTBuilder) VisitQueryPrimaryDefault

func (v *ASTBuilder) VisitQueryPrimaryDefault(ctx *antlrgen.QueryPrimaryDefaultContext) interface{}

VisitQueryPrimaryDefault visits the node

func (*ASTBuilder) VisitQuerySpecification

func (v *ASTBuilder) VisitQuerySpecification(ctx *antlrgen.QuerySpecificationContext) interface{}

VisitQuerySpecification visits the node

func (*ASTBuilder) VisitQueryTermDefault

func (v *ASTBuilder) VisitQueryTermDefault(ctx *antlrgen.QueryTermDefaultContext) interface{}

VisitQueryTermDefault visits the node

func (*ASTBuilder) VisitQuotedIdentifier

func (v *ASTBuilder) VisitQuotedIdentifier(ctx *antlrgen.QuotedIdentifierContext) interface{}

VisitQuotedIdentifier visits the node

func (*ASTBuilder) VisitRelationDefault

func (v *ASTBuilder) VisitRelationDefault(ctx *antlrgen.RelationDefaultContext) interface{}

VisitRelationDefault visits the node

func (*ASTBuilder) VisitRowConstructor

func (v *ASTBuilder) VisitRowConstructor(ctx *antlrgen.RowConstructorContext) interface{}

VisitRowConstructor visits the node

func (*ASTBuilder) VisitSampleType

func (v *ASTBuilder) VisitSampleType(ctx *antlrgen.SampleTypeContext) interface{}

VisitSampleType visits the node

func (*ASTBuilder) VisitSampledRelation

func (v *ASTBuilder) VisitSampledRelation(ctx *antlrgen.SampledRelationContext) interface{}

VisitSampledRelation visits the node

func (*ASTBuilder) VisitSelectAll

func (v *ASTBuilder) VisitSelectAll(ctx *antlrgen.SelectAllContext) interface{}

VisitSelectAll visits the node

func (*ASTBuilder) VisitSelectSingle

func (v *ASTBuilder) VisitSelectSingle(ctx *antlrgen.SelectSingleContext) interface{}

VisitSelectSingle visits the node

func (*ASTBuilder) VisitSetOperation

func (v *ASTBuilder) VisitSetOperation(ctx *antlrgen.SetOperationContext) interface{}

VisitSetOperation visits the node

func (*ASTBuilder) VisitSetQuantifier

func (v *ASTBuilder) VisitSetQuantifier(ctx *antlrgen.SetQuantifierContext) interface{}

VisitSetQuantifier visits the node

func (*ASTBuilder) VisitSingleGroupingSet

func (v *ASTBuilder) VisitSingleGroupingSet(ctx *antlrgen.SingleGroupingSetContext) interface{}

VisitSingleGroupingSet visits the node

func (*ASTBuilder) VisitSortItem

func (v *ASTBuilder) VisitSortItem(ctx *antlrgen.SortItemContext) interface{}

VisitSortItem visits the node

func (*ASTBuilder) VisitSpecialDateTimeFunction

func (v *ASTBuilder) VisitSpecialDateTimeFunction(ctx *antlrgen.SpecialDateTimeFunctionContext) interface{}

VisitSpecialDateTimeFunction visits the node

func (*ASTBuilder) VisitSqltype

func (v *ASTBuilder) VisitSqltype(ctx *antlrgen.SqltypeContext) interface{}

VisitSqltype visits the node

func (*ASTBuilder) VisitStatementDefault

func (v *ASTBuilder) VisitStatementDefault(ctx *antlrgen.StatementDefaultContext) interface{}

VisitStatementDefault visits the node

func (*ASTBuilder) VisitStringLiteral

func (v *ASTBuilder) VisitStringLiteral(ctx *antlrgen.StringLiteralContext) interface{}

VisitStringLiteral visits the node

func (*ASTBuilder) VisitSubquery

func (v *ASTBuilder) VisitSubquery(ctx *antlrgen.SubqueryContext) interface{}

VisitSubquery visits the node

func (*ASTBuilder) VisitSubqueryExpression

func (v *ASTBuilder) VisitSubqueryExpression(ctx *antlrgen.SubqueryExpressionContext) interface{}

VisitSubqueryExpression visits the node

func (*ASTBuilder) VisitSubqueryRelation

func (v *ASTBuilder) VisitSubqueryRelation(ctx *antlrgen.SubqueryRelationContext) interface{}

VisitSubqueryRelation visits the node

func (*ASTBuilder) VisitSubscript

func (v *ASTBuilder) VisitSubscript(ctx *antlrgen.SubscriptContext) interface{}

VisitSubscript visits the node

func (*ASTBuilder) VisitTable

func (v *ASTBuilder) VisitTable(ctx *antlrgen.TableContext) interface{}

VisitTable visits the node

func (*ASTBuilder) VisitTableName

func (v *ASTBuilder) VisitTableName(ctx *antlrgen.TableNameContext) interface{}

VisitTableName visits the node

func (*ASTBuilder) VisitTerminal

func (v *ASTBuilder) VisitTerminal(node antlr.TerminalNode) interface{}

VisitTerminal visits the node

func (*ASTBuilder) VisitTimeZoneInterval

func (v *ASTBuilder) VisitTimeZoneInterval(ctx *antlrgen.TimeZoneIntervalContext) interface{}

VisitTimeZoneInterval visits the node

func (*ASTBuilder) VisitTimeZoneString

func (v *ASTBuilder) VisitTimeZoneString(ctx *antlrgen.TimeZoneStringContext) interface{}

VisitTimeZoneString visits the node

func (*ASTBuilder) VisitTypeConstructor

func (v *ASTBuilder) VisitTypeConstructor(ctx *antlrgen.TypeConstructorContext) interface{}

VisitTypeConstructor visits the node

func (*ASTBuilder) VisitTypeParameter

func (v *ASTBuilder) VisitTypeParameter(ctx *antlrgen.TypeParameterContext) interface{}

VisitTypeParameter visits the node

func (*ASTBuilder) VisitUnicodeStringLiteral

func (v *ASTBuilder) VisitUnicodeStringLiteral(ctx *antlrgen.UnicodeStringLiteralContext) interface{}

VisitUnicodeStringLiteral visits the node

func (*ASTBuilder) VisitUnquotedIdentifier

func (v *ASTBuilder) VisitUnquotedIdentifier(ctx *antlrgen.UnquotedIdentifierContext) interface{}

VisitUnquotedIdentifier visits the node

func (*ASTBuilder) VisitValueExpressionDefault

func (v *ASTBuilder) VisitValueExpressionDefault(ctx *antlrgen.ValueExpressionDefaultContext) interface{}

VisitValueExpressionDefault visits the node

func (*ASTBuilder) VisitWhenClause

func (v *ASTBuilder) VisitWhenClause(ctx *antlrgen.WhenClauseContext) interface{}

VisitWhenClause visits the node

func (*ASTBuilder) VisitWith

func (v *ASTBuilder) VisitWith(ctx *antlrgen.WithContext) interface{}

VisitWith visits the node

type ExprOrigin

type ExprOrigin int

ExprOrigin defines the expression origin

const (
	// ExprOriginWhere => the expression origin is from where clause
	ExprOriginWhere ExprOrigin = iota
	// ExprOriginJoinOn => the expression origin is from join on clause
	ExprOriginJoinOn
	// ExprOriginGroupBy => the expression origin is from groupingElement clause
	ExprOriginGroupBy
	// ExprOriginOthers => the expression origin is from other clauses case
	ExprOriginOthers
)

type SQL2AqlContext

type SQL2AqlContext struct {

	// MapQueryIdentifier is a mapping table. key=generateKey(...) value=arrayOfIdentifier.
	// Identifier can be namedQuery identifier or aliasedRelation identifier
	MapQueryIdentifier map[int]string
	// MapMeasures is a mapping table. key=generateKey(...) value=arrayOfMeasure
	MapMeasures map[int][]queryCom.Measure
	// MapDimensions is a mapping table. key=generateKey(...) value=arrayOfDimension
	MapDimensions map[int][]queryCom.Dimension
	// MapJoinTables is a mapping table. key=generateKey(...) value=arrayOfJoin
	MapJoinTables map[int][]queryCom.Join
	// MapRowFilters is a mapping table. key=generateKey(...) value=arrayOfRowFilter
	MapRowFilters map[int][]string
	// MapOrderBy is a mapping table. key=generateKey(...) value=arrayOfSortField
	MapOrderBy map[int][]queryCom.SortField
	// MapLimit is a mapping table. key=generateKey(...) value=arrayOfLimit
	MapLimit map[int]int
	// contains filtered or unexported fields
}

SQL2AqlContext is the context of ASTVisitor

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL