chore: ⬆️ updated deps
This commit is contained in:
+139
-50
@@ -1,3 +1,6 @@
|
||||
// Package feature defines flags that represent optional SQL dialect capabilities.
|
||||
// Each dialect (PostgreSQL, MySQL, SQLite, MSSQL) declares which features it supports
|
||||
// by combining flags with the bitwise OR operator.
|
||||
package feature
|
||||
|
||||
import (
|
||||
@@ -7,44 +10,110 @@ import (
|
||||
"github.com/uptrace/bun/internal"
|
||||
)
|
||||
|
||||
// Feature is a bit flag representing an optional SQL dialect capability.
|
||||
type Feature = internal.Flag
|
||||
|
||||
const (
|
||||
// Common query features.
|
||||
|
||||
// CTE enables Common Table Expressions (WITH ... AS ...) syntax.
|
||||
CTE Feature = 1 << iota
|
||||
// WithValues enables WITH ... (VALUES ...) syntax for inline value lists.
|
||||
WithValues
|
||||
// Returning enables the RETURNING clause to return rows affected by DML statements.
|
||||
Returning
|
||||
InsertReturning
|
||||
Output // mssql
|
||||
// Output enables the OUTPUT clause, the MSSQL equivalent of RETURNING.
|
||||
Output
|
||||
// DefaultPlaceholder enables the DEFAULT keyword as a placeholder in INSERT value lists.
|
||||
DefaultPlaceholder
|
||||
// DoubleColonCast enables PostgreSQL-style :: type cast syntax.
|
||||
DoubleColonCast
|
||||
// ValuesRow enables VALUES ROW(...) syntax.
|
||||
ValuesRow
|
||||
UpdateMultiTable
|
||||
InsertTableAlias
|
||||
UpdateTableAlias
|
||||
DeleteTableAlias
|
||||
AutoIncrement
|
||||
Identity
|
||||
TableCascade
|
||||
TableIdentity
|
||||
TableTruncate
|
||||
InsertOnConflict // INSERT ... ON CONFLICT
|
||||
InsertOnDuplicateKey // INSERT ... ON DUPLICATE KEY
|
||||
InsertIgnore // INSERT IGNORE ...
|
||||
TableNotExists
|
||||
// CompositeIn enables WHERE (A, B) IN ((N, NN), (N, NN), ...) composite comparison syntax.
|
||||
CompositeIn
|
||||
|
||||
// SELECT features.
|
||||
|
||||
// OffsetFetch enables OFFSET ... FETCH NEXT syntax (MSSQL).
|
||||
OffsetFetch
|
||||
// SelectExists enables EXISTS subquery expressions.
|
||||
SelectExists
|
||||
|
||||
// INSERT features.
|
||||
|
||||
// InsertReturning enables INSERT ... RETURNING syntax.
|
||||
InsertReturning
|
||||
// InsertTableAlias enables table alias support in INSERT statements.
|
||||
InsertTableAlias
|
||||
// InsertOnConflict enables INSERT ... ON CONFLICT syntax (PostgreSQL, SQLite).
|
||||
InsertOnConflict
|
||||
// InsertOnDuplicateKey enables INSERT ... ON DUPLICATE KEY syntax (MySQL).
|
||||
InsertOnDuplicateKey
|
||||
// InsertIgnore enables INSERT IGNORE syntax to silently skip conflicting rows (MySQL).
|
||||
InsertIgnore
|
||||
|
||||
// UPDATE features.
|
||||
|
||||
// UpdateFromTable enables UPDATE ... FROM ... syntax for joining tables in updates.
|
||||
UpdateFromTable
|
||||
MSSavepoint
|
||||
GeneratedIdentity
|
||||
CompositeIn // ... WHERE (A,B) IN ((N, NN), (N, NN)...)
|
||||
UpdateOrderLimit // UPDATE ... ORDER BY ... LIMIT ...
|
||||
DeleteOrderLimit // DELETE ... ORDER BY ... LIMIT ...
|
||||
// UpdateMultiTable enables multi-table UPDATE syntax (MySQL).
|
||||
UpdateMultiTable
|
||||
// UpdateTableAlias enables table alias support in UPDATE statements.
|
||||
UpdateTableAlias
|
||||
// UpdateOrderLimit enables UPDATE ... ORDER BY ... LIMIT syntax.
|
||||
UpdateOrderLimit
|
||||
|
||||
// DELETE features.
|
||||
|
||||
// DeleteReturning enables DELETE ... RETURNING syntax.
|
||||
DeleteReturning
|
||||
// DeleteTableAlias enables table alias support in DELETE statements.
|
||||
DeleteTableAlias
|
||||
// DeleteOrderLimit enables DELETE ... ORDER BY ... LIMIT syntax.
|
||||
DeleteOrderLimit
|
||||
|
||||
// MERGE features.
|
||||
|
||||
// Merge enables MERGE ... USING ... ON ... WHEN syntax for upsert operations.
|
||||
Merge
|
||||
// MergeReturning enables MERGE ... RETURNING syntax.
|
||||
MergeReturning
|
||||
AlterColumnExists // ADD/DROP COLUMN IF NOT EXISTS/IF EXISTS
|
||||
FKDefaultOnAction // FK ON UPDATE/ON DELETE has default value: NO ACTION
|
||||
|
||||
// Table DDL features.
|
||||
|
||||
// TableCascade enables CASCADE support for DROP TABLE and related operations.
|
||||
TableCascade
|
||||
// TableIdentity enables table-level IDENTITY property (MSSQL).
|
||||
TableIdentity
|
||||
// TableTruncate enables TRUNCATE TABLE support.
|
||||
TableTruncate
|
||||
// TableNotExists enables IF NOT EXISTS / IF EXISTS syntax for CREATE TABLE and DROP TABLE.
|
||||
TableNotExists
|
||||
// AlterColumnExists enables ADD/DROP COLUMN IF NOT EXISTS / IF EXISTS syntax.
|
||||
AlterColumnExists
|
||||
// CreateIndexIfNotExists enables CREATE INDEX IF NOT EXISTS syntax.
|
||||
CreateIndexIfNotExists
|
||||
|
||||
// Column definition features.
|
||||
|
||||
// AutoIncrement enables AUTO_INCREMENT syntax for auto-generated columns (MySQL).
|
||||
AutoIncrement
|
||||
// Identity enables IDENTITY column syntax for auto-generated columns (MSSQL).
|
||||
Identity
|
||||
// GeneratedIdentity enables GENERATED ALWAYS AS IDENTITY syntax (PostgreSQL).
|
||||
GeneratedIdentity
|
||||
|
||||
// Dialect-specific features.
|
||||
|
||||
// FKDefaultOnAction indicates that FK ON UPDATE/ON DELETE has the default value NO ACTION.
|
||||
FKDefaultOnAction
|
||||
// MSSavepoint enables Microsoft SQL Server savepoint support.
|
||||
MSSavepoint
|
||||
)
|
||||
|
||||
// NotSupportError is returned when an operation requires a feature
|
||||
// that the current dialect does not support.
|
||||
type NotSupportError struct {
|
||||
Flag Feature
|
||||
}
|
||||
@@ -57,42 +126,62 @@ func (err *NotSupportError) Error() string {
|
||||
return fmt.Sprintf("bun: feature %s is not supported by current dialect", name)
|
||||
}
|
||||
|
||||
// NewNotSupportError returns a NotSupportError for the given feature flag.
|
||||
func NewNotSupportError(flag Feature) *NotSupportError {
|
||||
return &NotSupportError{Flag: flag}
|
||||
}
|
||||
|
||||
var flag2str = map[Feature]string{
|
||||
CTE: "CTE",
|
||||
WithValues: "WithValues",
|
||||
Returning: "Returning",
|
||||
// Common query features.
|
||||
CTE: "CTE",
|
||||
WithValues: "WithValues",
|
||||
Returning: "Returning",
|
||||
Output: "Output",
|
||||
DefaultPlaceholder: "DefaultPlaceholder",
|
||||
DoubleColonCast: "DoubleColonCast",
|
||||
ValuesRow: "ValuesRow",
|
||||
CompositeIn: "CompositeIn",
|
||||
|
||||
// SELECT features.
|
||||
OffsetFetch: "OffsetFetch",
|
||||
SelectExists: "SelectExists",
|
||||
|
||||
// INSERT features.
|
||||
InsertReturning: "InsertReturning",
|
||||
Output: "Output",
|
||||
DefaultPlaceholder: "DefaultPlaceholder",
|
||||
DoubleColonCast: "DoubleColonCast",
|
||||
ValuesRow: "ValuesRow",
|
||||
UpdateMultiTable: "UpdateMultiTable",
|
||||
InsertTableAlias: "InsertTableAlias",
|
||||
UpdateTableAlias: "UpdateTableAlias",
|
||||
DeleteTableAlias: "DeleteTableAlias",
|
||||
AutoIncrement: "AutoIncrement",
|
||||
Identity: "Identity",
|
||||
TableCascade: "TableCascade",
|
||||
TableIdentity: "TableIdentity",
|
||||
TableTruncate: "TableTruncate",
|
||||
InsertOnConflict: "InsertOnConflict",
|
||||
InsertOnDuplicateKey: "InsertOnDuplicateKey",
|
||||
InsertIgnore: "InsertIgnore",
|
||||
TableNotExists: "TableNotExists",
|
||||
OffsetFetch: "OffsetFetch",
|
||||
SelectExists: "SelectExists",
|
||||
UpdateFromTable: "UpdateFromTable",
|
||||
MSSavepoint: "MSSavepoint",
|
||||
GeneratedIdentity: "GeneratedIdentity",
|
||||
CompositeIn: "CompositeIn",
|
||||
UpdateOrderLimit: "UpdateOrderLimit",
|
||||
DeleteOrderLimit: "DeleteOrderLimit",
|
||||
DeleteReturning: "DeleteReturning",
|
||||
MergeReturning: "MergeReturning",
|
||||
AlterColumnExists: "AlterColumnExists",
|
||||
FKDefaultOnAction: "FKDefaultOnAction",
|
||||
|
||||
// UPDATE features.
|
||||
UpdateFromTable: "UpdateFromTable",
|
||||
UpdateMultiTable: "UpdateMultiTable",
|
||||
UpdateTableAlias: "UpdateTableAlias",
|
||||
UpdateOrderLimit: "UpdateOrderLimit",
|
||||
|
||||
// DELETE features.
|
||||
DeleteReturning: "DeleteReturning",
|
||||
DeleteTableAlias: "DeleteTableAlias",
|
||||
DeleteOrderLimit: "DeleteOrderLimit",
|
||||
|
||||
// MERGE features.
|
||||
Merge: "Merge",
|
||||
MergeReturning: "MergeReturning",
|
||||
|
||||
// Table DDL features.
|
||||
TableCascade: "TableCascade",
|
||||
TableIdentity: "TableIdentity",
|
||||
TableTruncate: "TableTruncate",
|
||||
TableNotExists: "TableNotExists",
|
||||
AlterColumnExists: "AlterColumnExists",
|
||||
CreateIndexIfNotExists: "CreateIndexIfNotExists",
|
||||
|
||||
// Column definition features.
|
||||
AutoIncrement: "AutoIncrement",
|
||||
Identity: "Identity",
|
||||
GeneratedIdentity: "GeneratedIdentity",
|
||||
|
||||
// Dialect-specific features.
|
||||
FKDefaultOnAction: "FKDefaultOnAction",
|
||||
MSSavepoint: "MSSavepoint",
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user