MCPcopy Create free account
hub / github.com/ajitpratap0/GoSQLX / ValidateBytesWithDialect

Function ValidateBytesWithDialect

pkg/sql/parser/validate.go:151–184  ·  view source on GitHub ↗

ValidateBytesWithDialect is like ValidateWithDialect but accepts []byte.

(input []byte, dialect keywords.SQLDialect)

Source from the content-addressed store, hash-verified

149
150// ValidateBytesWithDialect is like ValidateWithDialect but accepts []byte.
151func ValidateBytesWithDialect(input []byte, dialect keywords.SQLDialect) error {
152 if len(trimBytes(input)) == 0 {
153 return nil
154 }
155
156 if !keywords.IsValidDialect(string(dialect)) {
157 return fmt.Errorf("unknown SQL dialect %q; valid dialects: %s",
158 dialect, validDialectList())
159 }
160
161 tkz, err := tokenizer.NewWithDialect(dialect)
162 if err != nil {
163 return fmt.Errorf("tokenizer initialization: %w", err)
164 }
165
166 tokens, err := tkz.Tokenize(input)
167 if err != nil {
168 return fmt.Errorf("tokenization error: %w", err)
169 }
170
171 if len(tokens) == 0 {
172 return nil
173 }
174
175 p := NewParser(WithDialect(string(dialect)))
176 defer p.Release()
177
178 astResult, parseErr := p.ParseFromModelTokens(tokens)
179 if parseErr != nil {
180 return parseErr
181 }
182 ast.ReleaseAST(astResult)
183 return nil
184}
185
186// ParseWithDialect parses SQL using the specified dialect for keyword recognition.
187// This is a convenience function combining dialect-aware tokenization and parsing.

Callers 1

ValidateWithDialectFunction · 0.85

Calls 11

ReleaseMethod · 0.95
ParseFromModelTokensMethod · 0.95
IsValidDialectFunction · 0.92
NewWithDialectFunction · 0.92
ReleaseASTFunction · 0.92
trimBytesFunction · 0.85
validDialectListFunction · 0.85
WithDialectFunction · 0.85
TokenizeMethod · 0.80
NewParserFunction · 0.70
ErrorfMethod · 0.65

Tested by

no test coverage detected