Documentation ¶
Index ¶
Constants ¶
View Source
const (
AllRules = NoCartesianProduct | GuaranteedOrder | ReplaceNamedParameters
)
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AcceptRecoverer ¶ added in v0.7.0
AcceptRecoverer is a wrapper around a statement that implements the accepter interface it catches panics and returns them as errors
func NewAcceptRecoverer ¶ added in v0.7.0
func NewAcceptRecoverer(a tree.Accepter) *AcceptRecoverer
type AnalyzedStatement ¶
type AnalyzedStatement struct { // Statement is the rewritten SQL statement, with the correct rules applied Statement string // Mutative indicates if the statement mutates state. // If true, then the statement cannot run in a read-only transaction. Mutative bool // HasTableRefs indicates if the statement included tables IFF the // NamedParametersVisitor was run on the AST after parsing. These tables // would have had a schema prefixed by the walker. This can indicate if the // statement alone is not likely to provide type (OID) information by // preparing the statement with the database backend. HasTableRefs bool // ParameterOrder is a list of the parameters in the order they appear in the statement. // This is set if the ReplaceNamedParameters flag is set. // For example, if the statement is "SELECT * FROM table WHERE id = $id AND name = @caller", // then the parameter order would be ["$id", "@caller"] ParameterOrder []string }
AnalyzedStatement is a statement that has been analyzed by the analyzer As we progressively add more types of analysis (e.g. query pricing), we will add more fields to this struct
func ApplyRules ¶
func ApplyRules(stmt string, flags VerifyFlag, tables []*common.Table, pgSchemaName string) (*AnalyzedStatement, error)
ApplyRules analyzes the given statement and returns the transformed statement. It parses it, and then traverses the AST with the given flags. It will alter the statement to make it conform to the given flags, or return an error if it cannot. All tables will target the pgSchemaName schema.
type VerifyFlag ¶
type VerifyFlag uint8
const ( // NoCartesianProduct prevents cartesian products from being generated NoCartesianProduct VerifyFlag = 1 << iota // GuaranteedOrder provides a guarantee of deterministic ordering of the results (even if it is not explicitly specified in the query) GuaranteedOrder // ReplaceNamedParameters replaces named parameters with numbered parameters ReplaceNamedParameters )
Directories ¶
Path | Synopsis |
---|---|
Package attributes analyzes a returned relations attributes, maintaining order.
|
Package attributes analyzes a returned relations attributes, maintaining order. |
Package clean cleans SQL queries.
|
Package clean cleans SQL queries. |
Click to show internal directories.
Click to hide internal directories.