tsql

package
v1.0.10 Latest Latest
Warning

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

Go to latest
Published: Apr 3, 2026 License: GPL-3.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Completion

func Completion(ctx context.Context, cCtx base.CompletionContext, statement string, caretLine int, caretOffset int) ([]base.Candidate, error)

func Diagnose

func Diagnose(_ context.Context, _ base.DiagnoseContext, statement string) ([]base.Diagnostic, error)

func FlattenExecuteStatementArgExecuteStatementArgUnnamed

func FlattenExecuteStatementArgExecuteStatementArgUnnamed(ctx parser.IExecute_statement_argContext) []parser.IExecute_statement_arg_unnamedContext

FlattenExecuteStatementArgExecuteStatementArgUnnamed returns the flattened unnamed execute statement arg.

func GenerateRestoreSQL

func GenerateRestoreSQL(ctx context.Context, rCtx base.RestoreContext, statement string, backupItem *storepb.PriorBackupDetail_Item) (string, error)

func GetQuerySpan

func GetQuerySpan(
	ctx context.Context,
	gCtx base.GetQuerySpanContext,
	statement, database, schema string,
	ignoreCaseSensitive bool,
) (*base.QuerySpan, error)

GetQuerySpan returns the query span for the given statement.

func GetStatementTypes

func GetStatementTypes(asts []base.AST) ([]string, error)

func IsSystemDatabase

func IsSystemDatabase(databaseName string, caseSensitive bool) bool

func IsSystemSchema

func IsSystemSchema(schemaName string, caseSensitive bool) bool

func IsTSQLReservedKeyword

func IsTSQLReservedKeyword(keyword string, caseSensitive bool) bool

IsTSQLReservedKeyword returns true if the given keyword is a TSQL keywords.

func IsTopLevel

func IsTopLevel(ctx antlr.Tree) bool

func NormalizeTSQLIdentifier

func NormalizeTSQLIdentifier(part parser.IId_Context) (original string, lowercase string)

NormalizeTSQLIdentifier returns the normalized identifier. https://learn.microsoft.com/zh-cn/sql/relational-databases/databases/database-identifiers?view=sql-server-ver15 TODO(zp): currently, we returns the lowercase and original of the part, we may need to get the CI/CS from the server/database.

func NormalizeTSQLIdentifierText

func NormalizeTSQLIdentifierText(text string) (original string, lowercase string)

func NormalizeTSQLTableName

func NormalizeTSQLTableName(ctx parser.ITable_nameContext, fallbackDatabaseName, fallbackSchemaName string, caseSensitive bool) string

NormalizeTSQLTableName returns the normalized table name.

func ParseTSQL

func ParseTSQL(sql string) ([]*base.ParseResult, error)

ParseTSQL parses the given SQL and returns a list of ParseResult (one per statement). Use the T-SQL parser based on antlr4.

func SplitSQL

func SplitSQL(statement string) ([]base.SingleSQL, error)

SplitSQL splits the given SQL statement into multiple SQL statements.

func TransformDMLToSelect

func TransformDMLToSelect(_ context.Context, _ base.TransformContext, statement string, sourceDatabase string, targetDatabase string, tablePrefix string) ([]base.BackupStatement, error)

func ValidateSQLForEditor

func ValidateSQLForEditor(statement string) (bool, bool, error)

Types

type Completer

type Completer struct {
	// contains filtered or unexported fields
}

func NewStandardCompleter

func NewStandardCompleter(ctx context.Context, cCtx base.CompletionContext, statement string, caretLine int, caretOffset int) *Completer

func NewTrickyCompleter

func NewTrickyCompleter(ctx context.Context, cCtx base.CompletionContext, statement string, caretLine int, caretOffset int) *Completer

type CompletionMap

type CompletionMap map[string]base.Candidate

func (CompletionMap) Insert

func (m CompletionMap) Insert(entry base.Candidate)

type FullTableName

type FullTableName struct {
	LinkedServer string
	Server       string
	Database     string
	Schema       string
	Table        string
}

func NormalizeFullTableName

func NormalizeFullTableName(ctx parser.IFull_table_nameContext) (*FullTableName, error)

full_table_name

: (linkedServer=id_ '.' '.' schema=id_   '.'
|                       server=id_    '.' database=id_ '.'  schema=id_   '.'
|                                         database=id_ '.'  schema=id_? '.'
|                                                           schema=id_    '.')? table=id_
;

Rewrite full_table_name to avoid leading optional values. full_table_name

: id_ (
        dotID+
        | doubleDotID dotID?
    )?
;

For performance reason, we rewrite the full_table_name to the second form. But it's hard to get the linkedServer, server, database, schema, and table separately. So we use NormalizeFullTableName to get them.

type SelectAliasListener

type SelectAliasListener struct {
	*tsqlparser.BaseTSqlParserListener
	// contains filtered or unexported fields
}

func (*SelectAliasListener) EnterAs_column_alias

func (l *SelectAliasListener) EnterAs_column_alias(ctx *tsqlparser.As_column_aliasContext)

type StatementType

type StatementType int
const (
	StatementTypeUnknown StatementType = iota
	StatementTypeUpdate
	StatementTypeInsert
	StatementTypeDelete
)

type TableReference

type TableReference struct {
	Database      string
	Schema        string
	Table         string
	Alias         string
	StatementType StatementType
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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