rsql

package module
v0.0.0-...-91c5940 Latest Latest
Warning

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

Go to latest
Published: Aug 16, 2017 License: GPL-3.0 Imports: 22 Imported by: 0

README

A lightweight clone of Microsoft SQL Server that can execute T-SQL dialect.

Documentation

Index

Constants

View Source
const (
	MAX_UINT64 = math.MaxUint64
	MAX_INT64  = math.MaxInt64
	MIN_INT64  = math.MinInt64
)
View Source
const (
	MASTER_PATH     = "file:master.db" // for available modes, see https://www.sqlite.org/c3ref/open.html
	MASTER_PATH_RW  = MASTER_PATH + "?mode=rw"
	MASTER_PATH_RWC = MASTER_PATH + "?mode=rwc"
)
View Source
const (
	SPEC_GTABLEDEF_INDEXMAP_DEFAULT_SIZE = 4
	SPEC_GTABLEDEF_COLMAP_DEFAULT_SIZE   = 20

	SPEC_TABLEDEF_COLDEFS_SLICE_DEFAULT_CAPACITY = SPEC_GTABLEDEF_COLMAP_DEFAULT_SIZE
	SPEC_TABLEDEF_NK_SLICE_DEFAULT_CAPACITY      = 6
	SPEC_TABLEDEF_PAYLOAD_SLICE_DEFAULT_CAPACITY = SPEC_GTABLEDEF_COLMAP_DEFAULT_SIZE

	SPEC_TABLE_NUMBER_OF_COLUMNS_MAX      = 1024 // DON'T CHANGE IT, because it changes the layout of cache.Page.
	SPEC_TABLE_NUMBER_OF_INDEX_COLUMN_MAX = 11   // DON'T CHANGE IT, because it changes the layout of cache.Page. TODO mettre à 20
	SPEC_TABLE_NUMBER_OF_INDEXES_MAX      = 10   // TODO mettre à 15
)
View Source
const (
	DEFAULT_BYTE_BUFF_CAPACITY    = 50 // a good value for general purpose buffer []byte capacity
	DEFAULT_COLDEF_SLICE_CAPACITY = 10 // a good value for default capacity []*Coldef
)
View Source
const (
	THROW_MESSAGE_ID_LIMIT_LOWEST  = 50000
	THROW_MESSAGE_ID_LIMIT_HIGHEST = 2147483647
)

Range of Message_id_t for Error that THROW can create.

View Source
const (
	CTX_CANCEL_BY_EOF = iota + 1
	CTX_CANCEL_BY_TIMEOUT
	CTX_CANCEL_BY_COMMUNICATION_FAILURE
)
View Source
const (
	DATATYPE_PRECISION_BIT      = 1
	DATATYPE_PRECISION_TINYINT  = 3
	DATATYPE_PRECISION_SMALLINT = 5
	DATATYPE_PRECISION_INT      = 10
	DATATYPE_PRECISION_BIGINT   = 19
	DATATYPE_PRECISION_MONEY    = 19 // because in SQL Server, money is stored as bigint
	DATATYPE_SCALE_MONEY        = 4

	DATATYPE_NUMERIC_PRECISION_MAX           = 34                                                                   // must be equal to C.DECQUAD_Pmax (==34).  A check is done in quad.init(), and panics if value mismatch.
	DATATYPE_NUMERIC_RESULT_SCALE_MAX        = 6                                                                    // max scale of numeric result, resulting from an operator or a function.
	DATATYPE_NUMERIC_RESULT_INTEGRALPART_MAX = (DATATYPE_NUMERIC_PRECISION_MAX - DATATYPE_NUMERIC_RESULT_SCALE_MAX) // max integral part size of numeric result, resulting from an operator or a function.

	DATATYPE_VARBINARY_PRECISION_MAX = 8000 // max precision for binary and varbinary, in bytes.
	DATATYPE_VARCHAR_PRECISION_MAX   = 8000 // max precision for char and varchar
	DATATYPE_NVARCHAR_PRECISION_MAX  = 4000 // max precision for nchar and nvarchar
)

for numbers, precision is the number of significant digits (but '-' sign is not included)

View Source
const (
	DATATYPE_ILLEGAL Datatype_t = iota // illegal datatype of value 0, never used

	DATATYPE_VOID // _void. Used for NULL literal.

	DATATYPE_SYSCOLLATOR // internal datatype, containing information for collation
	DATATYPE_SYSLANGUAGE // internal datatype, containing information for date and number formatting

	DATATYPE_BOOLEAN // _bool. Internal datatype, used for boolean operations.

	DATATYPE_BINARY    // BINARY. Not implemented.
	DATATYPE_VARBINARY // VARBINARY
	DATATYPE_IMAGE     // IMAGE. Not implemented.

	DATATYPE_CHAR    // CHAR. The decorator module will convert CHAR to VARCHAR with fixlen_flag = true.
	DATATYPE_VARCHAR // VARCHAR with fixlen_flag = false.
	DATATYPE_TEXT    // TEXT. Not implemented.

	DATATYPE_NCHAR    // NCHAR. Always converted to CHAR.
	DATATYPE_NVARCHAR // NVARCHAR. Always converted to VARCHAR.
	DATATYPE_NTEXT    // NTEXT. Always converted to TEXT.

	DATATYPE_REGEXPLIKE // internal datatype, containing regular expression. Used by LIKE operator.

	DATATYPE_BIT      // BIT
	DATATYPE_TINYINT  // TINYINT
	DATATYPE_SMALLINT // SMALLINT
	DATATYPE_INT      // INT
	DATATYPE_BIGINT   // BIGINT

	DATATYPE_SMALLMONEY // SMALLMONEY. Always converted to MONEY.
	DATATYPE_MONEY      // MONEY

	DATATYPE_DECIMAL // DECIMAL. Always convered to NUMERIC.
	DATATYPE_NUMERIC // NUMERIC

	DATATYPE_REAL  // REAL. Always converted to FLOAT.
	DATATYPE_FLOAT // FLOAT

	DATATYPE_DATE          // DATE
	DATATYPE_TIME          // TIME
	DATATYPE_SMALLDATETIME // SMALLDATETIME. Always converted to DATETIME.
	DATATYPE_DATETIME      // DATETIME
	DATATYPE_DATETIME2     // DATETIME2. Always converted to DATETIME.

	DATATYPE_CHARACTER // same as CHAR
	DATATYPE_INTEGER   // same as INT
	DATATYPE_DEC       // same as DECIMAL
	DATATYPE_DOUBLE    // same as FLOAT. Must be followed by PRECISION.

	DATATYPE_ARRAYSIZE uint = uint(DATATYPE_DATETIME) + 1 // number of datatypes, used for G_SQL_DATATYPE_CAST_INSTRUCTION_CODE[][] array dimensions. DATETIME is the highest used datatype.
)

'boolean' datatype does not exist in MS SQL Server, nor 'void' datatype for NULL literal. They are used internally. IMPORTANT: The order of these datatypes is important AND SHOULD NOT BE CHANGED, as these values are used when decorating operators to find the "winning" datatype among multiple operands.

E.g.    10 + 12.3        When an "int" and a "numeric" are added, the "int" operand is cast to a "numeric" datatype, and the "+" operator will add two "numeric" values.
View Source
const (
	DIR_PERM         = 0775
	TBLFILE_PERM     = 0664
	JOURNALFILE_PERM = 0664
	BULKDIR_PERM     = 0777
	DUMPDIR_PERM     = 0777
	TEMPDIR_PERM     = 0777

	DIRECTORY_DATA     = "data" // if a new directory used by the server is added, you must also change Check_forbidden_file_path function
	DIRECTORY_INDEX    = "index"
	DIRECTORY_JOURNALS = "journals"
	DIRECTORY_LOGGING  = "logging"
	DIRECTORY_BULKDIR  = "bulkdir"
	DIRECTORY_DUMPDIR  = "dumpdir"
	DIRECTORY_TEMPDIR  = "tempdir"

	JOURNAL_FILENAME_PREFIX    = "journal_"
	JOURNAL_FILENAME_EXTENSION = ".jrnl"

	NORMAL_FILE_PERM          = 0664
	VERSION_FILENAME          = "version"
	LISTENER_ADDRESS_FILENAME = "listener_address.cfg"
)
View Source
const DEFAULT_MESSAGE_LOCALE = "en_us"
View Source
const ELLIPSIS_TRUNCATION_LIMIT_DEFAULT = 50 // used for Truncate_string_with_ellipsis() and Truncate_bytes_with_ellipsis()
View Source
const FIELD_OFFSET_SIZE = 2 // offsets in tuple header are uint16
View Source
const ROWID = "rowid"
View Source
const ROWID_INTERNAL = "$rowid$" // rowid column name for grouptable and sorttable
View Source
const SPEC_ERROR_PRINT_BACKTRACE bool = false // if true, backtrace will be output by this function
View Source
const TRASHDB = "trashdb"
View Source
const VERSION = "0.7.1"

Variables

View Source
var CATEGORY_MAP = map[Category_id_t]string{
	ERROR_GENERAL:    "ERROR_GENERAL",
	ERROR_ARITH:      "ERROR_ARITH",
	ERROR_SQL_SYNTAX: "ERROR_SQL_SYNTAX",
	ERROR_RESOURCE:   "ERROR_RESOURCE",
	ERROR_DICT:       "ERROR_DICT",
	ERROR_STORAGE:    "ERROR_STORAGE",
	ERROR_PERMISSION: "ERROR_PERMISSION",
	ERROR_DICT_FATAL: "ERROR_DICT_FATAL",
	ERROR_UNEXPECTED: "ERROR_UNEXPECTED",
}

CATEGORY_MAP is a static map, to get the string representation of a Category_t.

View Source
var Check_column_not_null func(context *Context, gtabledef *GTabledef, column_name string) *Error

Check_column_not_null contains a function defined in rsql/csr, but used in rsql/dict. This variable is created here to avoid circular import issue.

View Source
var Execute_basicblock func(context *Context, basicblock *Basicblock) (retval int64, rsql_err *Error)

pointer to vm.Execute_basicblock, needed to avoid circular import. Indeed, rsql/csr cursors need to call this function to evaluate ON and WHERE clauses, but vm already imports csr.

View Source
var Fill_index_with_records func(context *Context, table_qname Object_qname_t, gtabledef *GTabledef, indexdef *Tabledef) *Error

Fill_index_with_records contains a function defined in rsql/stmt, but used in rsql/dict. This variable is created here to avoid circular import issue.

View Source
var G_BATCH_INSERTS_MAX_COUNT int
View Source
var G_BATCH_TEXT_MAX_SIZE int

If too large, there is a risk that too much memory will be used by the batch for all the Token_primaries, which size is more than 300 bytes. This value is sent to the client, which stores it in session.server_batch_text_max_size when connection is established.

View Source
var G_COLLATION_MAP = map[string]string{
	"aa":      "aa",
	"af":      "af",
	"ar":      "ar",
	"as":      "as",
	"az":      "az",
	"be":      "be",
	"bg":      "bg",
	"bn":      "bn",
	"bs":      "bs",
	"bs_cyrl": "bs-Cyrl",
	"ca":      "ca",
	"cs":      "cs",
	"cy":      "cy",
	"da":      "da",
	"de":      "de",
	"dz":      "dz",
	"ee":      "ee",
	"el":      "el",
	"en":      "en",
	"eo":      "eo",
	"es":      "es",
	"et":      "et",
	"fa":      "fa",
	"fa_af":   "fa-AF",
	"fi":      "fi",
	"fil":     "fil",
	"fo":      "fo",
	"fr":      "fr",
	"fr_ca":   "fr-CA",
	"gu":      "gu",
	"ha":      "ha",
	"haw":     "haw",
	"he":      "he",
	"hi":      "hi",
	"hr":      "hr",
	"hu":      "hu",
	"hy":      "hy",
	"ig":      "ig",
	"is":      "is",
	"ja":      "ja",
	"kk":      "kk",
	"kl":      "kl",
	"km":      "km",
	"kn":      "kn",
	"ko":      "ko",
	"kok":     "kok",
	"ln":      "ln",
	"lt":      "lt",
	"lv":      "lv",
	"mk":      "mk",
	"ml":      "ml",
	"mr":      "mr",
	"mt":      "mt",
	"my":      "my",
	"nb":      "nb",
	"nn":      "nn",
	"nso":     "nso",
	"om":      "om",
	"or":      "or",
	"pa":      "pa",
	"pl":      "pl",
	"ps":      "ps",
	"ro":      "ro",
	"ru":      "ru",
	"se":      "se",
	"si":      "si",
	"sk":      "sk",
	"sl":      "sl",
	"sq":      "sq",
	"sr":      "sr",
	"sr_latn": "sr-Latn",
	"ssy":     "ssy",
	"sv":      "sv",
	"ta":      "ta",
	"te":      "te",
	"th":      "th",
	"tn":      "tn",
	"to":      "to",
	"tr":      "tr",
	"uk":      "uk",
	"ur":      "ur",
	"vi":      "vi",
	"wae":     "wae",
	"yo":      "yo",
	"zh":      "zh",
	"zh_hant": "zh-Hant",
}

rsql collation name to golang collation name.

NOTE: "bs_cyrl" is mapped to "bs-Cyrl". Notice the underscore, replaced by a hyphen in the mapping. Same for "fr_ca" etc.

This map is created from the list of locales returned by function Supported(), in package "code.google.com/p/go.text/collate".

VERSION OF COLLATION DATA:
      In file code.google.com/p/go.text/collate/tables.go, it is written that the collation table was created by running:
      maketables -root=http://unicode.org/Public/UCA/6.2.0/CollationAuxiliary.zip -cldr=http://www.unicode.org/Public/cldr/23/core.zip

      In 2015, all packages in code.google.com/p/ have been migrated to golang.org/x/.

      In file golang.org/x/text/collate/collate.go, it is written:
      go:generate go run maketables.go -cldr=23 -unicode=6.2.0

If a collation is not listed here, like italian "it", it means it is the same as "en" collation.

TODO
THIS PROBLEM WILL BE SOLVED WHEN TABLES WILL BE CREATED WITH CLDR VERSION 25. WE JUST HAVE TO WAIT.
Indeed, in cldr release 25, all missing collations like "it" have been added, with empty body:
In http://unicode.org/cldr/trac/browser/tags/release-25/common/collation/it.xml, as it is written "The root collation order is valid for this language".
View Source
var G_DATATYPES = map[string]Datatype_t{
	"binary":    DATATYPE_BINARY,
	"varbinary": DATATYPE_VARBINARY,
	"image":     DATATYPE_IMAGE,

	"char":    DATATYPE_CHAR,
	"varchar": DATATYPE_VARCHAR,
	"text":    DATATYPE_TEXT,

	"nchar":    DATATYPE_NCHAR,
	"nvarchar": DATATYPE_NVARCHAR,
	"ntext":    DATATYPE_NTEXT,

	"bit":      DATATYPE_BIT,
	"tinyint":  DATATYPE_TINYINT,
	"smallint": DATATYPE_SMALLINT,
	"int":      DATATYPE_INT,
	"bigint":   DATATYPE_BIGINT,

	"smallmoney": DATATYPE_SMALLMONEY,
	"money":      DATATYPE_MONEY,

	"decimal": DATATYPE_DECIMAL,
	"numeric": DATATYPE_NUMERIC,

	"real":  DATATYPE_REAL,
	"float": DATATYPE_FLOAT,

	"date":          DATATYPE_DATE,
	"time":          DATATYPE_TIME,
	"smalldatetime": DATATYPE_SMALLDATETIME,
	"datetime":      DATATYPE_DATETIME,
	"datetime2":     DATATYPE_DATETIME2,

	"character": DATATYPE_CHAR,
	"integer":   DATATYPE_INT,
	"dec":       DATATYPE_DECIMAL,

	"double": DATATYPE_DOUBLE,
}

G_DATATYPES map contains datatypes, that can be used in DECLARE statement.

This means that internal datatypes such as DATATYPE_VOID or DATATYPE_BOOLEAN should not be put in this map.
View Source
var G_DEBUG_FLAG bool // set by the -debug option
View Source
var G_LISTENER_ADDRESS string
View Source
var G_LIST_OF_RSQL_COLLATIONS_FOR_DISPLAY string
View Source
var G_SERVERNAME string
View Source
var G_SERVER_DEFAULT_COLLATION string
View Source
var G_server_shutdown_flag uint32 // if >0, normal shutdown, waiting for sessions to finish their work
View Source
var MESSAGE_MAP = map[Message_id_t]string{}/* 529 elements not displayed */

MESSAGE_MAP is a static map, to get the string representation of a Message_t.

View Source
var MESSAGE_MAP_TEXT_LOCALE_ROOT = map[Message_id_t]string{}/* 529 elements not displayed */

MESSAGE_LOCALE_ROOT is a static map, containing text messages (format string) for Error.

View Source
var PRIMES_SAMPLES = []uint32{
	53,
	97,
	193,
	389,
	769,
	1543,
	3079,
	6151,
	12289,
	24593,
	49157,
	98317,
	196613,
	393241,
	786433,
	1572869,
	3145739,
	6291469,
	12582917,
	25165843,
	50331653,
	100663319,
	201326611,
	402653189,
	805306457,
	1610612741}

list of prime numbers

View Source
var Param_read_timeout int64 // in seconds
View Source
var SEVERITY_MAP = map[Severity_id_t]string{
	ERROR_IS_WARNING:    "ERROR_IS_WARNING",
	ERROR_BATCH_ABORT:   "ERROR_BATCH_ABORT",
	ERROR_SESSION_ABORT: "ERROR_SESSION_ABORT",
	ERROR_SERVER_ABORT:  "ERROR_SERVER_ABORT",
}

SEVERITY_MAP is a static map, to get the string representation of a Severity_t.

View Source
var WINDOWS_TO_COLLATION_MAP = map[string]string{
	"latin1_general":       "en",
	"latin1_general_100":   "en",
	"cyrillic_general":     "ru",
	"cyrillic_general_100": "ru",

	"afar":                "aa",
	"afrikaans":           "af",
	"arabic":              "ar",
	"assamese":            "as",
	"azeri":               "az",
	"belarusian":          "be",
	"bulgarian":           "bg",
	"bengali":             "bn",
	"bosnian_latin":       "bs",
	"bosnian_cyrillic":    "bs_cyrl",
	"catalan":             "ca",
	"czech":               "cs",
	"welsh":               "cy",
	"danish":              "da",
	"german":              "de",
	"dzongkha":            "dz",
	"ewe":                 "ee",
	"greek":               "el",
	"english":             "en",
	"esperanto":           "eo",
	"spanish":             "es",
	"estonian":            "et",
	"persian":             "fa",
	"dari":                "fa_af",
	"finnish":             "fi",
	"filipino":            "fil",
	"faroese":             "fo",
	"french":              "fr",
	"french_ca":           "fr_ca",
	"gujarati":            "gu",
	"hausa":               "ha",
	"hawaiian":            "haw",
	"hebrew":              "he",
	"hindi":               "hi",
	"croatian":            "hr",
	"hungarian":           "hu",
	"armenian":            "hy",
	"igbo":                "ig",
	"icelandic":           "is",
	"japanese":            "ja",
	"kazakh":              "kk",
	"kalaallisut":         "kl",
	"khmer":               "km",
	"kannada":             "kn",
	"korean":              "ko",
	"konkani":             "kok",
	"lingala":             "ln",
	"lithuanian":          "lt",
	"latvian":             "lv",
	"macedonian":          "mk",
	"malayalam":           "ml",
	"marathi":             "mr",
	"maltese":             "mt",
	"burmese":             "my",
	"norwegian_bokmål":    "nb",
	"norwegian_nynorsk":   "nn",
	"northern_sotho":      "nso",
	"oromo":               "om",
	"oriya":               "or",
	"punjabi":             "pa",
	"polish":              "pl",
	"pashto":              "ps",
	"romanian":            "ro",
	"russian":             "ru",
	"northern_sami":       "se",
	"sinhala":             "si",
	"slovak":              "sk",
	"slovenian":           "sl",
	"albanian":            "sq",
	"serbian_cyrillic":    "sr",
	"serbian_latin":       "sr_latn",
	"saho":                "ssy",
	"swedish":             "sv",
	"tamil":               "ta",
	"telugu":              "te",
	"thai":                "th",
	"tswana":              "tn",
	"tongan":              "to",
	"turkish":             "tr",
	"ukrainian":           "uk",
	"urdu":                "ur",
	"vietnamese":          "vi",
	"walser":              "wae",
	"yoruba":              "yo",
	"chinese_prc":         "zh",
	"chinese_traditional": "zh_hant",
}

collation full names, that are aliases for the short rsql collation names

Functions

func Assert

func Assert(a bool)

func Backtrace

func Backtrace() []byte

Backtrace returns a slice of bytes, containing the full backtrace. You can use string(base.Backtrace()) to convert the returned result to string.

func Check_version

func Check_version(version_string string) bool

func Datatype_shortdef

func Datatype_shortdef(datatype Datatype_t, precision uint16, scale uint16, fixlen_flag bool) string

Datatype_shortdef returns the datatype string, with precision and scale if needed. sql_datatype can be DATATYPE_CHAR (in this case, fixlen_flag is ignored).

func Db_path

func Db_path(prefix_path string, dbid int64) string

func Directory_exists

func Directory_exists(path string) bool

func File_exists

func File_exists(path string) bool

func Get_uint64

func Get_uint64(bytes []byte) uint64

func Joaat_hash

func Joaat_hash(bytes []byte) uint32

joaat_hash computes a hash value of a byte string. It uses Jenkins One-at-a-Time Hash algorithm.

func Joaat_hash_str

func Joaat_hash_str(str string) uint32

func Journal_path

func Journal_path(prefix_path string, journal_id int64) string

func Keyname2coldef_list

func Keyname2coldef_list(gtabledef *GTabledef, keyname_list []string) ([]*Coldef, *Error)

func Max_int

func Max_int(a int, b int) int

func Min_int

func Min_int(a int, b int) int

func Must_create_and_open_flashfile

func Must_create_and_open_flashfile(prefix string) *os.File

func Must_create_directory

func Must_create_directory(path string, perm os.FileMode)

func Must_create_ordinary_file

func Must_create_ordinary_file(filename string, content string)

func Must_create_tabledef_file

func Must_create_tabledef_file(path string, perm os.FileMode)

func Must_read_ordinary_file

func Must_read_ordinary_file(filename string) (content string)

func Must_remove_directory_all

func Must_remove_directory_all(path string)

Must_remove_directory_all removes all subdirectories and files in path, and path itself. If path doesn't exist, no error is returned.

func Must_remove_directory_content

func Must_remove_directory_content(dir string)

func Must_remove_existing_file

func Must_remove_existing_file(path string)

Must_remove_existing_file removes path file. If path doesn't exist, panics.

func Must_remove_file

func Must_remove_file(path string)

Must_remove_file removes path file. If path doesn't exist, no error is returned.

func Must_remove_tabledef_file

func Must_remove_tabledef_file(path string)

Must_remove_tabledef_file removes path file. If path doesn't exist, no error is returned.

func Prime_for_hashtable

func Prime_for_hashtable(count_of_elements uint32) uint32

func Printf

func Printf(format string, a ...interface{}) (n int, err error)

Printf just calls fmt.Printf. It is just a convenience function for debugging purpose, to avoid putting 'import "fmt"' in files that don't already import "fmt".

func Println

func Println(a ...interface{}) (n int, err error)

Println just calls fmt.Println. It is just a convenience function for debugging purpose, to avoid putting 'import "fmt"' in files that don't already import "fmt".

func Read_int64

func Read_int64(s string, separator byte) (result int64, tail string, err error)

Read_int64 returns the first integer read in string s. s is a series of integer separated by separator. Blanks characters are skipped. E.g. "35,7 , 675 "

This function is simple and can only read integers with <= 18 digits, to avoid int64 overflow. Else, it panics.
It is not a problem as it is used to read column numbers.

func Read_string_from_file

func Read_string_from_file(filename string) (content string, err error)

func Rtrim

func Rtrim(s string) string

func Schema_path

func Schema_path(prefix_path string, dbid int64, schid int64) string

func Set_uint64

func Set_uint64(bytes []byte, v uint64)

func Tabledef_path

func Tabledef_path(prefix_path string, dbid int64, schid int64, tblid int64) (path string)

func Truncate_bytes

func Truncate_bytes(a []byte, n int) []byte

func Truncate_bytes_with_ellipsis

func Truncate_bytes_with_ellipsis(a []byte, n int) []byte

Truncate_bytes_with_ellipsis returns the argument, truncated at n bytes with ellipsis appended. You can use ELLIPSIS_TRUNCATION_LIMIT_DEFAULT for n.

func Truncate_string

func Truncate_string(a string, n int) string

func Truncate_string_with_ellipsis

func Truncate_string_with_ellipsis(a string, n int) string

Truncate_string_with_ellipsis returns the argument, truncated at n bytes with ellipsis appended. You can use ELLIPSIS_TRUNCATION_LIMIT_DEFAULT for n.

func Write_error_msgp

func Write_error_msgp(mw *msgp.Writer, rsql_err *Error)

Types

type AnyINT

type AnyINT interface {
	IDataslot

	Data_val() int64
}

type Backup_params

type Backup_params struct {
	Bk_server_default_collation string // sorting order for SHOW output
}

Params for BACKUP DATABASE statement.

type Basicblock

type Basicblock struct {
	Bb_instr3ac_list []Instr3ac // List of instructions. It is allowed to have many jumps out of the basic block anywhere in the instruction list. The list may be NULL, for BEGIN..END block with only pragma e.g. DEBUG TABLE_LOCK_FREEZE.
	Bb_jump_target   *Basicblock
	Bb_return_value  int64 // return value, when a RETURN or EXIT statement is encountered.
}

type Bulk_export_params

type Bulk_export_params struct {
	Be_opt_codepage        string
	Be_opt_rowterminator   string
	Be_opt_fieldterminator string
	Be_opt_date_format     string // if "", it is the default
	Be_opt_time_format     string // if "", it is the default
	Be_opt_datetime_format string // if "", it is the default
}

Params for BULK EXPORT

type Bulk_insert_params

type Bulk_insert_params struct {
	Bi_opt_codepage        string
	Bi_opt_rowterminator   string
	Bi_opt_fieldterminator string
	Bi_opt_firstrow        uint64
	Bi_opt_lastrow         uint64
	Bi_opt_keepidentity    bool
	Bi_opt_rtrim           bool
}

Params for BULK INSERT

type Category_id_t

type Category_id_t uint32

Category_t is the category id of an Error.

const (
	ERROR_GENERAL Category_id_t = iota + 10
	ERROR_ARITH
	ERROR_SQL_SYNTAX
	ERROR_RESOURCE
	ERROR_DICT
	ERROR_STORAGE
	ERROR_PERMISSION
	ERROR_DICT_FATAL
	ERROR_UNEXPECTED
)

Constants for Category_t

func (Category_id_t) String

func (category_id Category_id_t) String() string

type Cd_autonum_t

type Cd_autonum_t uint8
const (
	CD_AUTONUM_NONE     Cd_autonum_t = 0 // CD_AUTONUM_NONE must be 0
	CD_AUTONUM_ROWID    Cd_autonum_t = 1 // must be power of two
	CD_AUTONUM_IDENTITY Cd_autonum_t = 2 //   same
)

type Coldef

type Coldef struct {
	Cd_colname          string
	Cd_colname_original string // original cased, for display usage

	Cd_datatype           Datatype_t
	Cd_precision          uint16
	Cd_scale              uint16
	Cd_fixlen_flag        bool
	Cd_collation_strength Collstrength_t // for VARCHAR, always COLLSTRENGTH_1
	Cd_collation          string         // for VARCHAR, never ""

	Cd_autonum       Cd_autonum_t // CD_AUTONUM_NONE, CD_AUTONUM_ROWID, CD_AUTONUM_IDENTITY
	Cd_NOT_NULL_flag bool         // false if NULL allowed, else true

	Cd_base_seqno uint16 // seqno of the base table
}

func (*Coldef) Clone

func (coldef *Coldef) Clone() *Coldef

func (*Coldef) Exists_in

func (coldef *Coldef) Exists_in(coldef_list []*Coldef) bool

type Collstrength_t

type Collstrength_t uint8
const (
	COLLSTRENGTH_0 Collstrength_t = 0 // default collation
	COLLSTRENGTH_1 Collstrength_t = 1 // for collation of table columns
	COLLSTRENGTH_2 Collstrength_t = 2 // COLLATE clause
)

type Context

type Context struct {
	Ctx_login_id            int64  // immutable. During the execution of a batch, the real login can be dropped by the batch itself, or by another batch being executed concurrently.
	Ctx_login_name_for_info string // immutable

	Ctx_worker_id uint32
	Ctx_conn      net.Conn
	Ctx_mw        *msgp.Writer
	Ctx_cancel    int32 // if client closes the connection, or timeout, or communication failure, this field indicates that the session must terminate.

	Ctx_scratch   []byte  // just a scratch buffer used for transient usage by some functions
	Ctx_wcache    IWcache // private write-cache. Stored type is *cache.Wcache. It is stored in an interface to avoid circular import error.
	Ctx_trancount int     // BEGIN TRANSACTION increments this counter. When COMMIT is encountered, if > 1: decrement counter; if 1: make changes permanent and decrement counter; else, raise error.
	Ctx_nocount   bool    // SET NOCOUNT sets this flag. Specifies whether VM sends rowcount info to client.
}

Context allows the session to pass the output stream, error stream, and credential, to the VM and instructions.

func New_context

func New_context(login_id int64, login_name_for_info string) *Context

New_context creates a new Context, to transmit important information to the VM.

func (*Context) Check_keepalive

func (context *Context) Check_keepalive() (rsql_err *Error)

Check_keepalive checks if keepalive signal has timed out.

func (*Context) Clear_for_new_batch

func (context *Context) Clear_for_new_batch()

func (*Context) Send_MESSAGE

func (context *Context) Send_MESSAGE(format string, a ...interface{}) *Error

Send_MESSAGE sends a string as RESTYP_MESSAGE.

func (*Context) Send_MESSAGE_no_flush

func (context *Context) Send_MESSAGE_no_flush(format string, a ...interface{}) *Error

Send_MESSAGE sends a string as RESTYP_MESSAGE, but doesn't flush. You must call context.Writer_flush() yourself.

func (*Context) Send_MESSAGE_or_panic

func (context *Context) Send_MESSAGE_or_panic(format string, a ...interface{})

Send_MESSAGE_or_panic sends a string as RESTYP_MESSAGE. If error occurs because connection failed, panics.

**** WARNING ****
This function is used only in ast/debug_print_ast.go, because wrapping each call with "if err = ...; err != nil { return err }" would make the code less clear.
But "panic" must be trapped by "recover", in this case by ast.Debug_print_AST.

func (*Context) Send_warning

func (context *Context) Send_warning(rsql_err *Error) *Error

Send_warning sends a string as RESTYP_MESSAGE.

Argument rsql_err must have field Severity_id == ERROR_IS_WARNING.

func (*Context) Set_last_rowcount

func (context *Context) Set_last_rowcount(val int64)

func (*Context) Writer_error

func (context *Context) Writer_error() *Error

Writer_error returns the error state of the messagepack Writer.

func (*Context) Writer_flush

func (context *Context) Writer_flush() *Error

Writer_flush flushes the Writer context.Ctx_mw into the connection.

type Datatype_t

type Datatype_t uint16

func (Datatype_t) Is_allowed_select_column

func (datatype Datatype_t) Is_allowed_select_column() bool

Is_allowed_select_column returns true if datatype is allowed in SELECT column.

func (Datatype_t) String

func (sql_datatype Datatype_t) String() string

String returns the datatype name. It is used to display datatype name when ERROR_INVALID_SYNTAX_CAST_NOT_ALLOWED occurs.

type Dump_params

type Dump_params struct {
	Dp_database_name   string
	Dp_option_DDL_ONLY bool
	Dp_filename        string

	Dp_server_default_collation string
}

type Durability_t

type Durability_t uint8
const (
	DURABILITY_PERMANENT Durability_t = iota // normal table, with records stored in its own permanent data file, and modifications are logged in main journal.
	DURABILITY_TEMPORARY                     // not implemented yet. Temporary #table, with records stored in its own temporary data file, and modifications are logged in temporary journal.
	DURABILITY_FLASH                         // variable @table or system generated table, e.g. $grouptable$, with records living as TRANSITORY in temporary journal, until the session terminates. System generated table is discarded as soon as it has been read. Is not affected by COMMIT or ROLLBACK.
)

func (Durability_t) String

func (durability Durability_t) String() string

type Error

type Error struct {
	Source_filename string // source file of the error
	Source_line_no  int    // source file line number of the error
	Source_funcname string // source file function that triggered the error

	Category_id        Category_id_t // category id
	Message_id         Message_id_t  // message id. If >= THROW_MESSAGE_ID_BASE, the Error has been created by THROW.
	Message_fmt_string string        // message format string. Normally, it is MESSAGE_MAP_TEXT_LOCALE_ROOT[Message_id], except for THROW which overrides this field
	Message_args       []interface{} // arguments used by format string Message_fmt_string
	Severity_id        Severity_id_t // severity id
	State              State_t       // state (default is 1. Only THROW can pass another value)

	Batch_line_no  uint32 // line no in SQL batch. Filled out by the parser, decorator, VM, etc, when an error occurs during one of these processing steps.
	Batch_line_pos uint32 // position in line. See Batch_line_no.
	// contains filtered or unexported fields
}

Error is created when an error occurs in RSQL.

func Check_forbidden_file_path

func Check_forbidden_file_path(file_path string) *Error

Check_forbidden_file_path returns an error if the path is in a directory reserved for server use.

func Get_collator

func Get_collator(collation_string string) (*collate.Collator, *Error)

get_collator creates a new Collator from string.

collation must be a supported locale, with a suffix like "_cs_as", or an error is returned.

2014.03.19 text/collate package is still buggy.

Normally, with a collator with Strength = colltab.Primary and CaseLevel = true, 'role' == 'rôle', because comparison is accent insensitive and case sensitive.
But text/collate.CompareString('role', 'rôle') gives -1.

That's why we only allow Primary, Secondary and Tertiary Strength. CaseLevel setting is not used, as it is buggy.

func New_Error

func New_Error(category_id Category_id_t, message_id Message_id_t, severity_id Severity_id_t, message_args ...interface{}) *Error

New_Error returns a pointer to a new Error object. You can pass optional arguments (message_args) that will be stored in the Error object. They will be used for formatting with MESSAGE_LOCALE_ROOT map.

func New_Error_SQLITE_ABORT

func New_Error_SQLITE_ABORT(err error) *Error

func Normalize_collation

func Normalize_collation(collation_str string) (string, *Error)

Normalize_collation returns the normalized version of a collation string. For e.g. "French_cs_as", "FR_CS_AS", the string "fr_cs_as" is returned. For "French_CA_ci_ai", "fr_ca_ci_ai" is returned.

Returns error if invalid collation.

func (*Error) Error

func (rsql_err *Error) Error() string

func (*Error) Error_short

func (rsql_err *Error) Error_short() string

func (*Error) More_info

func (rsql_err *Error) More_info(more_fmt_string string, more_args ...interface{})

More_info adds some accessory info to a rsql.Error object received from higher level at which it originated. Sometimes, we want to add a little bit more information to this rsql.Error.

E.g. when a parsing error occurs during BULK INSERT, it is nice to have also the line number of import file which caused the error.

type GTabledef

type GTabledef struct {
	Gtblid int64

	Gdbid                int64
	Gschid               int64
	Gtable_name          string // table name
	Gtable_name_original string // original cased, for display usage

	Base     *Tabledef            // CLUSTERED base table (for base table, Td_tblid == Td_base_gtblid == Gtblid)
	Indexmap map[string]*Tabledef // contains all NONCLUSTERED index tables
	Colmap   map[string]*Coldef

	Identity_seed      int64
	Identity_increment int64 // if increment not 0, a column has the property Cd_autonum==CD_AUTONUM_IDENTITY

	Create_date time.Time // creation time
}

func New_GTabledef

func New_GTabledef() *GTabledef

func (*GTabledef) Clone

func (gtabledef *GTabledef) Clone() *GTabledef

func (*GTabledef) Get_any_invalid_Tabledef

func (gtabledef *GTabledef) Get_any_invalid_Tabledef() *Tabledef

Get_any_invalid_Tabledef returns the first non TD_STATUS_VALID Tabledef. Returs nil if all Tabledefs are TD_STATUS_VALID.

func (*GTabledef) Has_IDENTITY_column

func (gtabledef *GTabledef) Has_IDENTITY_column() bool

func (*GTabledef) Modify_native_key

func (gtabledef *GTabledef) Modify_native_key(index_name string, index_name_original string, index_type Td_index_type_t, keyname_list []string) *Error

Modify_native_key changes the native key of gtabledef. It modifies all indexes, so all Tabledefs in gtabledef are modified.

*** IMPORTANT *** If error, gtabledef is in a garbage state. YOU MUST ALWAYS PASS A CLONE OF gtabledef AS RECEIVER, so that you can discard it if the function returns an error.

                  Also note that the tblid of all Tabledefs are not changed, but they are useless, as CREATE TABLE will overwrite them with new values.

func (*GTabledef) Primary_key

func (gtabledef *GTabledef) Primary_key() (tabledef_pk *Tabledef)

type GTabledefs_by_name

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

GTabledefs_by_name is used to sort a list of *GTabledefs by alphabetical order.

func New_GTabledefs_by_name

func New_GTabledefs_by_name(lst []*GTabledef, coll *collate.Collator) *GTabledefs_by_name

func (*GTabledefs_by_name) Len

func (list *GTabledefs_by_name) Len() int

func (*GTabledefs_by_name) Less

func (list *GTabledefs_by_name) Less(i, j int) bool

func (*GTabledefs_by_name) Swap

func (list *GTabledefs_by_name) Swap(i, j int)

type IDataslot

type IDataslot interface {
	Datatype() Datatype_t
	Kind() Kind_t
	Set_kind(Kind_t)
	Error() *Error
	Set_Error(*Error)
	NULL_flag() bool
	Set_to_NULL()
	RO_LEAF_hashval() uint32
	String() string
}

IDataslot is the interface that can receive all datatypes, e.g. data.VARCHAR, data.INT, data.NUMERIC, data.DATETIME, etc.

type IWcache

type IWcache interface {
	Set_last_rowcount(int64)
}

type Indexes_by_name

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

Indexes_by_name is used to sort a list of index *Tabledefs by alphabetical order.

func New_Indexes_by_name

func New_Indexes_by_name(lst []*Tabledef, coll *collate.Collator) *Indexes_by_name

func (*Indexes_by_name) Len

func (list *Indexes_by_name) Len() int

func (*Indexes_by_name) Less

func (list *Indexes_by_name) Less(i, j int) bool

func (*Indexes_by_name) Swap

func (list *Indexes_by_name) Swap(i, j int)

type Insert_select_params

type Insert_select_params struct {
	Ins_cursor                     interface{} // always csr.Cursor. But we cannot declare it here, because of circular import.
	Ins_conversion_basicblock      *Basicblock
	Ins_base_row                   []IDataslot // row to insert
	Ins_explicit_IDENTITY_provided bool
}

Params for INSERT INTO ... SELECT

type Instr3ac

type Instr3ac struct {
	Batch_line_no  uint32
	Batch_line_pos uint32 // uint32 is good enough and smaller than lex.Txtdim_t, which is int64.
	Code           Instrcode_t
	Arg0           interface{} // arguments to the instruction. Usually, *Data_INT, etc. May also be []*INT, etc. May be *Lexeme. But for jump, it is pointers to Basicblock.
	Arg1           interface{} // same
	Arg2           interface{} // same
	Arg3           interface{} // same
	Arg4           interface{} // same
}

type Instrcode_t

type Instrcode_t uint16
const (
	INSTR_CAST_ILLEGAL Instrcode_t = iota // must be 0, so that in G_SQL_DATATYPE_CAST_INSTRUCTION_CODE, all uninitialized casts are INSTR_CAST_ILLEGAL

	INSTR_UNARY_MINUS_VOID
	INSTR_ADD_VOID
	INSTR_SUBTRACT_VOID
	INSTR_MULT_VOID
	INSTR_DIV_VOID
	INSTR_MOD_VOID
	INSTR_COMP_EQUAL_VOID
	INSTR_COMP_GREATER_VOID
	INSTR_COMP_LESS_VOID
	INSTR_COMP_GREATER_EQUAL_VOID
	INSTR_COMP_LESS_EQUAL_VOID
	INSTR_COMP_NOT_EQUAL_VOID
	INSTR_IS_NULL_VOID
	INSTR_IS_NOT_NULL_VOID
	INSTR_IN_LIST_VOID
	INSTR_NOT_IN_LIST_VOID
	INSTR_CASE_VOID

	INSTR_CAST_VOID_VOID
	INSTR_CAST_VOID_SYSLANGUAGE
	INSTR_CAST_VOID_VARBINARY
	INSTR_CAST_VOID_VARCHAR
	INSTR_CAST_VOID_BIT
	INSTR_CAST_VOID_TINYINT
	INSTR_CAST_VOID_SMALLINT
	INSTR_CAST_VOID_INT
	INSTR_CAST_VOID_BIGINT
	INSTR_CAST_VOID_MONEY
	INSTR_CAST_VOID_NUMERIC
	INSTR_CAST_VOID_FLOAT
	INSTR_CAST_VOID_DATE
	INSTR_CAST_VOID_TIME
	INSTR_CAST_VOID_DATETIME

	INSTR_SYSFUNC_ISNUMERIC_VOID

	INSTR_SYSFUNC_ISNULL_VOID
	INSTR_SYSFUNC_IIF_VOID
	INSTR_SYSFUNC_CHOOSE_VOID
	INSTR_SYSFUNC_COALESCE_VOID
	INSTR_SYSFUNC_TYPEOF_VOID

	INSTR_CAST_SYSLANGUAGE_SYSLANGUAGE

	INSTR_SYSFUNC_atatDATEFIRST
	INSTR_SYSFUNC_atatDATEFORMAT
	INSTR_SYSFUNC_atatLANGUAGE
	INSTR_SYSFUNC_FIRSTDAYOFWEEK_SYSLANGUAGE
	INSTR_SYSFUNC_DMY_SYSLANGUAGE

	INSTR_LOGICAL_UNARY_NOT_BOOLEAN
	INSTR_LOGICAL_AND_BOOLEAN
	INSTR_LOGICAL_OR_BOOLEAN

	INSTR_SYSFUNC_TYPEOF_BOOLEAN

	INSTR_ADD_VARBINARY
	INSTR_COMP_EQUAL_VARBINARY
	INSTR_COMP_GREATER_VARBINARY
	INSTR_COMP_LESS_VARBINARY
	INSTR_COMP_GREATER_EQUAL_VARBINARY
	INSTR_COMP_LESS_EQUAL_VARBINARY
	INSTR_COMP_NOT_EQUAL_VARBINARY
	INSTR_IS_NULL_VARBINARY
	INSTR_IS_NOT_NULL_VARBINARY
	INSTR_IN_LIST_VARBINARY
	INSTR_NOT_IN_LIST_VARBINARY
	INSTR_CASE_VARBINARY

	INSTR_CAST_VARBINARY_VARBINARY
	INSTR_CAST_VARBINARY_BIT
	INSTR_CAST_VARBINARY_TINYINT
	INSTR_CAST_VARBINARY_SMALLINT
	INSTR_CAST_VARBINARY_INT
	INSTR_CAST_VARBINARY_BIGINT

	INSTR_SYSFUNC_LEN_VARBINARY
	INSTR_SYSFUNC_ISNUMERIC_VARBINARY

	INSTR_SYSFUNC_FIT_NO_TRUNCATE_VARBINARY // The user cannot call this function. It is generated by the decorator for INSERT INTO and UPDATE statements.

	INSTR_SYSFUNC_ISNULL_VARBINARY
	INSTR_SYSFUNC_IIF_VARBINARY
	INSTR_SYSFUNC_CHOOSE_VARBINARY
	INSTR_SYSFUNC_COALESCE_VARBINARY
	INSTR_SYSFUNC_TYPEOF_VARBINARY

	INSTR_ADD_VARCHAR
	INSTR_COMP_EQUAL_VARCHAR
	INSTR_COMP_GREATER_VARCHAR
	INSTR_COMP_LESS_VARCHAR
	INSTR_COMP_GREATER_EQUAL_VARCHAR
	INSTR_COMP_LESS_EQUAL_VARCHAR
	INSTR_COMP_NOT_EQUAL_VARCHAR
	INSTR_LIKE_VARCHAR
	INSTR_NOT_LIKE_VARCHAR
	INSTR_IS_NULL_VARCHAR
	INSTR_IS_NOT_NULL_VARCHAR
	INSTR_IN_LIST_VARCHAR
	INSTR_NOT_IN_LIST_VARCHAR
	INSTR_CASE_VARCHAR

	INSTR_CAST_VARCHAR_SYSLANGUAGE
	INSTR_CAST_VARCHAR_VARCHAR
	INSTR_CAST_VARCHAR_BIT
	INSTR_CAST_VARCHAR_TINYINT
	INSTR_CAST_VARCHAR_SMALLINT
	INSTR_CAST_VARCHAR_INT
	INSTR_CAST_VARCHAR_BIGINT
	INSTR_CAST_VARCHAR_MONEY
	INSTR_CAST_VARCHAR_NUMERIC
	INSTR_CAST_VARCHAR_FLOAT
	INSTR_CAST_VARCHAR_DATE     // decorator will replace it by INSTR_SYSFUNC_CONVERT_VARCHAR_TO_DATE
	INSTR_CAST_VARCHAR_TIME     // decorator will replace it by INSTR_SYSFUNC_CONVERT_VARCHAR_TO_TIME
	INSTR_CAST_VARCHAR_DATETIME // decorator will replace it by INSTR_SYSFUNC_CONVERT_VARCHAR_TO_DATETIME

	INSTR_SYSFUNC_COMPILE_VARCHAR_TO_REGEXPLIKE
	INSTR_SYSFUNC_CHARLEN_VARCHAR
	INSTR_SYSFUNC_LEN_VARCHAR
	INSTR_SYSFUNC_ASCII_VARCHAR
	INSTR_SYSFUNC_UNICODE_VARCHAR
	INSTR_SYSFUNC_CHAR_VARCHAR
	INSTR_SYSFUNC_NCHAR_VARCHAR
	INSTR_SYSFUNC_LTRIM_VARCHAR
	INSTR_SYSFUNC_RTRIM_VARCHAR
	INSTR_SYSFUNC_TRIM_VARCHAR
	INSTR_SYSFUNC_LOWER_VARCHAR
	INSTR_SYSFUNC_UPPER_VARCHAR
	INSTR_SYSFUNC_SPACE_VARCHAR
	INSTR_SYSFUNC_REPLICATE_VARCHAR
	INSTR_SYSFUNC_LEFT_VARCHAR
	INSTR_SYSFUNC_RIGHT_VARCHAR
	INSTR_SYSFUNC_STUFF_VARCHAR
	INSTR_SYSFUNC_SUBSTRING_VARCHAR
	INSTR_SYSFUNC_CHARINDEX_VARCHAR
	INSTR_SYSFUNC_REPLACE_VARCHAR
	INSTR_SYSFUNC_STARTS_WITH_VARCHAR
	INSTR_SYSFUNC_CONCAT_VARCHAR
	INSTR_SYSFUNC_CONVERT_VARCHAR_TO_DATE
	INSTR_SYSFUNC_CONVERT_VARCHAR_TO_TIME
	INSTR_SYSFUNC_CONVERT_VARCHAR_TO_DATETIME
	INSTR_SYSFUNC_ISDATE_VARCHAR
	INSTR_SYSFUNC_ISNUMERIC_VARCHAR

	INSTR_SYSFUNC_FIT_NO_TRUNCATE_VARCHAR // The user cannot call this function. It is generated by the decorator for INSERT INTO and UPDATE statements.

	INSTR_SYSFUNC_ISNULL_VARCHAR
	INSTR_SYSFUNC_IIF_VARCHAR
	INSTR_SYSFUNC_CHOOSE_VARCHAR
	INSTR_SYSFUNC_COALESCE_VARCHAR
	INSTR_SYSFUNC_TYPEOF_VARCHAR

	INSTR_BITWISE_AND_BIT
	INSTR_BITWISE_OR_BIT
	INSTR_BITWISE_XOR_BIT
	INSTR_BITWISE_UNARY_NOT_BIT
	INSTR_COMP_EQUAL_BIT
	INSTR_COMP_GREATER_BIT
	INSTR_COMP_LESS_BIT
	INSTR_COMP_GREATER_EQUAL_BIT
	INSTR_COMP_LESS_EQUAL_BIT
	INSTR_COMP_NOT_EQUAL_BIT
	INSTR_IS_NULL_BIT
	INSTR_IS_NOT_NULL_BIT
	INSTR_IN_LIST_BIT
	INSTR_NOT_IN_LIST_BIT
	INSTR_CASE_BIT

	INSTR_CAST_BIT_VARCHAR
	INSTR_CAST_BIT_BIT
	INSTR_CAST_BIT_TINYINT
	INSTR_CAST_BIT_SMALLINT
	INSTR_CAST_BIT_INT
	INSTR_CAST_BIT_BIGINT
	INSTR_CAST_BIT_MONEY
	INSTR_CAST_BIT_NUMERIC
	INSTR_CAST_BIT_FLOAT

	INSTR_SYSFUNC_ISNUMERIC_BIT

	INSTR_SYSFUNC_ISNULL_BIT
	INSTR_SYSFUNC_IIF_BIT
	INSTR_SYSFUNC_CHOOSE_BIT
	INSTR_SYSFUNC_COALESCE_BIT
	INSTR_SYSFUNC_TYPEOF_BIT

	INSTR_UNARY_MINUS_TINYINT
	INSTR_ADD_TINYINT
	INSTR_SUBTRACT_TINYINT
	INSTR_MULT_TINYINT
	INSTR_DIV_TINYINT
	INSTR_MOD_TINYINT
	INSTR_BITWISE_AND_TINYINT
	INSTR_BITWISE_OR_TINYINT
	INSTR_BITWISE_XOR_TINYINT
	INSTR_BITWISE_UNARY_NOT_TINYINT
	INSTR_COMP_EQUAL_TINYINT
	INSTR_COMP_GREATER_TINYINT
	INSTR_COMP_LESS_TINYINT
	INSTR_COMP_GREATER_EQUAL_TINYINT
	INSTR_COMP_LESS_EQUAL_TINYINT
	INSTR_COMP_NOT_EQUAL_TINYINT
	INSTR_IS_NULL_TINYINT
	INSTR_IS_NOT_NULL_TINYINT
	INSTR_IN_LIST_TINYINT
	INSTR_NOT_IN_LIST_TINYINT
	INSTR_CASE_TINYINT

	INSTR_CAST_TINYINT_VARCHAR
	INSTR_CAST_TINYINT_BIT
	INSTR_CAST_TINYINT_TINYINT
	INSTR_CAST_TINYINT_SMALLINT
	INSTR_CAST_TINYINT_INT
	INSTR_CAST_TINYINT_BIGINT
	INSTR_CAST_TINYINT_MONEY
	INSTR_CAST_TINYINT_NUMERIC
	INSTR_CAST_TINYINT_FLOAT
	INSTR_CAST_TINYINT_DATETIME

	INSTR_SYSFUNC_ISNUMERIC_TINYINT

	INSTR_SYSFUNC_ISNULL_TINYINT
	INSTR_SYSFUNC_IIF_TINYINT
	INSTR_SYSFUNC_CHOOSE_TINYINT
	INSTR_SYSFUNC_COALESCE_TINYINT
	INSTR_SYSFUNC_TYPEOF_TINYINT

	INSTR_UNARY_MINUS_SMALLINT
	INSTR_ADD_SMALLINT
	INSTR_SUBTRACT_SMALLINT
	INSTR_MULT_SMALLINT
	INSTR_DIV_SMALLINT
	INSTR_MOD_SMALLINT
	INSTR_BITWISE_AND_SMALLINT
	INSTR_BITWISE_OR_SMALLINT
	INSTR_BITWISE_XOR_SMALLINT
	INSTR_BITWISE_UNARY_NOT_SMALLINT
	INSTR_COMP_EQUAL_SMALLINT
	INSTR_COMP_GREATER_SMALLINT
	INSTR_COMP_LESS_SMALLINT
	INSTR_COMP_GREATER_EQUAL_SMALLINT
	INSTR_COMP_LESS_EQUAL_SMALLINT
	INSTR_COMP_NOT_EQUAL_SMALLINT
	INSTR_IS_NULL_SMALLINT
	INSTR_IS_NOT_NULL_SMALLINT
	INSTR_IN_LIST_SMALLINT
	INSTR_NOT_IN_LIST_SMALLINT
	INSTR_CASE_SMALLINT

	INSTR_CAST_SMALLINT_VARCHAR
	INSTR_CAST_SMALLINT_BIT
	INSTR_CAST_SMALLINT_TINYINT
	INSTR_CAST_SMALLINT_SMALLINT
	INSTR_CAST_SMALLINT_INT
	INSTR_CAST_SMALLINT_BIGINT
	INSTR_CAST_SMALLINT_MONEY
	INSTR_CAST_SMALLINT_NUMERIC
	INSTR_CAST_SMALLINT_FLOAT
	INSTR_CAST_SMALLINT_DATETIME

	INSTR_SYSFUNC_ISNUMERIC_SMALLINT

	INSTR_SYSFUNC_ISNULL_SMALLINT
	INSTR_SYSFUNC_IIF_SMALLINT
	INSTR_SYSFUNC_CHOOSE_SMALLINT
	INSTR_SYSFUNC_COALESCE_SMALLINT
	INSTR_SYSFUNC_TYPEOF_SMALLINT

	INSTR_UNARY_MINUS_INT
	INSTR_ADD_INT
	INSTR_SUBTRACT_INT
	INSTR_MULT_INT
	INSTR_DIV_INT
	INSTR_MOD_INT
	INSTR_BITWISE_AND_INT
	INSTR_BITWISE_OR_INT
	INSTR_BITWISE_XOR_INT
	INSTR_BITWISE_UNARY_NOT_INT
	INSTR_COMP_EQUAL_INT
	INSTR_COMP_GREATER_INT
	INSTR_COMP_LESS_INT
	INSTR_COMP_GREATER_EQUAL_INT
	INSTR_COMP_LESS_EQUAL_INT
	INSTR_COMP_NOT_EQUAL_INT
	INSTR_IS_NULL_INT
	INSTR_IS_NOT_NULL_INT
	INSTR_IN_LIST_INT
	INSTR_NOT_IN_LIST_INT
	INSTR_CASE_INT

	INSTR_CAST_INT_VARCHAR
	INSTR_CAST_INT_BIT
	INSTR_CAST_INT_TINYINT
	INSTR_CAST_INT_SMALLINT
	INSTR_CAST_INT_INT
	INSTR_CAST_INT_BIGINT
	INSTR_CAST_INT_MONEY
	INSTR_CAST_INT_NUMERIC
	INSTR_CAST_INT_FLOAT
	INSTR_CAST_INT_DATETIME

	INSTR_SYSFUNC_ABS_INT
	INSTR_SYSFUNC_CEILING_INT
	INSTR_SYSFUNC_FLOOR_INT
	INSTR_SYSFUNC_SIGN_INT
	INSTR_SYSFUNC_POWER_INT
	INSTR_SYSFUNC_ROUND_INT
	INSTR_SYSFUNC_FORMAT_INT
	INSTR_SYSFUNC_ISNUMERIC_INT

	INSTR_SYSFUNC_ISNULL_INT
	INSTR_SYSFUNC_IIF_INT
	INSTR_SYSFUNC_CHOOSE_INT
	INSTR_SYSFUNC_COALESCE_INT
	INSTR_SYSFUNC_TYPEOF_INT

	INSTR_UNARY_MINUS_BIGINT
	INSTR_ADD_BIGINT
	INSTR_SUBTRACT_BIGINT
	INSTR_MULT_BIGINT
	INSTR_DIV_BIGINT
	INSTR_MOD_BIGINT
	INSTR_BITWISE_AND_BIGINT
	INSTR_BITWISE_OR_BIGINT
	INSTR_BITWISE_XOR_BIGINT
	INSTR_BITWISE_UNARY_NOT_BIGINT
	INSTR_COMP_EQUAL_BIGINT
	INSTR_COMP_GREATER_BIGINT
	INSTR_COMP_LESS_BIGINT
	INSTR_COMP_GREATER_EQUAL_BIGINT
	INSTR_COMP_LESS_EQUAL_BIGINT
	INSTR_COMP_NOT_EQUAL_BIGINT
	INSTR_IS_NULL_BIGINT
	INSTR_IS_NOT_NULL_BIGINT
	INSTR_IN_LIST_BIGINT
	INSTR_NOT_IN_LIST_BIGINT
	INSTR_CASE_BIGINT

	INSTR_CAST_BIGINT_VARCHAR
	INSTR_CAST_BIGINT_BIT
	INSTR_CAST_BIGINT_TINYINT
	INSTR_CAST_BIGINT_SMALLINT
	INSTR_CAST_BIGINT_INT
	INSTR_CAST_BIGINT_BIGINT
	INSTR_CAST_BIGINT_MONEY
	INSTR_CAST_BIGINT_NUMERIC
	INSTR_CAST_BIGINT_FLOAT
	INSTR_CAST_BIGINT_DATETIME

	INSTR_SYSFUNC_ABS_BIGINT
	INSTR_SYSFUNC_CEILING_BIGINT
	INSTR_SYSFUNC_FLOOR_BIGINT
	INSTR_SYSFUNC_SIGN_BIGINT
	INSTR_SYSFUNC_POWER_BIGINT
	INSTR_SYSFUNC_ROUND_BIGINT
	INSTR_SYSFUNC_FORMAT_BIGINT
	INSTR_SYSFUNC_ISNUMERIC_BIGINT

	INSTR_SYSFUNC_ISNULL_BIGINT
	INSTR_SYSFUNC_IIF_BIGINT
	INSTR_SYSFUNC_CHOOSE_BIGINT
	INSTR_SYSFUNC_COALESCE_BIGINT
	INSTR_SYSFUNC_TYPEOF_BIGINT

	INSTR_UNARY_MINUS_MONEY
	INSTR_ADD_MONEY
	INSTR_SUBTRACT_MONEY
	INSTR_MULT_MONEY
	INSTR_DIV_MONEY
	INSTR_COMP_EQUAL_MONEY
	INSTR_COMP_GREATER_MONEY
	INSTR_COMP_LESS_MONEY
	INSTR_COMP_GREATER_EQUAL_MONEY
	INSTR_COMP_LESS_EQUAL_MONEY
	INSTR_COMP_NOT_EQUAL_MONEY
	INSTR_IS_NULL_MONEY
	INSTR_IS_NOT_NULL_MONEY
	INSTR_IN_LIST_MONEY
	INSTR_NOT_IN_LIST_MONEY
	INSTR_CASE_MONEY

	INSTR_CAST_MONEY_VARCHAR
	INSTR_CAST_MONEY_BIT
	INSTR_CAST_MONEY_TINYINT
	INSTR_CAST_MONEY_SMALLINT
	INSTR_CAST_MONEY_INT
	INSTR_CAST_MONEY_BIGINT
	INSTR_CAST_MONEY_MONEY
	INSTR_CAST_MONEY_NUMERIC
	INSTR_CAST_MONEY_FLOAT

	INSTR_SYSFUNC_ABS_MONEY
	INSTR_SYSFUNC_CEILING_MONEY
	INSTR_SYSFUNC_FLOOR_MONEY
	INSTR_SYSFUNC_SIGN_MONEY
	INSTR_SYSFUNC_POWER_MONEY
	INSTR_SYSFUNC_ROUND_MONEY
	INSTR_SYSFUNC_FORMAT_MONEY
	INSTR_SYSFUNC_ISNUMERIC_MONEY

	INSTR_SYSFUNC_ISNULL_MONEY
	INSTR_SYSFUNC_IIF_MONEY
	INSTR_SYSFUNC_CHOOSE_MONEY
	INSTR_SYSFUNC_COALESCE_MONEY
	INSTR_SYSFUNC_TYPEOF_MONEY

	INSTR_UNARY_MINUS_NUMERIC
	INSTR_ADD_NUMERIC
	INSTR_SUBTRACT_NUMERIC
	INSTR_MULT_NUMERIC
	INSTR_DIV_NUMERIC
	INSTR_COMP_EQUAL_NUMERIC
	INSTR_COMP_GREATER_NUMERIC
	INSTR_COMP_LESS_NUMERIC
	INSTR_COMP_GREATER_EQUAL_NUMERIC
	INSTR_COMP_LESS_EQUAL_NUMERIC
	INSTR_COMP_NOT_EQUAL_NUMERIC
	INSTR_IS_NULL_NUMERIC
	INSTR_IS_NOT_NULL_NUMERIC
	INSTR_IN_LIST_NUMERIC
	INSTR_NOT_IN_LIST_NUMERIC
	INSTR_CASE_NUMERIC

	INSTR_CAST_NUMERIC_VARCHAR
	INSTR_CAST_NUMERIC_BIT
	INSTR_CAST_NUMERIC_TINYINT
	INSTR_CAST_NUMERIC_SMALLINT
	INSTR_CAST_NUMERIC_INT
	INSTR_CAST_NUMERIC_BIGINT
	INSTR_CAST_NUMERIC_MONEY
	INSTR_CAST_NUMERIC_NUMERIC
	INSTR_CAST_NUMERIC_FLOAT

	INSTR_SYSFUNC_ABS_NUMERIC
	INSTR_SYSFUNC_CEILING_NUMERIC
	INSTR_SYSFUNC_FLOOR_NUMERIC
	INSTR_SYSFUNC_SIGN_NUMERIC
	INSTR_SYSFUNC_POWER_NUMERIC
	INSTR_SYSFUNC_ROUND_NUMERIC
	INSTR_SYSFUNC_FORMAT_NUMERIC
	INSTR_SYSFUNC_ISNUMERIC_NUMERIC

	INSTR_SYSFUNC_ISNULL_NUMERIC
	INSTR_SYSFUNC_IIF_NUMERIC
	INSTR_SYSFUNC_CHOOSE_NUMERIC
	INSTR_SYSFUNC_COALESCE_NUMERIC
	INSTR_SYSFUNC_TYPEOF_NUMERIC

	INSTR_UNARY_MINUS_FLOAT
	INSTR_ADD_FLOAT
	INSTR_SUBTRACT_FLOAT
	INSTR_MULT_FLOAT
	INSTR_DIV_FLOAT
	INSTR_COMP_EQUAL_FLOAT
	INSTR_COMP_GREATER_FLOAT
	INSTR_COMP_LESS_FLOAT
	INSTR_COMP_GREATER_EQUAL_FLOAT
	INSTR_COMP_LESS_EQUAL_FLOAT
	INSTR_COMP_NOT_EQUAL_FLOAT
	INSTR_IS_NULL_FLOAT
	INSTR_IS_NOT_NULL_FLOAT
	INSTR_IN_LIST_FLOAT
	INSTR_NOT_IN_LIST_FLOAT
	INSTR_CASE_FLOAT

	INSTR_CAST_FLOAT_VARCHAR
	INSTR_CAST_FLOAT_BIT
	INSTR_CAST_FLOAT_TINYINT
	INSTR_CAST_FLOAT_SMALLINT
	INSTR_CAST_FLOAT_INT
	INSTR_CAST_FLOAT_BIGINT
	INSTR_CAST_FLOAT_MONEY
	INSTR_CAST_FLOAT_NUMERIC
	INSTR_CAST_FLOAT_FLOAT

	INSTR_SYSFUNC_ABS_FLOAT
	INSTR_SYSFUNC_CEILING_FLOAT
	INSTR_SYSFUNC_FLOOR_FLOAT
	INSTR_SYSFUNC_SIGN_FLOAT
	INSTR_SYSFUNC_POWER_FLOAT
	INSTR_SYSFUNC_ROUND_FLOAT
	INSTR_SYSFUNC_ACOS_FLOAT
	INSTR_SYSFUNC_ASIN_FLOAT
	INSTR_SYSFUNC_ATAN_FLOAT
	INSTR_SYSFUNC_ATN2_FLOAT
	INSTR_SYSFUNC_COS_FLOAT
	INSTR_SYSFUNC_SIN_FLOAT
	INSTR_SYSFUNC_TAN_FLOAT
	INSTR_SYSFUNC_COT_FLOAT
	INSTR_SYSFUNC_EXP_FLOAT
	INSTR_SYSFUNC_LOG_FLOAT
	INSTR_SYSFUNC_LOG10_FLOAT
	INSTR_SYSFUNC_SQRT_FLOAT
	INSTR_SYSFUNC_SQUARE_FLOAT
	INSTR_SYSFUNC_PI_FLOAT
	INSTR_SYSFUNC_DEGREES_FLOAT
	INSTR_SYSFUNC_RADIANS_FLOAT
	INSTR_SYSFUNC_RAND_FLOAT
	INSTR_SYSFUNC_STR_FLOAT
	INSTR_SYSFUNC_FORMAT_FLOAT
	INSTR_SYSFUNC_ISNUMERIC_FLOAT

	INSTR_SYSFUNC_ISNULL_FLOAT
	INSTR_SYSFUNC_IIF_FLOAT
	INSTR_SYSFUNC_CHOOSE_FLOAT
	INSTR_SYSFUNC_COALESCE_FLOAT
	INSTR_SYSFUNC_TYPEOF_FLOAT

	INSTR_COMP_EQUAL_DATE
	INSTR_COMP_GREATER_DATE
	INSTR_COMP_LESS_DATE
	INSTR_COMP_GREATER_EQUAL_DATE
	INSTR_COMP_LESS_EQUAL_DATE
	INSTR_COMP_NOT_EQUAL_DATE
	INSTR_IS_NULL_DATE
	INSTR_IS_NOT_NULL_DATE
	INSTR_IN_LIST_DATE
	INSTR_NOT_IN_LIST_DATE
	INSTR_CASE_DATE

	INSTR_CAST_DATE_VARCHAR // decorator will replace it by INSTR_SYSFUNC_CONVERT_DATE_TO_VARCHAR
	INSTR_CAST_DATE_DATE
	INSTR_CAST_DATE_DATETIME

	INSTR_SYSFUNC_DATEADD_YEAR_DATE
	INSTR_SYSFUNC_DATEADD_QUARTER_DATE
	INSTR_SYSFUNC_DATEADD_MONTH_DATE
	INSTR_SYSFUNC_DATEADD_DAY_DATE
	INSTR_SYSFUNC_DATEADD_WEEK_DATE
	INSTR_SYSFUNC_DATEDIFF_YEAR_DATE
	INSTR_SYSFUNC_DATEDIFF_QUARTER_DATE
	INSTR_SYSFUNC_DATEDIFF_MONTH_DATE
	INSTR_SYSFUNC_DATEDIFF_DAY_DATE
	INSTR_SYSFUNC_DATEDIFF_WEEK_DATE
	INSTR_SYSFUNC_DATEDIFF_HOUR_DATE
	INSTR_SYSFUNC_DATEDIFF_MINUTE_DATE
	INSTR_SYSFUNC_DATEDIFF_SECOND_DATE
	INSTR_SYSFUNC_DATEPART_YEAR_DATE
	INSTR_SYSFUNC_DATEPART_QUARTER_DATE
	INSTR_SYSFUNC_DATEPART_MONTH_DATE
	INSTR_SYSFUNC_DATEPART_DAYOFYEAR_DATE
	INSTR_SYSFUNC_DATEPART_DAY_DATE
	INSTR_SYSFUNC_DATEPART_WEEK_DATE
	INSTR_SYSFUNC_DATEPART_WEEKDAY_DATE
	INSTR_SYSFUNC_DATENAME_YEAR_DATE
	INSTR_SYSFUNC_DATENAME_QUARTER_DATE
	INSTR_SYSFUNC_DATENAME_MONTH_DATE
	INSTR_SYSFUNC_DATENAME_DAYOFYEAR_DATE
	INSTR_SYSFUNC_DATENAME_DAY_DATE
	INSTR_SYSFUNC_DATENAME_WEEK_DATE
	INSTR_SYSFUNC_DATENAME_WEEKDAY_DATE
	INSTR_SYSFUNC_EOMONTH_DATE
	INSTR_SYSFUNC_BOMONTH_DATE
	INSTR_SYSFUNC_FORMAT_DATE
	INSTR_SYSFUNC_CONVERT_DATE_TO_VARCHAR
	INSTR_SYSFUNC_DATEFROMPARTS_DATE

	INSTR_SYSFUNC_ISNULL_DATE
	INSTR_SYSFUNC_IIF_DATE
	INSTR_SYSFUNC_CHOOSE_DATE
	INSTR_SYSFUNC_COALESCE_DATE
	INSTR_SYSFUNC_TYPEOF_DATE

	INSTR_COMP_EQUAL_TIME
	INSTR_COMP_GREATER_TIME
	INSTR_COMP_LESS_TIME
	INSTR_COMP_GREATER_EQUAL_TIME
	INSTR_COMP_LESS_EQUAL_TIME
	INSTR_COMP_NOT_EQUAL_TIME
	INSTR_IS_NULL_TIME
	INSTR_IS_NOT_NULL_TIME
	INSTR_IN_LIST_TIME
	INSTR_NOT_IN_LIST_TIME
	INSTR_CASE_TIME

	INSTR_CAST_TIME_VARCHAR // decorator will replace it by INSTR_SYSFUNC_CONVERT_TIME_TO_VARCHAR
	INSTR_CAST_TIME_TIME
	INSTR_CAST_TIME_DATETIME

	INSTR_SYSFUNC_DATEADD_HOUR_TIME
	INSTR_SYSFUNC_DATEADD_MINUTE_TIME
	INSTR_SYSFUNC_DATEADD_SECOND_TIME
	INSTR_SYSFUNC_DATEADD_MILLISECOND_TIME
	INSTR_SYSFUNC_DATEADD_MICROSECOND_TIME
	INSTR_SYSFUNC_DATEADD_NANOSECOND_TIME
	INSTR_SYSFUNC_DATEDIFF_HOUR_TIME
	INSTR_SYSFUNC_DATEDIFF_MINUTE_TIME
	INSTR_SYSFUNC_DATEDIFF_SECOND_TIME
	INSTR_SYSFUNC_DATEDIFF_MILLISECOND_TIME
	INSTR_SYSFUNC_DATEDIFF_MICROSECOND_TIME
	INSTR_SYSFUNC_DATEDIFF_NANOSECOND_TIME
	INSTR_SYSFUNC_DATEPART_HOUR_TIME
	INSTR_SYSFUNC_DATEPART_MINUTE_TIME
	INSTR_SYSFUNC_DATEPART_SECOND_TIME
	INSTR_SYSFUNC_DATEPART_MILLISECOND_TIME
	INSTR_SYSFUNC_DATEPART_MICROSECOND_TIME
	INSTR_SYSFUNC_DATEPART_NANOSECOND_TIME
	INSTR_SYSFUNC_DATENAME_HOUR_TIME
	INSTR_SYSFUNC_DATENAME_MINUTE_TIME
	INSTR_SYSFUNC_DATENAME_SECOND_TIME
	INSTR_SYSFUNC_DATENAME_MILLISECOND_TIME
	INSTR_SYSFUNC_DATENAME_MICROSECOND_TIME
	INSTR_SYSFUNC_DATENAME_NANOSECOND_TIME
	INSTR_SYSFUNC_FORMAT_TIME
	INSTR_SYSFUNC_CONVERT_TIME_TO_VARCHAR
	INSTR_SYSFUNC_TIMEFROMPARTS_TIME

	INSTR_SYSFUNC_ISNULL_TIME
	INSTR_SYSFUNC_IIF_TIME
	INSTR_SYSFUNC_CHOOSE_TIME
	INSTR_SYSFUNC_COALESCE_TIME
	INSTR_SYSFUNC_TYPEOF_TIME

	INSTR_ADD_DATE_TIME_DATETIME
	INSTR_ADD_DATETIME_INT
	INSTR_SUBTRACT_DATETIME_INT
	INSTR_COMP_EQUAL_DATETIME
	INSTR_COMP_GREATER_DATETIME
	INSTR_COMP_LESS_DATETIME
	INSTR_COMP_GREATER_EQUAL_DATETIME
	INSTR_COMP_LESS_EQUAL_DATETIME
	INSTR_COMP_NOT_EQUAL_DATETIME
	INSTR_IS_NULL_DATETIME
	INSTR_IS_NOT_NULL_DATETIME
	INSTR_IN_LIST_DATETIME
	INSTR_NOT_IN_LIST_DATETIME
	INSTR_CASE_DATETIME

	INSTR_CAST_DATETIME_VARCHAR // decorator will replace it by INSTR_SYSFUNC_CONVERT_DATETIME_TO_VARCHAR
	INSTR_CAST_DATETIME_DATE
	INSTR_CAST_DATETIME_TIME
	INSTR_CAST_DATETIME_DATETIME

	INSTR_SYSFUNC_DATEADD_YEAR_DATETIME
	INSTR_SYSFUNC_DATEADD_QUARTER_DATETIME
	INSTR_SYSFUNC_DATEADD_MONTH_DATETIME
	INSTR_SYSFUNC_DATEADD_DAY_DATETIME
	INSTR_SYSFUNC_DATEADD_WEEK_DATETIME
	INSTR_SYSFUNC_DATEADD_HOUR_DATETIME
	INSTR_SYSFUNC_DATEADD_MINUTE_DATETIME
	INSTR_SYSFUNC_DATEADD_SECOND_DATETIME
	INSTR_SYSFUNC_DATEADD_MILLISECOND_DATETIME
	INSTR_SYSFUNC_DATEADD_MICROSECOND_DATETIME
	INSTR_SYSFUNC_DATEADD_NANOSECOND_DATETIME
	INSTR_SYSFUNC_DATEDIFF_YEAR_DATETIME
	INSTR_SYSFUNC_DATEDIFF_QUARTER_DATETIME
	INSTR_SYSFUNC_DATEDIFF_MONTH_DATETIME
	INSTR_SYSFUNC_DATEDIFF_DAY_DATETIME
	INSTR_SYSFUNC_DATEDIFF_WEEK_DATETIME
	INSTR_SYSFUNC_DATEDIFF_HOUR_DATETIME
	INSTR_SYSFUNC_DATEDIFF_MINUTE_DATETIME
	INSTR_SYSFUNC_DATEDIFF_SECOND_DATETIME
	INSTR_SYSFUNC_DATEDIFF_MILLISECOND_DATETIME
	INSTR_SYSFUNC_DATEDIFF_MICROSECOND_DATETIME
	INSTR_SYSFUNC_DATEDIFF_NANOSECOND_DATETIME
	INSTR_SYSFUNC_DATEPART_YEAR_DATETIME
	INSTR_SYSFUNC_DATEPART_QUARTER_DATETIME
	INSTR_SYSFUNC_DATEPART_MONTH_DATETIME
	INSTR_SYSFUNC_DATEPART_DAYOFYEAR_DATETIME
	INSTR_SYSFUNC_DATEPART_DAY_DATETIME
	INSTR_SYSFUNC_DATEPART_WEEK_DATETIME
	INSTR_SYSFUNC_DATEPART_WEEKDAY_DATETIME
	INSTR_SYSFUNC_DATEPART_HOUR_DATETIME
	INSTR_SYSFUNC_DATEPART_MINUTE_DATETIME
	INSTR_SYSFUNC_DATEPART_SECOND_DATETIME
	INSTR_SYSFUNC_DATEPART_MILLISECOND_DATETIME
	INSTR_SYSFUNC_DATEPART_MICROSECOND_DATETIME
	INSTR_SYSFUNC_DATEPART_NANOSECOND_DATETIME
	INSTR_SYSFUNC_DATENAME_YEAR_DATETIME
	INSTR_SYSFUNC_DATENAME_QUARTER_DATETIME
	INSTR_SYSFUNC_DATENAME_MONTH_DATETIME
	INSTR_SYSFUNC_DATENAME_DAYOFYEAR_DATETIME
	INSTR_SYSFUNC_DATENAME_DAY_DATETIME
	INSTR_SYSFUNC_DATENAME_WEEK_DATETIME
	INSTR_SYSFUNC_DATENAME_WEEKDAY_DATETIME
	INSTR_SYSFUNC_DATENAME_HOUR_DATETIME
	INSTR_SYSFUNC_DATENAME_MINUTE_DATETIME
	INSTR_SYSFUNC_DATENAME_SECOND_DATETIME
	INSTR_SYSFUNC_DATENAME_MILLISECOND_DATETIME
	INSTR_SYSFUNC_DATENAME_MICROSECOND_DATETIME
	INSTR_SYSFUNC_DATENAME_NANOSECOND_DATETIME
	INSTR_SYSFUNC_EOMONTH_DATETIME
	INSTR_SYSFUNC_BOMONTH_DATETIME
	INSTR_SYSFUNC_FORMAT_DATETIME
	INSTR_SYSFUNC_CONVERT_DATETIME_TO_VARCHAR
	INSTR_SYSFUNC_DATETIMEFROMPARTS_DATETIME
	INSTR_SYSFUNC_DATETIME2FROMPARTS_DATETIME
	INSTR_SYSFUNC_GETUTCDATE_DATETIME
	INSTR_SYSFUNC_UTC_TO_LOCAL_DATETIME

	INSTR_SYSFUNC_ISNULL_DATETIME
	INSTR_SYSFUNC_IIF_DATETIME
	INSTR_SYSFUNC_CHOOSE_DATETIME
	INSTR_SYSFUNC_COALESCE_DATETIME
	INSTR_SYSFUNC_TYPEOF_DATETIME

	INSTR_SYSFUNC_RANDOM_VARCHAR
	INSTR_SYSFUNC_RANDOM_INT
	INSTR_SYSFUNC_RANDOM_BIGINT
	INSTR_SYSFUNC_RANDOM_NUMERIC
	INSTR_SYSFUNC_RANDOM_FLOAT
	INSTR_SYSFUNC_RANDOM_DATE

	INSTR_SYSFUNC_SUSER_NAME_VARCHAR
	INSTR_SYSFUNC_SUSER_ID_BIGINT
	INSTR_SYSFUNC_DB_NAME_VARCHAR
	INSTR_SYSFUNC_DB_ID_BIGINT
	INSTR_SYSFUNC_SCHEMA_NAME_VARCHAR
	INSTR_SYSFUNC_SCHEMA_ID_BIGINT
	INSTR_SYSFUNC_OBJECT_NAME_VARCHAR
	INSTR_SYSFUNC_OBJECT_ID_BIGINT
	INSTR_SYSFUNC_USER_NAME_VARCHAR
	INSTR_SYSFUNC_USER_ID_BIGINT

	INSTR_SYSFUNC_COUNT_VARBINARY
	INSTR_SYSFUNC_COUNT_VARCHAR
	INSTR_SYSFUNC_COUNT_BIT
	INSTR_SYSFUNC_COUNT_TINYINT
	INSTR_SYSFUNC_COUNT_SMALLINT
	INSTR_SYSFUNC_COUNT_INT
	INSTR_SYSFUNC_COUNT_BIGINT
	INSTR_SYSFUNC_COUNT_MONEY
	INSTR_SYSFUNC_COUNT_NUMERIC
	INSTR_SYSFUNC_COUNT_FLOAT
	INSTR_SYSFUNC_COUNT_DATE
	INSTR_SYSFUNC_COUNT_TIME
	INSTR_SYSFUNC_COUNT_DATETIME

	INSTR_SYSFUNC_COUNT_BIG_VARBINARY
	INSTR_SYSFUNC_COUNT_BIG_VARCHAR
	INSTR_SYSFUNC_COUNT_BIG_BIT
	INSTR_SYSFUNC_COUNT_BIG_TINYINT
	INSTR_SYSFUNC_COUNT_BIG_SMALLINT
	INSTR_SYSFUNC_COUNT_BIG_INT
	INSTR_SYSFUNC_COUNT_BIG_BIGINT
	INSTR_SYSFUNC_COUNT_BIG_MONEY
	INSTR_SYSFUNC_COUNT_BIG_NUMERIC
	INSTR_SYSFUNC_COUNT_BIG_FLOAT
	INSTR_SYSFUNC_COUNT_BIG_DATE
	INSTR_SYSFUNC_COUNT_BIG_TIME
	INSTR_SYSFUNC_COUNT_BIG_DATETIME

	INSTR_SYSFUNC_SUM_BIT
	INSTR_SYSFUNC_SUM_TINYINT
	INSTR_SYSFUNC_SUM_SMALLINT
	INSTR_SYSFUNC_SUM_INT
	INSTR_SYSFUNC_SUM_BIGINT
	INSTR_SYSFUNC_SUM_MONEY
	INSTR_SYSFUNC_SUM_NUMERIC
	INSTR_SYSFUNC_SUM_FLOAT

	INSTR_SYSFUNC_MIN_VARBINARY
	INSTR_SYSFUNC_MIN_VARCHAR
	INSTR_SYSFUNC_MIN_BIT
	INSTR_SYSFUNC_MIN_TINYINT
	INSTR_SYSFUNC_MIN_SMALLINT
	INSTR_SYSFUNC_MIN_INT
	INSTR_SYSFUNC_MIN_BIGINT
	INSTR_SYSFUNC_MIN_MONEY
	INSTR_SYSFUNC_MIN_NUMERIC
	INSTR_SYSFUNC_MIN_FLOAT
	INSTR_SYSFUNC_MIN_DATE
	INSTR_SYSFUNC_MIN_TIME
	INSTR_SYSFUNC_MIN_DATETIME

	INSTR_SYSFUNC_MAX_VARBINARY
	INSTR_SYSFUNC_MAX_VARCHAR
	INSTR_SYSFUNC_MAX_BIT
	INSTR_SYSFUNC_MAX_TINYINT
	INSTR_SYSFUNC_MAX_SMALLINT
	INSTR_SYSFUNC_MAX_INT
	INSTR_SYSFUNC_MAX_BIGINT
	INSTR_SYSFUNC_MAX_MONEY
	INSTR_SYSFUNC_MAX_NUMERIC
	INSTR_SYSFUNC_MAX_FLOAT
	INSTR_SYSFUNC_MAX_DATE
	INSTR_SYSFUNC_MAX_TIME
	INSTR_SYSFUNC_MAX_DATETIME

	INSTR_ARG0_IS_EXPRESSION_RESULT_SENTINEL_xxxxxxxxx //=============== IMPORTANT: not an instruction, just a sentinel. For all instructions above, arg[0] receives the result of the computation ===================

	INSTR_STMT_USE

	INSTR_STMT_THROW

	INSTR_STMT_SET_NOCOUNT

	INSTR_STMT_PRINT
	INSTR_STMT_BEGIN_TRANSACTION
	INSTR_STMT_COMMIT_TRANSACTION
	INSTR_STMT_ROLLBACK_TRANSACTION

	INSTR_ASSIGN_SYSLANGUAGE
	INSTR_ASSIGN_VARBINARY
	INSTR_ASSIGN_VARCHAR
	INSTR_ASSIGN_BIT
	INSTR_ASSIGN_TINYINT
	INSTR_ASSIGN_SMALLINT
	INSTR_ASSIGN_INT
	INSTR_ASSIGN_BIGINT
	INSTR_ASSIGN_MONEY
	INSTR_ASSIGN_NUMERIC
	INSTR_ASSIGN_FLOAT
	INSTR_ASSIGN_DATE
	INSTR_ASSIGN_TIME
	INSTR_ASSIGN_DATETIME

	INSTR_JUMP_OUT_TRUE_FALSE
	INSTR_JUMP_OUT
	INSTR_JUMP_IF_NULL_OR_FALSE
	INSTR_JUMP_RETURN

	INSTR_STMT_ASSERT_       // not a MS SQL Server statement. Use it only to test SQL scripts.
	INSTR_STMT_ASSERT_NULL_  // not a MS SQL Server statement. Use it only to test SQL scripts.
	INSTR_STMT_ASSERT_ERROR_ // not a MS SQL Server statement. Use it only to test SQL scripts.

	INSTR_STMT_ALTER_SERVER_PARAMETER
	INSTR_STMT_CREATE_LOGIN
	INSTR_STMT_ALTER_LOGIN
	INSTR_STMT_DROP_LOGIN
	INSTR_STMT_CREATE_USER
	INSTR_STMT_ALTER_USER
	INSTR_STMT_DROP_USER
	INSTR_STMT_CREATE_ROLE
	INSTR_STMT_ALTER_ROLE
	INSTR_STMT_DROP_ROLE
	INSTR_STMT_GRANT
	INSTR_STMT_DENY
	INSTR_STMT_REVOKE
	INSTR_STMT_CREATE_DATABASE
	INSTR_STMT_ALTER_DATABASE
	INSTR_STMT_DROP_DATABASE
	INSTR_STMT_CREATE_TABLE
	INSTR_STMT_ALTER_TABLE
	INSTR_STMT_DROP_TABLE
	INSTR_STMT_CREATE_INDEX
	INSTR_STMT_ALTER_INDEX
	INSTR_STMT_DROP_INDEX
	INSTR_STMT_ALTER_AUTHORIZATION

	INSTR_STMT_INSERT_VALUES
	INSTR_STMT_INSERT_SELECT
	INSTR_STMT_BULK_INSERT
	INSTR_STMT_BULK_EXPORT
	INSTR_STMT_SELECT_OR_UNION
	INSTR_STMT_DELETE
	INSTR_STMT_UPDATE
	INSTR_STMT_TRUNCATE_TABLE
	INSTR_STMT_SHRINK_TABLE

	INSTR_STMT_SHOW_COLLATIONS
	INSTR_STMT_SHOW_LANGUAGES
	INSTR_STMT_SHOW_LOCKS
	INSTR_STMT_SHOW_WORKERS
	INSTR_STMT_SHOW_INFO
	INSTR_STMT_SHOW_TABLE
	INSTR_STMT_SHOW_DATABASE
	INSTR_STMT_SHOW_LOGIN
	INSTR_STMT_SHOW_PARAMETER
	INSTR_STMT_SHOW_USER
	INSTR_STMT_SHOW_ROLE

	INSTR_STMT_BACKUP
	INSTR_STMT_RESTORE
	INSTR_STMT_DUMP_PARAMETERS
	INSTR_STMT_DUMP_LOGINS
	INSTR_STMT_DUMP_DATABASE

	INSTR_STMT_SLEEP
	INSTR_STMT_SHUTDOWN

	INSTR_SYSFUNC_atatVERSION
	INSTR_SYSFUNC_atatSERVERNAME
	INSTR_SYSFUNC_atatSERVICENAME
	INSTR_SYSFUNC_atatIDENTITY
	INSTR_SYSFUNC_atatROWCOUNT
	INSTR_SYSFUNC_atatERROR
	INSTR_SYSFUNC_atatTRANCOUNT

	INSTR_SYSFUNC_SCOPE_IDENTITY
)

type Kind_t

type Kind_t uint16

Kind_t is the kind of a dataslot in the AST tree. Dataslots may contain constant value, variable value, column value, or temporary value (result of an operator or function computation).

const (
	KIND_RO_LEAF  Kind_t = 1 // readonly constant. It is a literal number or string. Or after constfolding, token of any type that contains an immutable value.
	KIND_VAR_LEAF Kind_t = 2 // variable
	KIND_COL_LEAF Kind_t = 4 // column of table
	KIND_TMP      Kind_t = 8 // result of operator or function
)

Type of the nodes in the AST tree. Power of two.

func (Kind_t) String

func (kind Kind_t) String() string

type Message_id_t

type Message_id_t uint32

Message_t is the message id of an Error.

const (
	ERROR_FOR_TESTING Message_id_t = iota + 1000 // used for testing
	ERROR_GARBAGE                                // also for testing

	ERROR_SQLDATA_SYSCOLLATOR_INVALID_LOCALE
	ERROR_SQLDATA_SYSCOLLATOR_INVALID_SUFFIX
	ERROR_SQLDATA_SYSLANGUAGE_INVALID_LOCALE
	ERROR_SQLDATA_SYSLANGUAGE_TO_VARCHAR_OVERFLOW
	ERROR_SQLDATA_SYSLANGUAGE_CANNOT_BE_NULL
	ERROR_SQLDATA_SYSLANGUAGE_FIRSTDAYOFWEEK_FAILURE
	ERROR_SQLDATA_SYSLANGUAGE_FIRSTDAYOFWEEK_BAD_VALUE
	ERROR_SQLDATA_SYSLANGUAGE_DMY_FAILURE
	ERROR_SQLDATA_SYSLANGUAGE_DMY_BAD_VALUE
	ERROR_SQLDATA_VARBINARY_OVERFLOW
	ERROR_SQLDATA_VARBINARY_CAST_VARBINARY_OVERFLOW
	ERROR_SQLDATA_VARBINARY_CAST_TINYINT_OVERFLOW
	ERROR_SQLDATA_VARBINARY_CAST_SMALLINT_OVERFLOW
	ERROR_SQLDATA_VARBINARY_CAST_INT_OVERFLOW
	ERROR_SQLDATA_VARCHAR_OVERFLOW
	ERROR_SQLDATA_VARCHAR_SPACE_INVALID_VALUE
	ERROR_SQLDATA_VARCHAR_LEFT_RIGHT_BAD_ARGUMENT
	ERROR_SQLDATA_VARCHAR_SUBSTRING_BAD_LENGTH
	ERROR_SQLDATA_VARCHAR_CONV_REGEXPLIKE_BAD_ESCAPE_CHAR
	ERROR_SQLDATA_VARCHAR_CONV_REGEXPLIKE_BAD_STRING
	ERROR_SQLDATA_VARCHAR_CAST_BIT_BAD_STRING
	ERROR_SQLDATA_VARCHAR_CAST_TINYINT_BAD_STRING
	ERROR_SQLDATA_VARCHAR_CAST_TINYINT_OVERFLOW
	ERROR_SQLDATA_VARCHAR_CAST_SMALLINT_BAD_STRING
	ERROR_SQLDATA_VARCHAR_CAST_SMALLINT_OVERFLOW
	ERROR_SQLDATA_VARCHAR_CAST_INT_BAD_STRING
	ERROR_SQLDATA_VARCHAR_CAST_INT_OVERFLOW
	ERROR_SQLDATA_VARCHAR_CAST_BIGINT_BAD_STRING
	ERROR_SQLDATA_VARCHAR_CAST_FLOAT_BAD_STRING
	ERROR_SQLDATA_VARCHAR_CONVERT_DATE_UNSUPPORTED_STYLE
	ERROR_SQLDATA_VARCHAR_CONVERT_DATE_WRONG_PARTS_ORDER
	ERROR_SQLDATA_VARCHAR_CONVERT_DATE_FAILED
	ERROR_SQLDATA_VARCHAR_CONVERT_TIME_UNSUPPORTED_STYLE
	ERROR_SQLDATA_VARCHAR_CONVERT_TIME_WRONG_PARTS_ORDER
	ERROR_SQLDATA_VARCHAR_CONVERT_TIME_FAILED
	ERROR_SQLDATA_VARCHAR_CONVERT_DATETIME_UNSUPPORTED_STYLE
	ERROR_SQLDATA_VARCHAR_CONVERT_DATETIME_WRONG_PARTS_ORDER
	ERROR_SQLDATA_VARCHAR_CONVERT_DATETIME_FAILED
	ERROR_SQLDATA_VARCHAR_UNICOE_CODEPOINT_INVALID
	ERROR_SQLDATA_BIT_OVERFLOW
	ERROR_SQLDATA_BIT_CAST_VARCHAR_OVERFLOW
	ERROR_SQLDATA_TINYINT_OVERFLOW
	ERROR_SQLDATA_TINYINT_DIVIDE_BY_ZERO
	ERROR_SQLDATA_TINYINT_MODULO_BY_ZERO
	ERROR_SQLDATA_TINYINT_CAST_VARCHAR_OVERFLOW
	ERROR_SQLDATA_SMALLINT_OVERFLOW
	ERROR_SQLDATA_SMALLINT_DIVIDE_BY_ZERO
	ERROR_SQLDATA_SMALLINT_MODULO_BY_ZERO
	ERROR_SQLDATA_SMALLINT_CAST_VARCHAR_OVERFLOW
	ERROR_SQLDATA_SMALLINT_CAST_TINYINT_OVERFLOW
	ERROR_SQLDATA_INT_OVERFLOW
	ERROR_SQLDATA_INT_DIVIDE_BY_ZERO
	ERROR_SQLDATA_INT_MODULO_BY_ZERO
	ERROR_SQLDATA_INT_CAST_VARCHAR_OVERFLOW
	ERROR_SQLDATA_INT_CAST_TINYINT_OVERFLOW
	ERROR_SQLDATA_INT_CAST_SMALLINT_OVERFLOW
	ERROR_SQLDATA_INT_FORMAT
	ERROR_SQLDATA_INT_FORMAT_OVERFLOW
	ERROR_SQLDATA_BIGINT_OVERFLOW
	ERROR_SQLDATA_BIGINT_DIVIDE_BY_ZERO
	ERROR_SQLDATA_BIGINT_MODULO_BY_ZERO
	ERROR_SQLDATA_BIGINT_CAST_VARCHAR_OVERFLOW
	ERROR_SQLDATA_BIGINT_CAST_TINYINT_OVERFLOW
	ERROR_SQLDATA_BIGINT_CAST_SMALLINT_OVERFLOW
	ERROR_SQLDATA_BIGINT_CAST_INT_OVERFLOW
	ERROR_SQLDATA_BIGINT_FORMAT
	ERROR_SQLDATA_BIGINT_FORMAT_OVERFLOW
	ERROR_SQLDATA_NUMERIC_INVALID_TEXT_TOO_LONG
	ERROR_SQLDATA_NUMERIC_INFINITE
	ERROR_SQLDATA_NUMERIC_NAN
	ERROR_SQLDATA_NUMERIC_OVERFLOW
	ERROR_SQLDATA_NUMERIC_OUT_OF_RANGE
	ERROR_SQLDATA_NUMERIC_DEC_UNLISTED
	ERROR_SQLDATA_NUMERIC_DEC_INVALID_OPERATION
	ERROR_SQLDATA_NUMERIC_DEC_DIVISION_BY_ZERO
	ERROR_SQLDATA_NUMERIC_DEC_OVERFLOW
	ERROR_SQLDATA_NUMERIC_DEC_UNDERFLOW
	ERROR_SQLDATA_NUMERIC_DEC_DIVISION_IMPOSSIBLE
	ERROR_SQLDATA_NUMERIC_DEC_DIVISION_UNDEFINED
	ERROR_SQLDATA_NUMERIC_DEC_CONVERSION_SYNTAX
	ERROR_SQLDATA_NUMERIC_DEC_INSUFFICIENT_STORAGE
	ERROR_SQLDATA_NUMERIC_DEC_INVALID_CONTEXT
	ERROR_SQLDATA_NUMERIC_CAST_VARCHAR_OVERFLOW
	ERROR_SQLDATA_NUMERIC_CAST_TINYINT_OVERFLOW
	ERROR_SQLDATA_NUMERIC_CAST_SMALLINT_OVERFLOW
	ERROR_SQLDATA_NUMERIC_CAST_INT_OVERFLOW
	ERROR_SQLDATA_NUMERIC_CAST_BIGINT_OVERFLOW
	ERROR_SQLDATA_NUMERIC_CAST_FLOAT_OVERFLOW
	ERROR_SQLDATA_NUMERIC_FORMAT
	ERROR_SQLDATA_NUMERIC_FORMAT_OVERFLOW
	ERROR_SQLDATA_FLOAT_DIVIDE_BY_ZERO
	ERROR_SQLDATA_FLOAT_INFINITE
	ERROR_SQLDATA_FLOAT_NAN
	ERROR_SQLDATA_FLOAT_CAST_VARCHAR_OVERFLOW
	ERROR_SQLDATA_FLOAT_CAST_TINYINT_OVERFLOW
	ERROR_SQLDATA_FLOAT_CAST_SMALLINT_OVERFLOW
	ERROR_SQLDATA_FLOAT_CAST_INT_OVERFLOW
	ERROR_SQLDATA_FLOAT_CAST_BIGINT_OVERFLOW
	ERROR_SQLDATA_FLOAT_FORMAT
	ERROR_SQLDATA_FLOAT_FORMAT_OVERFLOW
	ERROR_SQLDATA_DATE_CONVERT_VARCHAR_UNSUPPORTED_STYLE
	ERROR_SQLDATA_DATE_CONVERT_VARCHAR_OVERFLOW
	ERROR_SQLDATA_DATE_DATEFROMPARTS_ILLEGAL_ARGS
	ERROR_SQLDATA_TIME_CONVERT_VARCHAR_UNSUPPORTED_STYLE
	ERROR_SQLDATA_TIME_CONVERT_VARCHAR_OVERFLOW
	ERROR_SQLDATA_TIME_TIMEFROMPARTS_ILLEGAL_ARGS
	ERROR_SQLDATA_TIME_TIMEFROMPARTS_NULL_PRECISION
	ERROR_SQLDATA_DATETIME_OVERFLOW
	ERROR_SQLDATA_DATETIME_DATENAME_OVERFLOW
	ERROR_SQLDATA_DATETIME_DATEDIFF_OVERFLOW
	ERROR_SQLDATA_DATETIME_CONVERT_VARCHAR_UNSUPPORTED_STYLE
	ERROR_SQLDATA_DATETIME_CONVERT_VARCHAR_OVERFLOW
	ERROR_SQLDATA_DATETIME_FORMAT_OVERFLOW
	ERROR_SQLDATA_DATETIME_DATETIMEFROMPARTS_ILLEGAL_ARGS
	ERROR_SQLDATA_DATETIME_DATETIME2FROMPARTS_ILLEGAL_ARGS
	ERROR_SQLDATA_DATETIME_DATETIME2FROMPARTS_NULL_PRECISION
	ERROR_SQLDATA_IDENTITY_xxxINT_COLUMN_OVERFLOW
	ERROR_SQLDATA_ROWID_COLUMN_OVERFLOW
	ERROR_SQLDATA_RANDOM_BIGINT_DELTA_TOO_LARGE

	ERROR_MISSING_END_COMMENT_MARK
	ERROR_VARIABLE_INVALID_START_CHAR
	ERROR_VARIABLE_INVALID_TOO_LONG
	ERROR_ATFUNC_INVALID_START_CHAR
	ERROR_ATFUNC_INVALID_TOO_LONG
	ERROR_IDENTPART_INVALID_START_CHAR
	ERROR_IDENTPART_INVALID_TOO_LONG
	ERROR_IDENTPART_INVALID_HASHSIGN_ONLY
	ERROR_IDENTPART_DELIMITED_EMPTY
	ERROR_IDENTPART_DELIMITED_INVALID_START_CHAR
	ERROR_IDENTPART_DELIMITED_INVALID_CONTINUE_CHAR
	ERROR_IDENTPART_DELIMITED_CLOSING_DELIMITER_MISSING
	ERROR_LITERAL_NUMBER_MONEY_INVALID
	ERROR_LITERAL_NUMBER_MONEY_SUFFIX_FORBIDDEN
	ERROR_LITERAL_NUMBER_EXPONENT_PART_MISSING
	ERROR_LITERAL_NUMBER_INVALID_TOO_LONG
	ERROR_LITERAL_NUMBER_FOLLOWED_BY_IDENTCHAR
	ERROR_LITERAL_HEXASTRING_INVALID_TOO_LONG
	ERROR_LITERAL_HEXASTRING_FOLLOWED_BY_IDENTCHAR
	ERROR_LITERAL_STRING_UHEXACODE_INVALID
	ERROR_LITERAL_STRING_ENDING_QUOTE_MISSING
	ERROR_LITERAL_STRING_INVALID_TOO_LONG
	ERROR_INVALID_CHARACTER_IN_BATCH
	ERROR_INVALID_CHARACTER_IN_BATCH_CODEPOINT
	ERROR_INVALID_SYNTAX_ATFUNC_NOT_FOUND
	ERROR_INVALID_SYNTAX_IS_NULL
	ERROR_INVALID_SYNTAX_MISSING_LPAREN
	ERROR_INVALID_SYNTAX_MISSING_RPAREN
	ERROR_INVALID_SYNTAX_LPAREN_NOT_EXPECTED
	ERROR_INVALID_SYNTAX_NOT_BUILTIN_FUNCTION
	ERROR_INVALID_SYNTAX_UNARY_OP_EXPECTED
	ERROR_INVALID_SYNTAX_BINARY_OP_EXPECTED
	ERROR_INVALID_SYNTAX_OPERATOR_EXPECTED
	ERROR_INVALID_SYNTAX_CASE_WITHOUT_WHEN
	ERROR_INVALID_SYNTAX_CASE_WHEN_COUNT_EXCEEDED
	ERROR_INVALID_SYNTAX_CASE_WHEN_WITHOUT_THEN
	ERROR_INVALID_SYNTAX_CASE_WITHOUT_END
	ERROR_INVALID_SYNTAX_QUALIFIED_NAME_TOO_MANY_PARTS
	ERROR_INVALID_SYNTAX_QUALIFIED_NAME_IDENTPART_EXPECTED
	ERROR_INVALID_SYNTAX_QUALIFIED_NAME_MALFORMED
	ERROR_INVALID_SYNTAX_UNQUALIFIED_STAR_NOT_ALLOWED
	ERROR_INVALID_SYNTAX_QUALIFIED_STAR_NOT_ALLOWED
	ERROR_INVALID_SYNTAX_COLUMN_IDENTIFIER_NOT_ALLOWED
	ERROR_INVALID_SYNTAX_USER_FUNCTION_MISSING_SCHEMA
	ERROR_INVALID_SYNTAX_BAD_DATEPARTFIELD
	ERROR_INVALID_SYNTAX_DATEPARTFIELD_NOT_SUPPORTED_FOR_TYPE
	ERROR_INVALID_SYNTAX_SYSFUNC_ARGUMENT_EXPECTED
	ERROR_INVALID_SYNTAX_BAD_CAST_DATATYPE
	ERROR_INVALID_SYNTAX_MISSING_AS
	ERROR_INVALID_SYNTAX_UFUNC_TOO_MANY_PARTS
	ERROR_INVALID_SYNTAX_COLUMN_TOO_MANY_PARTS
	ERROR_INVALID_SYNTAX_ILLEGAL_QUALIFIED_STAR
	ERROR_INVALID_SYNTAX_MALFORMED_EXPRESSION
	ERROR_INVALID_SYNTAX_ILLEGAL_QUESTIONMARK
	ERROR_INVALID_SYNTAX_EXPRESSION_DEPTH_EXCEEDED
	ERROR_INVALID_SYNTAX_OPERATOR_MISMATCH
	ERROR_INVALID_SYNTAX_BETWEEN_MISSING_AND
	ERROR_INVALID_SYNTAX_OPERATOR_MISMATCH_RESULT_NOT_UNIQUE
	ERROR_INVALID_SYNTAX_FUNCTION_ARGUMENTS_COUNT_EXCEEDED
	ERROR_INVALID_SYNTAX_BAD_ARGS_COUNT
	ERROR_INVALID_SYNTAX_BAD_ARGS_COUNT_RANGE
	ERROR_INVALID_SYNTAX_BAD_ARGS_COUNT_MINIMAL
	ERROR_INVALID_SYNTAX_ILLEGAL_SYSFUNC_OPERAND
	ERROR_INVALID_SYNTAX_TOO_MANY_EXPRESSIONS_IN_LIST
	ERROR_INVALID_SYNTAX_IDENTPART_EXPECTED
	ERROR_INVALID_SYNTAX_END_MISSING
	ERROR_INVALID_SYNTAX_EMPTY_BEGIN_END
	ERROR_INVALID_SYNTAX_TOO_MANY_NESTED_LOOPS
	ERROR_INVALID_SYNTAX_BREAK_WITHOUT_LOOP
	ERROR_INVALID_SYNTAX_CONTINUE_WITHOUT_LOOP
	ERROR_INVALID_SYNTAX_GOTO_LABEL_EXPECTED
	ERROR_INVALID_SYNTAX_STATEMENT_EXPECTED
	ERROR_INVALID_SYNTAX_END_WITHOUT_BEGIN
	ERROR_INVALID_SYNTAX_ELSE_WITHOUT_IF
	ERROR_INVALID_SYNTAX_STATEMENT_NOT_IMPLEMENTED
	ERROR_INVALID_SYNTAX_VARIABLE_EXPECTED
	ERROR_INVALID_SYNTAX_FEATURE_NOT_IMPLEMENTED_YET
	ERROR_INVALID_SYNTAX_UNION_NOT_IMPLEMENTED_YET
	ERROR_INVALID_SYNTAX_DATATYPE_USER_DEFINED_NOT_FOUND
	ERROR_INVALID_SYNTAX_COLLATE_FORBIDDEN
	ERROR_INVALID_SYNTAX_BAD_ASSIGNMENT_OPERATOR
	ERROR_INVALID_SYNTAX_ILLEGAL_OPERATOR_OPERANDS
	ERROR_INVALID_SYNTAX_ILLEGAL_FUNCTION_NOT_IMPLEMENTED
	ERROR_INVALID_SYNTAX_FUNCTION_DATALENGTH_NOT_IMPLEMENTED
	ERROR_INVALID_SYNTAX_SUBQUERIES_NOT_IMPLEMENTED
	ERROR_INVALID_SYNTAX_CAST_NOT_ALLOWED
	ERROR_INVALID_SYNTAX_VARIABLE_NOT_DECLARED
	ERROR_INVALID_SYNTAX_VARIABLE_ALREADY_DECLARED
	ERROR_INVALID_SYNTAX_COLLATIONS_CONFLICT
	ERROR_INVALID_SYNTAX_SET_LANGUAGE
	ERROR_INVALID_SYNTAX_SET_DATEFIRST
	ERROR_INVALID_SYNTAX_SET_DATEFORMAT
	ERROR_INVALID_SYNTAX_BOOLEAN_EXPECTED
	ERROR_INVALID_SYNTAX_LABEL_NOT_FOUND
	ERROR_INVALID_SYNTAX_LABEL_DUPLICATE
	ERROR_INVALID_SYNTAX_UNQUALIFIED_NAME_EXPECTED
	ERROR_INVALID_SYNTAX_SHOW_TYPE_UNKNOWN
	ERROR_INVALID_SYNTAX_SHOW_BAD_TEMPLATE
	ERROR_INVALID_SYNTAX_SHOW_ALL_NOT_ALLOWED
	ERROR_INVALID_SYNTAX_DUMP_TYPE_UNKNOWN
	ERROR_INVALID_SYNTAX_ALTER_DATABASE_ONLINE_OFFLINE
	ERROR_INVALID_SYNTAX_DATETIME_ADD_BAD_TYPE
	ERROR_INVALID_SYNTAX_EXIT_NOT_START_OF_LINE
	ERROR_INVALID_SYNTAX_SUBQUERY_NOT_ALLOWED
	ERROR_INVALID_SYNTAX_HINT_INDEX_EXPECTED
	ERROR_INVALID_SYNTAX_RANDOM_NUMERIC_BAD_P_S
	ERROR_INVALID_SYNTAX_RANDOM_VARCHAR_BAD_LEN_MIN_MAX

	ERROR_INVALID_SYNTAX_OBJECT_NAME_EXPECTED
	ERROR_INVALID_SYNTAX_OBJECT_TOO_MANY_PARTS
	ERROR_INVALID_SYNTAX_LOGIN_NAME_EXPECTED
	ERROR_INVALID_SYNTAX_WITH_KEYWORD_EXPECTED
	ERROR_INVALID_SYNTAX_NULL_KEYWORD_EXPECTED
	ERROR_INVALID_SYNTAX_KEY_KEYWORD_EXPECTED
	ERROR_INVALID_SYNTAX_SET_KEYWORD_EXPECTED
	ERROR_INVALID_SYNTAX_ON_KEYWORD_EXPECTED
	ERROR_INVALID_SYNTAX_TO_KEYWORD_EXPECTED
	ERROR_INVALID_SYNTAX_JOIN_KEYWORD_EXPECTED
	ERROR_INVALID_SYNTAX_COLUMN_KEYWORD_EXPECTED
	ERROR_INVALID_SYNTAX_VALUES_KEYWORD_EXPECTED
	ERROR_INVALID_SYNTAX_FROM_KEYWORD_EXPECTED
	ERROR_INVALID_SYNTAX_BY_KEYWORD_EXPECTED
	ERROR_INVALID_SYNTAX_TABLE_KEYWORD_EXPECTED
	ERROR_INVALID_SYNTAX_INDEX_KEYWORD_EXPECTED
	ERROR_INVALID_SYNTAX_OPTION_EXPECTED
	ERROR_INVALID_SYNTAX_OPTION_MISSING_EQUAL
	ERROR_INVALID_SYNTAX_OPTION_LITERAL_STRING_REQUIRED
	ERROR_INVALID_SYNTAX_OPTION_IDENTIFIER_REQUIRED
	ERROR_INVALID_SYNTAX_OPTION_UNKNOWN
	ERROR_INVALID_SYNTAX_PARAMETER_UNKNOWN
	ERROR_INVALID_SYNTAX_LOGIN_PASSWORD_EXPECTED
	ERROR_INVALID_SYNTAX_COMMA_EXPECTED
	ERROR_INVALID_SYNTAX_COLON_EXPECTED
	ERROR_INVALID_SYNTAX_VARCHAR_EXPECTED
	ERROR_INVALID_SYNTAX_IDENTIFIER_EXPECTED
	ERROR_INVALID_SYNTAX_LITERAL_STRING_EXPECTED
	ERROR_INVALID_SYNTAX_LITERAL_STRING_OR_IDENTIFIER_EXPECTED
	ERROR_INVALID_SYNTAX_LITERAL_INTEGER_EXPECTED
	ERROR_INVALID_SYNTAX_LITERAL_POSITIVE_INTEGER_EXPECTED
	ERROR_INVALID_SYNTAX_LITERAL_POSITIVE_INTEGER_LIMITS
	ERROR_INVALID_SYNTAX_LITERAL_POSITIVE_FLOAT_EXPECTED
	ERROR_INVALID_SYNTAX_KEYWORD_ON_OFF_EXPECTED
	ERROR_INVALID_SYNTAX_KEYWORD_TRUE_FALSE_EXPECTED
	ERROR_INVALID_SYNTAX_EQUAL_EXPECTED
	ERROR_INVALID_SYNTAX_MINUS_EXPECTED
	ERROR_INVALID_SYNTAX_SET_ANSI_NULLS_OFF_FORBIDDEN
	ERROR_INVALID_SYNTAX_XXX_AUXWORD_EXPECTED
	ERROR_INVALID_SYNTAX_TOO_MANY_PRINCIPALS_IN_LIST
	ERROR_INVALID_SYNTAX_INVALID_GRANT_PERMISSION
	ERROR_INVALID_SYNTAX_INVALID_DENY_PERMISSION
	ERROR_INVALID_SYNTAX_INVALID_REVOKE_PERMISSION
	ERROR_INVALID_SYNTAX_CHECK_OR_NOCHECK_KEYWORD_EXPECTED
	ERROR_INVALID_SYNTAX_DATABASE_KEYWORD_EXPECTED
	ERROR_INVALID_SYNTAX_DISK_KEYWORD_EXPECTED
	ERROR_INVALID_SYNTAX_CREATE_KEYWORD_EXPECTED

	ERROR_INVALID_SYNTAX_COLUMN_NAME_EXPECTED
	ERROR_INVALID_SYNTAX_COL_ROWID_FORBIDDEN
	ERROR_INVALID_SYNTAX_COLNAME_CANNOT_BE_FUNCNAME
	ERROR_INVALID_SYNTAX_COL_COLLATE_CONSTRAINT_NAME_FOBIDDEN
	ERROR_INVALID_SYNTAX_COL_COLLATE_IN_EXCESS
	ERROR_INVALID_SYNTAX_COL_COLLATE_FORBIDDEN
	ERROR_INVALID_SYNTAX_COL_IDENTITY_CONSTRAINT_NAME_FOBIDDEN
	ERROR_INVALID_SYNTAX_COL_IDENTITY_IN_EXCESS
	ERROR_INVALID_SYNTAX_COL_IDENTITY_FORBIDDEN
	ERROR_INVALID_SYNTAX_COL_IDENTITY_BAD_SEED
	ERROR_INVALID_SYNTAX_COL_IDENTITY_BAD_INCREMENT_ZERO
	ERROR_INVALID_SYNTAX_COL_IDENTITY_NOT_NULL_EXPECTED
	ERROR_INVALID_SYNTAX_COL_INDEXES_IN_EXCESS
	ERROR_INVALID_SYNTAX_COL_INDEX_CONSTRAINT_NAME_FOBIDDEN
	ERROR_INVALID_SYNTAX_COL_DEFAULT_CONSTRAINT_NAME_FOBIDDEN
	ERROR_INVALID_SYNTAX_COL_UNKNOWN_CONSTRAINT
	ERROR_INVALID_SYNTAX_COL_NULL_CLAUSE_IN_EXCESS
	ERROR_INVALID_SYNTAX_CHECK_CONSTRAINT_NOT_SUPPORTED
	ERROR_INVALID_SYNTAX_DEFAULT_CONSTRAINT_NOT_SUPPORTED
	ERROR_INVALID_SYNTAX_TBL_INDEX_CONSTRAINT_NAME_FOBIDDEN
	ERROR_INVALID_SYNTAX_TBL_UNKNOWN_CONSTRAINT
	ERROR_INVALID_SYNTAX_TOO_MANY_COLUMNS_IN_TABLE
	ERROR_INVALID_SYNTAX_DUPLICATE_COLUMN_NAME_FOUND
	ERROR_INVALID_SYNTAX_DUPLICATE_INDEX_NAME_FOUND
	ERROR_INVALID_SYNTAX_TOO_MANY_INDEXES
	ERROR_INVALID_SYNTAX_TABLE_NO_COLUMN
	ERROR_INVALID_SYNTAX_TOO_MANY_INDEX_COLUMNS
	ERROR_INVALID_SYNTAX_INDEX_ROWID_KEY_FORBIDDEN
	ERROR_INVALID_SYNTAX_INDEX_KEY_NOT_FOUND
	ERROR_INVALID_SYNTAX_INDEX_DUPLICATE_KEY
	ERROR_INVALID_SYNTAX_FILE_GROUP_OR_PRIMARY_EXPECTED
	ERROR_INVALID_SYNTAX_TABLE_WITH_MANY_PRIMARY_KEYS
	ERROR_INVALID_SYNTAX_TABLE_WITH_MANY_CLUSTERED_INDEXES
	ERROR_INVALID_SYNTAX_PRIMARY_KEY_COLUMNS_MUST_BE_NOT_NULL
	ERROR_INVALID_SYNTAX_ALTER_TABLE_CLAUSE_UNKNOWN
	ERROR_INVALID_SYNTAX_ALTER_COLUMN_CLAUSE_UNKNOWN
	ERROR_INVALID_SYNTAX_WITH_CHECK_NOT_IMPLEMENTED
	ERROR_INVALID_SYNTAX_ALTER_COLUMN_ROWID_FORBIDDEN
	ERROR_INVALID_SYNTAX_TOO_MANY_COLUMNS_IN_LIST
	ERROR_INVALID_SYNTAX_ROWID_FORBIDDEN_IN_LIST
	ERROR_INVALID_SYNTAX_TOO_MANY_EXPRESSIONS_IN_VALUES
	ERROR_INVALID_SYNTAX_TOO_MANY_VALUES_FOR_INSERT_INTO
	ERROR_INVALID_SYNTAX_BAD_VALUES_LISTEXPR_COUNT_FOR_INSERT_INTO
	ERROR_INVALID_SYNTAX_BAD_SELECT_COL_COUNT_FOR_INSERT_INTO
	ERROR_INVALID_SYNTAX_INSERT_INTO_SOURCE_MISSING
	ERROR_INVALID_SYNTAX_MISSING_TABLEALIAS
	ERROR_INVALID_SYNTAX_TABLE_PAREN_NOT_ALLOWED
	ERROR_INVALID_SYNTAX_TABLE_TERM_EXPECTED
	ERROR_INVALID_SYNTAX_TOO_MANY_COLUMNS_IN_SELECT
	ERROR_INVALID_SYNTAX_INVALID_COL_LABEL
	ERROR_INVALID_SYNTAX_MISSING_COL_LABEL
	ERROR_INVALID_SYNTAX_STAR_EXPECTED
	ERROR_INVALID_SYNTAX_PREFIX_WITHOUT_TABLE_NAME
	ERROR_INVALID_SYNTAX_SELECT_OR_LPAREN_EXPECTED
	ERROR_INVALID_SYNTAX_TOO_MANY_ORDER_BY_IN_SELECT
	ERROR_INVALID_SYNTAX_TOO_MANY_GROUP_BY_IN_SELECT
	ERROR_INVALID_SYNTAX_ORDER_BY_DESC_NOT_IMPLEMENTED
	ERROR_INVALID_SYNTAX_AMBIGUOUS_COLUMN_NAME
	ERROR_INVALID_SYNTAX_COLUMN_NAME_NOT_FOUND
	ERROR_INVALID_SYNTAX_SELECT_EXPRESSION_WITHOUT_COLUMN_NAME
	ERROR_INVALID_SYNTAX_UNION_EXPRESSION_WITHOUT_COLUMN_NAME
	ERROR_INVALID_SYNTAX_PLACEHOLDER_TABLE_NOT_FOUND
	ERROR_INVALID_SYNTAX_UNION_COL_COUNT_MISMATCH
	ERROR_INVALID_SYNTAX_PLACEHOLDER_WITHOUT_FROM
	ERROR_INVALID_SYNTAX_ORDER_BY_NOT_ALLOWED_IN_UNION_MEMBER
	ERROR_INVALID_SYNTAX_ORDER_BY_NOT_ALLOWED_IN_INSERT
	ERROR_INVALID_SYNTAX_ORDER_BY_NOT_ALLOWED_IN_BULK_EXPORT
	ERROR_INVALID_SYNTAX_TOP_NOT_ALLOWED_IN_BULK_EXPORT
	ERROR_INVALID_SYNTAX_ORDER_BY_NOT_ALLOWED
	ERROR_INVALID_SYNTAX_AMBIGUOUS_TABLE_NAME
	ERROR_INVALID_SYNTAX_AMBIGUOUS_TARGET_TABLE_NAME
	ERROR_INVALID_SYNTAX_DATATYPE_ILLEGAL_IN_SELECT
	ERROR_INVALID_SYNTAX_DATATYPE_ILLEGAL_IN_GROUP_BY
	ERROR_INVALID_SYNTAX_TARGET_TABLE_NOT_FOUND
	ERROR_INVALID_SYNTAX_UPDATE_TOO_MANY_SET_CLAUSES
	ERROR_INVALID_SYNTAX_UPDATE_ROWID_FORBIDDEN
	ERROR_INVALID_SYNTAX_UPDATE_QUALIFIED_COLUMN_FORBIDDEN
	ERROR_INVALID_SYNTAX_KEY_DESC_NOT_IMPLEMENTED
	ERROR_INVALID_SYNTAX_AGGREGATE_FUNCTION_NOT_ALLOWED
	ERROR_INVALID_SYNTAX_COL_NOT_IN_GROUP_BY
	ERROR_INVALID_SYNTAX_GROUPBY_CONST_VAR_NOT_ALLOWED
	ERROR_INVALID_SYNTAX_TABLE_TEMPORARY_NOT_IMPLEMENTED
	ERROR_INVALID_SYNTAX_VARTABLE_WITH_SAME_NAME_EXISTS
	ERROR_INVALID_SYNTAX_HAVING_WITHOUT_GROUPING
	ERROR_INVALID_SYNTAX_ILLEGAL_HAVING_TERM
	ERROR_INVALID_SYNTAX_ORDER_BY_COLUMN_NAME_NOT_FOUND
	ERROR_INVALID_SYNTAX_ORDER_BY_EXPRESSION_NOT_FOUND
	ERROR_INVALID_SYNTAX_SELECT_VARIABLE_COUNT_MISMATCH
	ERROR_INVALID_SYNTAX_SELECT_VARIABLE_STAR_FOUND
	ERROR_INVALID_SYNTAX_SELECT_VARIABLE_NOT_STATEMENT_LEVEL
	ERROR_INVALID_SYNTAX_SELECT_TOP_NOT_AT_TOP_LEVEL

	ERROR_SQL_DATATYPE_UNKNOWN
	ERROR_SQL_DATATYPE_BAD_SPECIFIER_NATIONAL
	ERROR_SQL_DATATYPE_BAD_SPECIFIER_VARYING
	ERROR_SQL_DATATYPE_PRECISION_FORBIDDEN
	ERROR_SQL_DATATYPE_MAX_PRECISION_FORBIDDEN
	ERROR_SQL_DATATYPE_BAD_PRECISION
	ERROR_SQL_DATATYPE_SCALE_FORBIDDEN
	ERROR_SQL_DATATYPE_BAD_SCALE
	ERROR_SQL_DATATYPE_BAD_VALUE_FOR_PRECISION_OR_SCALE
	ERROR_SQL_DATATYPE_BAD_VALUE_FOR_PRECISION
	ERROR_SQL_DATATYPE_BINARY_NOT_IMPLEMENTED
	ERROR_SQL_DATATYPE_IMAGE_NOT_IMPLEMENTED
	ERROR_SQL_DATATYPE_TEXT_NOT_IMPLEMENTED

	ERROR_LEXEME_TO_UINT16_FAILED
	ERROR_LOGIN_PASSWORD_INCORRECT_LENGTH
	ERROR_LOGIN_PASSWORD_HASHING_FAILED
	ERROR_BAD_LOCALE_FORMAT
	ERROR_BAD_LOCALE_LANGUAGE_PART
	ERROR_BAD_LOCALE_SCRIPT_PART
	ERROR_BAD_LOCALE_REGION_PART
	ERROR_BAD_COLLATION_LOCALE
	ERROR_BAD_COLLATION_LOCALE_ATTRIBUTES
	ERROR_BAD_LOCALE_DATEFORMAT_ATTRIBUTE_FORBIDDEN
	ERROR_BAD_HEXA_DIGIT
	ERROR_HEXASTRING_MUST_START_WITH_0x
	ERROR_HEXASTRING_LENGTH_MUST_BE_EVEN
	ERROR_HEXASTRING_LENGTH_EXCEEDS_UINT64_SIZE

	ERROR_CONVERSION_STRING_TO_BOOLEAN_FAILED
	ERROR_CONVERSION_STRING_TO_BIT_FAILED
	ERROR_CONVERSION_STRING_TO_TINYINT_FAILED
	ERROR_CONVERSION_STRING_TO_SMALLINT_FAILED
	ERROR_CONVERSION_STRING_TO_INT_FAILED
	ERROR_CONVERSION_STRING_TO_BIGINT_FAILED
	ERROR_CONVERSION_STRING_TO_FLOAT_FAILED
	ERROR_CONVERSION_STRING_TO_DATE_FAILED
	ERROR_CONVERSION_STRING_TO_TIME_FAILED
	ERROR_CONVERSION_STRING_TO_DATETIME_FAILED

	ERROR_ASSERT_FAILED
	ERROR_ASSERT_NULL_FAILED
	ERROR_ASSERT_ERROR_BAD_SUFFIX
	ERROR_ASSERT_ERROR_NONE_FOUND
	ERROR_ASSERT_ERROR_FAILED
	ERROR_THROW
	ERROR_THROW_BAD_ERROR_NUMBER

	ERROR_TOO_MANY_DB_LOCKS
	ERROR_TOO_MANY_OBJECT_LOCKS

	ERROR_SQLITE_GENERAL
	ERROR_DICT_PREPARE_STMT
	ERROR_DICT_QUERY_STMT
	ERROR_DICT_SCAN_STMT

	ERROR_MASTER_LOGIN_NAME_DUPLICATE
	ERROR_MASTER_LOGIN_NAME_NOT_EXISTS
	ERROR_MASTER_LOGIN_OPERATION_NOT_ALLOWED
	ERROR_MASTER_DATABASE_NAME_DUPLICATE
	ERROR_MASTER_DATABASE_NAME_NOT_EXISTS
	ERROR_MASTER_DATABASE_OPERATION_NOT_ALLOWED
	ERROR_MASTER_SCHEMA_NAME_DUPLICATE
	ERROR_MASTER_SCHEMA_NAME_NOT_EXISTS
	ERROR_MASTER_OBJECT_NAME_DUPLICATE
	ERROR_MASTER_OBJECT_NAME_NOT_EXISTS
	ERROR_MASTER_INDEX_NAME_DUPLICATE
	ERROR_MASTER_INDEX_NAME_NOT_EXISTS
	ERROR_MASTER_PRINCIPAL_NAME_DUPLICATE
	ERROR_MASTER_PRINCIPAL_NAME_NOT_EXISTS
	ERROR_MASTER_PRINCIPAL_IS_ROLE
	ERROR_MASTER_PRINCIPAL_IS_USER
	ERROR_MASTER_PRINCIPAL_GRANT_DENY_TO_DBO_FORBIDDEN
	ERROR_MASTER_LOGIN_ID_USER_EXISTS
	ERROR_MASTER_CREATE_USER_LOGIN_ID_DUPLICATE
	ERROR_MASTER_ALTER_USER_LOGIN_ID_DUPLICATE
	ERROR_MASTER_ROLE_EXISTS_IN_ROLE_SUBTREE
	ERROR_MASTER_USER_OPERATION_NOT_ALLOWED
	ERROR_MASTER_ROLE_OPERATION_NOT_ALLOWED
	ERROR_MASTER_USER_IS_DB_OWNER
	ERROR_MASTER_DATABASE_OPERATION_FORBIDDEN_BECAUSE_STATUS
	ERROR_MASTER_CLUSTERED_INDEX_ALREADY_EXISTS
	ERROR_MASTER_PRIMARY_KEY_ALREADY_EXISTS
	ERROR_MASTER_COLUMN_NAME_DUPLICATE
	ERROR_MASTER_COLUMN_NAME_NOT_EXISTS
	ERROR_MASTER_PK_COLUMN_MUST_BE_NOT_NULL
	ERROR_MASTER_OPERATION_FORBIDDEN_ON_INVALID_GTABLE
	ERROR_MASTER_OPERATION_ALLOWED_ONLY_TO_SA
	ERROR_MASTER_OPERATION_ALLOWED_ONLY_TO_SA_OR_DBO
	ERROR_MASTER_OPERATION_ALLOWED_ONLY_TO_SA_OR_ANY_DBO
	ERROR_MASTER_USER_LOGIN_CANNOT_BE_SET_TO_SA
	ERROR_MASTER_LOGIN_AUTHENTICATION_FAILED
	ERROR_MASTER_LOGIN_DISABLED
	ERROR_MASTER_LOGIN_ID_HAS_BEEN_DROPPED
	ERROR_MASTER_LOGIN_HAS_NO_USER_FOR_DATABASE
	ERROR_MASTER_PERMISSION_DENIED
	ERROR_MASTER_PERMISSION_NOT_GRANTED
	ERROR_MASTER_PERMISSION_NOT_GRANTED_FOR_MISSING_USER

	ERROR_WCACHE_ELEMENT_ARRAY_MAX_SIZE_REACHED
	ERROR_WCACHE_TABLEFILE_MAX_SIZE_REACHED

	ERROR_TUPLE_TOO_LARGE
	ERROR_NODE_TUPLE_TOO_LARGE
	ERROR_DUPLICATE_KEY_FOUND
	ERROR_FILE_OPEN_FAILED
	ERROR_ENCODING_NAME_NOT_FOUND
	ERROR_SCANNER_FAILURE
	ERROR_BAD_FIELDTERMINATOR
	ERROR_BAD_ROWTERMINATOR_NO_NL
	ERROR_BAD_ROWTERMINATOR
	ERROR_FIRSTROW_CANNOT_BE_ZERO
	ERROR_KEEPNULLS_IS_MANDATORY
	ERROR_TOO_MANY_COLUMNS_IN_INPUT_FILE
	ERROR_BULK_DIR_NOT_INITIALIZED
	ERROR_DUMP_DIR_NOT_INITIALIZED
	ERROR_BULK_INSERT_COLUMN_DOESNT_ALLOW_NULL
	ERROR_BULK_INSERT_MISSING_IDENTITIY_OPTION
	ERROR_BAD_COLUMNS_COUNT_IN_INPUT_FILE
	ERROR_LAST_LINE_WITHOUT_ROWTERMINATOR
	ERROR_TABLE_COLUMN_DOESNT_ALLOW_NULL
	ERROR_BATCH_TOO_LARGE
	ERROR_MESSAGEPACK
	ERROR_CONNECTION_FAILED
	ERROR_NO_CF_ONLY_FOR_SA
	ERROR_CANCEL_BY_EOF
	ERROR_CANCEL_BY_TIMEOUT
	ERROR_CANCEL_BY_COMMUNICATION_FAILURE
	ERROR_SERVER_WORKERS_MAX_INVALID
	ERROR_SERVER_READ_TIMEOUT_INVALID
	ERROR_SERVER_LOCK_TICKER_INTERVAL_INVALID
	ERROR_SERVER_LOCK_TIMEOUT_TICKS_COUNT_INVALID
	ERROR_BULK_EXPORT_IO_ERROR
	ERROR_DUMP_IO_ERROR
	ERROR_BACKUP_IO_ERROR
	ERROR_RESTORE_IO_ERROR
	ERROR_COPY_IO_ERROR
	ERROR_SERVER_DEFAULT_COLLATION_CHANGE_NOT_ALLOWED
	ERROR_EXECUTE_TEMPLATE
	ERROR_DUMP_DATABASE_DDL_ONLY_MANDATORY
	ERROR_DB_STATUS_FAILURE
	ERROR_DB_MODE_FAILURE
	ERROR_DB_ACCESS_FAILURE_SA_OR_DBO_ONLY
	ERROR_TRANSACTION_FORBIDDEN_FOR_STMT
	ERROR_LOCKING_TIMEOUT
	ERROR_CREATE_CLUSTERED_INDEX_TABLE_NOT_EMPTY
	ERROR_STATEMENT_INCOMPATIBLE
	ERROR_COMMIT_WITHOUT_BEGIN_TRAN
	ERROR_ROLLBACK_WITHOUT_BEGIN_TRAN
	ERROR_TRANCOUNT_MAX_LIMIT
	ERROR_SLEEP_TOO_LONG
	ERROR_COLUMN_CONTAINS_NULL
	ERROR_INDEX_CORRUPTED
	ERROR_VOLATILE_FUNCTION_FORBIDDEN_IN_ON_WHERE
	ERROR_TEMPORARY_TABLE_ALREADY_EXISTS
	ERROR_TEMPORARY_TABLE_NOT_FOUND
	ERROR_BULK_EXPORT_FIELD_CONTAINS_FIELDTERMINATOR
	ERROR_BULK_EXPORT_FIELD_CONTAINS_ROWTERMINATOR
	ERROR_EMPTY_FILENAME
	ERROR_SERVER_DIRECTORY
	ERROR_FILEPATH
	ERROR_RESTORE_NEED_REPLACE_OPTION
	ERROR_RESTORE_ATTRIBUTE_MISSING
	ERROR_RESTORE_SECTION_ERROR
	ERROR_TOO_MANY_INSERTS_IN_BATCH

	WARNING_DROP_LOGIN_NOT_FOUND
	WARNING_DROP_USER_NOT_FOUND
	WARNING_DROP_ROLE_NOT_FOUND
	WARNING_DROP_TABLE_NOT_FOUND
	WARNING_DROP_INDEX_NOT_FOUND
	WARNING_DROP_CLUSTERED_INDEX_NOT_ALLOWED
)

Constants for Message_t.

func (Message_id_t) String

func (message_id Message_id_t) String() string

String returns message string of message_id. If message string is not found, return empty string.

type Object_qname_t

type Object_qname_t struct {
	Database_name        string
	Schema_name          string
	Object_name          string
	Object_name_original string
}

func (Object_qname_t) Is_variable_table

func (objqname Object_qname_t) Is_variable_table() bool

func (Object_qname_t) String

func (objqname Object_qname_t) String() string

type Permission_t

type Permission_t uint16
const (
	PERMISSION_SELECT Permission_t = 1 << iota
	PERMISSION_UPDATE
	PERMISSION_INSERT
	PERMISSION_DELETE

	PERMISSION_MODIFY_DATABASE    // this database permission is used to implement database READ_ONLY mode
	PERMISSION_MODIFY_PRINCIPAL   // this database permission is used to implement database READ_ONLY mode
	PERMISSION_MODIFY_OBJECT      // this database permission is used to implement database READ_ONLY mode
	PERMISSION_MODIFY_PERMISSIONS // this database permission is used to implement database READ_ONLY mode
)

func (Permission_t) String

func (perm Permission_t) String() string

func (Permission_t) String_long

func (perm Permission_t) String_long() string

type Request_t

type Request_t uint8

message types sent from client to server

const (
	REQTYP_AUTH      Request_t = 20
	REQTYP_BATCH     Request_t = 21
	REQTYP_KEEPALIVE Request_t = 30
	REQTYP_CANCEL    Request_t = 100
)

func (Request_t) String

func (req Request_t) String() string

type Response_t

type Response_t uint8

message types sent from server to client

const (
	RESTYP_LOGIN_FAILED  Response_t = 0
	RESTYP_LOGIN_SUCCESS Response_t = 1

	RESTYP_RECORD_LAYOUT   Response_t = 3
	RESTYP_RECORD          Response_t = 4
	RESTYP_RECORD_FINISHED Response_t = 5 // record count is sent to client

	RESTYP_EXECUTION_FINISHED Response_t = 7  // only statements that affect records, like INSERT, UPDATE, DELETE, send this response, along with number of rows affected. For the moment, other statements succeed silently without sending any response (perhaps it will change, I don't know. In this case, a value or -1 will mean that information about affected row count is not available).
	RESTYP_PRINT              Response_t = 10 // list of values, from PRINT statement

	RESTYP_MESSAGE Response_t = 11 // single string
	RESTYP_ERROR   Response_t = 12 // rsql.Error content

	RESTYP_BATCH_END Response_t = 14 // the return code is sent to client
)

func (Response_t) String

func (resp Response_t) String() string

type Restore_params

type Restore_params struct {
	Rt_replace bool
	Rt_no_user bool
	Rt_verbose bool
}

Params for RESTORE DATABASE statement.

type Row

type Row []IDataslot

Row is a record of IDataslots

When we insert a record into a table, a Row is serialized as a Tuple and written to disk. When we read a record, a Tuple is read from disk and deserialized into the Row.

type Select_params

type Select_params struct {
	Set_variables_list []IDataslot
	Set_variables_bb   *Basicblock

	TOP_value int64
}

Params for SELECT statement

type Severity_id_t

type Severity_id_t uint32

Severity_t is the severity id of an Error.

const (
	ERROR_IS_WARNING    Severity_id_t = 90  // just a warning. Send it to client and continue execution.
	ERROR_BATCH_ABORT   Severity_id_t = 100 // abort the current batch. Most errors have this severity.
	ERROR_SESSION_ABORT Severity_id_t = 101 // abort and close the connection.
	ERROR_SERVER_ABORT  Severity_id_t = 102 // abort the server. Really serious problem occurred.
)

Constants for Severity_t. Higher severities have higher numeric values.

func (Severity_id_t) String

func (severity_id Severity_id_t) String() string

type Sh_output_type_t

type Sh_output_type_t uint8
const (
	SH_OUTPUT_NORMAL Sh_output_type_t = 1 << iota
	SH_OUTPUT_ID
	SH_OUTPUT_SQL
	SH_OUTPUT_TEMPLATE
)

func (Sh_output_type_t) String

func (output_type Sh_output_type_t) String() string

type Show_info_params

type Show_info_params struct {
	Shinf_servername               string
	Shinf_server_default_collation string

	Shinf_login            IDataslot
	Shinf_current_user     IDataslot
	Shinf_current_database IDataslot
	Shinf_current_schema   IDataslot
	Shinf_current_language IDataslot
}

type Show_params

type Show_params struct {
	Sh_output_type Sh_output_type_t // NOMRAL, ID, SQL, TEMPLATE
	Sh_template    *template.Template
	Sh_option_ALL  bool
	Sh_option_PERM bool
	Sh_LIKE        bool

	Sh_database_name string
	Sh_schema_name   string
	Sh_object_name   string
	Sh_LIKE_pattern  string
	Sh_flag_unique   bool

	Sh_server_default_collation string // sorting order for SHOW output
}

Params for SHOW

type State_t

type State_t uint32

State_t is the state of an Error. By default, it is 1. Only THROW can send another value.

type Tabledef

type Tabledef struct {
	Td_tblid int64

	Td_dbid                int64
	Td_schid               int64
	Td_base_gtblid         int64 // for base table, same as Td_tblid. For index, base table tblid.
	Td_index_name          string
	Td_index_name_original string

	Td_file_path string // for permanent table only, not for flashtable

	Td_durability   Durability_t      // DURABILITY_PERMANENT, DURABILITY_TEMPORARY, DURABILITY_FLASH
	Td_type         Td_type_t         // TD_TYPE_BASE_TABLE, TD_TYPE_INDEX_TABLE
	Td_index_type   Td_index_type_t   // TD_UNIQUE, TD_PRIMARY_KEY, TD_INDEX
	Td_cluster_type Td_cluster_type_t // TD_CLUSTERED, TD_NONCLUSTERED, TD_CLUSTER_TYPE_UNDEFINED (exists only temporarily in parsing stage). After parsing, TD_TYPE_BASE_TABLE is always TD_CLUSTERED, and TD_TYPE_INDEX_TABLE is always TD_NONCLUSTERED.

	Td_coldefs []*Coldef // list of all columns stored in physical storage, in physical order
	Td_nk      []*Coldef // list of columns making up the native key of this table. If TD_INDEX, the column rowid is appended to make the native key unique.
	Td_payload []*Coldef // only for TD_TYPE_INDEX_TABLE: list of columns making up the native key of the base table.

	Td_status Td_status_t // TD_STATUS_BEING_CREATED, TD_STATUS_VALID, TD_STATUS_BEING_DROPPED, TD_STATUS_CORRUPTED
}

Description of physical storage, for a table or index.

A nonclustered index is a real index, and is physically like a normal table :
  - native key is made of columns from the index key list. If not PRIMARY KEY or UNIQUE, ROWID column is included, as native key must be unique.
  - it is followed by the native key columns of the base table, unless the column already exists in native key of this index.

The clustered index is the base table, which contains all columns. Records are physically sorted by the native key.
  - native key is made of columns from the index key list. If not PRIMARY KEY or UNIQUE, ROWID column is included, as native key must be unique.

PERMANENT TABLES and FLASHTABLES

If Td_tblid >= 0: ordinary table
                  permanent which definition (GTabledef) is stored in master.db.
                  Use wcache.wpc_journal for modifications, which are copied at commit to the table data file.

If Td_tblid <  0: flashtable (variable table (DECLARE @a TABLE) or grouptable or sorttable).
                  temporary table, which is created during parsing stage, and deleted when batch terminates.
                  Td_tblid is unique only in the batch.
                  GTabledef for variable table (not grouptable nor sorttable) is put in parser.Temptable_bag during batch duration.
                  Use wcache.wpc_flashjournal, and no table data file. Flashtables are never committed, but only live in the logfile.
                  In GTabledef and Tabledef, Td_dbid is trashdb and Td_schid is dbo. This is because some functions could use these info for display usage, but it should not happen.
                       So, there is no need to lock trashdb nor the flashtable when a flashtable is used.

func New_Tabledef

func New_Tabledef(table_type Td_type_t) *Tabledef

func (*Tabledef) Nk_is_rowid

func (base_tabledef *Tabledef) Nk_is_rowid() bool

type Td_cluster_type_t

type Td_cluster_type_t uint8
const (
	TD_CLUSTER_TYPE_UNDEFINED Td_cluster_type_t = 1 + iota // used only during parsing step and for PRIMARY KEY only, but is replaced as soon as possible by TD_CLUSTERED or TD_NONCLUSTERED.
	TD_CLUSTERED
	TD_NONCLUSTERED // value of TD_NONCLUSTERED must be > TD_CLUSTERED, because it is used by Show_list_of_indexdefs for sorting clustered index first
)

func (Td_cluster_type_t) String

func (cluster_type Td_cluster_type_t) String() string

type Td_index_type_t

type Td_index_type_t uint8
const (
	TD_PRIMARY_KEY Td_index_type_t = 1 << iota
	TD_UNIQUE
	TD_INDEX // physically, an index of type TD_INDEX is made unique by appending ROWID column
)

func (Td_index_type_t) String

func (index_type Td_index_type_t) String() string

type Td_status_t

type Td_status_t uint8
const (
	TD_STATUS_BEING_CREATED Td_status_t = iota
	TD_STATUS_VALID
	TD_STATUS_BEING_DROPPED
	TD_STATUS_CORRUPTED
)

func (Td_status_t) String

func (status Td_status_t) String() string

type Td_type_t

type Td_type_t uint8
const (
	TD_TYPE_BASE_TABLE  Td_type_t = 0
	TD_TYPE_INDEX_TABLE Td_type_t = 1
)

func (Td_type_t) String

func (t Td_type_t) String() string

type Temptable_bag

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

GTabledef for variable table (not grouptable nor sorttable) is put in parser.Temptable_bag during batch duration.

func New_Temptable_bag

func New_Temptable_bag() *Temptable_bag

func (*Temptable_bag) Bag

func (tablebag *Temptable_bag) Bag() map[string]*GTabledef

func (*Temptable_bag) Exists

func (tablebag *Temptable_bag) Exists(tblname string) bool

func (*Temptable_bag) Get

func (tablebag *Temptable_bag) Get(tblname string) (*GTabledef, *Error)

func (*Temptable_bag) Put

func (tablebag *Temptable_bag) Put(tblname string, gtabledef *GTabledef) *Error

func (*Temptable_bag) Remove

func (tablebag *Temptable_bag) Remove(tblname string)

type Tuple

type Tuple []byte

Tuple is a serialized Row, stored on disk as a stream of bytes.

Its structure is:

     offset of field 0                 uint16    number of fields == offset of field 0 / 2 - 1
     offset of field 1                 uint16
     ...
     offset of field n-1               uint16
     offset of sentinel field n        uint16    this field n doesn't really exists, This offset value it just one byte past the end of field n-1. It is the length of the tuple, in bytes.

     serialized value of field 0       bunch of bytes, starting at "offset of field 0"
     ...                               bunch of bytes
     serialized value of field n-1     bunch of bytes, starting at "offset of field n-1"

The illustration of the layout is:
      ======================= header of offsets ==================----------------------------- data ------------------------------------
      | offset 0 | offset 1 | ... | offset n-1 | offset sentinel | serialized field 0 | serialized field 1 | ... | serialized field n-1 |
      ============================================================-----------------------------------------------------------------------

func (Tuple) Field_count

func (tuple Tuple) Field_count() int

Field_count returns number of fields in tuple.

See data/data_tuple_serialization.go for serialization format.

func (Tuple) Get_field_part

func (tuple Tuple) Get_field_part(i int) []byte

func (Tuple) Get_last_field_uint64

func (tuple Tuple) Get_last_field_uint64() uint64

func (Tuple) Set_last_field_uint64

func (tuple Tuple) Set_last_field_uint64(v uint64)

type Tuple_type_t

type Tuple_type_t uint8
const (
	TUPLE_TYPE_LEAF Tuple_type_t = iota + 1
	TUPLE_TYPE_NODE
)

type Update_params

type Update_params struct {
	Ud_insertion_base_row []IDataslot          // row to insert. Contains dataslots from target cursor, or SET expressions.
	Ud_cursor             interface{}          // always csr.Cursor. But we cannot declare it here, because of circular import. FROM cursor tree.
	Ud_target_cursor      interface{}          // always csr.Cursor. But we cannot declare it here, because of circular import. Points to target table cursor, inside Ud_cursor tree.
	Ud_basicblock         *Basicblock          // instructions to evaluate SET expressions.
	Ud_indexes_to_update  map[string]*Tabledef // indexes to update, because they contain columns that are updated. If nil, all indexes must be updated.
}

Params for UPDATE

Directories

Path Synopsis
package btree implements a btree on disk.
package btree implements a btree on disk.
Package cache is the implementation of the page cache of the database server.
Package cache is the implementation of the page cache of the database server.
Package data contains the structures of all SQL datatypes used by rsql.
Package data contains the structures of all SQL datatypes used by rsql.
Package deco contains the decorator of RSQL.
Package deco contains the decorator of RSQL.
Package lex contains the lexer of RSQL.
Package lex contains the lexer of RSQL.
Package like implements functions used by LIKE operator.
Package like implements functions used by LIKE operator.

Jump to

Keyboard shortcuts

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