dialect

package
v3.14.0 Latest Latest
Warning

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

Go to latest
Published: Mar 8, 2026 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GenericRenderMutationPostamble

func GenericRenderMutationPostamble(ctx Context, qc *qcode.QCode)

Types

type Context

type Context interface {
	Write(s string) (int, error)
	WriteString(s string) (int, error) // io.StringWriter
	AddParam(p Param) string

	// Helpers commonly used by dialects
	Quote(s string)
	ColWithTable(table, col string)
	RenderJSONFields(sel *qcode.Select)
	IsTableMutated(table string) bool
	RenderExp(ti sdata.DBTable, ex *qcode.Exp)
	GetStaticVar(name string) (string, bool) // Get config-level variable
	GetSecPrefix() string                    // Get security prefix for cursor encryption
}

type Dialect

type Dialect interface {
	Name() string

	RenderLimit(ctx Context, sel *qcode.Select)
	RenderJSONRoot(ctx Context, sel *qcode.Select)
	RenderJSONSelect(ctx Context, sel *qcode.Select)
	RenderJSONPlural(ctx Context, sel *qcode.Select)
	RenderLateralJoin(ctx Context, sel *qcode.Select, multi bool)
	RenderJoinTables(ctx Context, sel *qcode.Select)
	RenderCursorCTE(ctx Context, sel *qcode.Select)
	RenderOrderBy(ctx Context, sel *qcode.Select)
	RenderDistinctOn(ctx Context, sel *qcode.Select)
	RenderFromEdge(ctx Context, sel *qcode.Select) // For embedded/JSONTable vs RecordSet

	RenderJSONPath(ctx Context, table, col string, path []string)
	RenderList(ctx Context, ex *qcode.Exp)
	RenderOp(op qcode.ExpOp) (string, error)
	RenderGeoOp(ctx Context, table, col string, ex *qcode.Exp) error // GIS spatial operator rendering
	RenderValPrefix(ctx Context, ex *qcode.Exp) bool
	RenderTsQuery(ctx Context, ti sdata.DBTable, ex *qcode.Exp)
	RenderSearchRank(ctx Context, sel *qcode.Select, f qcode.Field)
	RenderSearchHeadline(ctx Context, sel *qcode.Select, f qcode.Field)
	RenderValVar(ctx Context, ex *qcode.Exp, val string) bool
	RenderValArrayColumn(ctx Context, ex *qcode.Exp, table string, pid int32)
	RenderArray(ctx Context, items []string)
	RenderLiteral(ctx Context, val string, valType qcode.ValType)
	RenderBooleanEqualsTrue(ctx Context, paramName string)
	RenderBooleanNotEqualsTrue(ctx Context, paramName string)
	RenderJSONField(ctx Context, fieldName string, tableAlias string, colName string, isNull bool, isJSON bool)
	RenderRootTerminator(ctx Context)
	RenderBaseTable(ctx Context)
	RenderJSONRootField(ctx Context, key string, val func())
	RenderTableName(ctx Context, sel *qcode.Select, schema, table string)
	RenderTableAlias(ctx Context, alias string)
	RenderLateralJoinClose(ctx Context, alias string)

	// Parameter Handling
	BindVar(i int) string
	UseNamedParams() bool
	SupportsLateral() bool

	// Identifier quoting - each dialect uses different quote characters
	QuoteIdentifier(s string) string

	// Inline child rendering for dialects without LATERAL support
	// renderer provides callbacks to compiler methods
	RenderInlineChild(ctx Context, renderer InlineChildRenderer, psel, sel *qcode.Select)
	RenderChildCursor(ctx Context, renderChild func())
	RenderChildValue(ctx Context, sel *qcode.Select, renderChild func())

	// Mutation and Subscriptions
	SupportsReturning() bool
	SupportsWritableCTE() bool
	SupportsConflictUpdate() bool
	SupportsSubscriptionBatching() bool

	RenderMutationCTE(ctx Context, m *qcode.Mutate, renderBody func())
	RenderMutationInput(ctx Context, qc *qcode.QCode)
	RenderMutationPostamble(ctx Context, qc *qcode.QCode)

	RenderInsert(ctx Context, m *qcode.Mutate, values func())
	RenderUpdate(ctx Context, m *qcode.Mutate, set func(), from func(), where func())
	RenderDelete(ctx Context, m *qcode.Mutate, where func())
	RenderUpsert(ctx Context, m *qcode.Mutate, insert func(), updateSet func())
	RenderReturning(ctx Context, m *qcode.Mutate)
	RenderAssign(ctx Context, col string, val string)
	RenderCast(ctx Context, val func(), typ string)
	RenderTryCast(ctx Context, val func(), typ string)

	RenderSubscriptionUnbox(ctx Context, params []Param, innerSQL string)

	// Linear Execution (for MySQL/SQLite)
	SupportsLinearExecution() bool
	RenderIDCapture(ctx Context, varName string)
	RenderVar(ctx Context, name string)
	RenderSetup(ctx Context)
	RenderBegin(ctx Context)
	RenderTeardown(ctx Context)
	RenderVarDeclaration(ctx Context, name, typeName string)
	RenderMutateToRecordSet(ctx Context, m *qcode.Mutate, n int, renderRoot func())
	RenderSetSessionVar(ctx Context, name, value string) bool

	RenderLinearInsert(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderColVal func(qcode.MColumn))
	RenderLinearUpdate(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderColVal func(qcode.MColumn), renderWhere func())
	RenderLinearConnect(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderFilter func())
	RenderLinearDisconnect(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderFilter func())

	ModifySelectsForMutation(qc *qcode.QCode)
	RenderQueryPrefix(ctx Context, qc *qcode.QCode)
	SplitQuery(query string) []string

	// Role Statement rendering (moves db-specific code from core/rolestmt.go)
	// These return strings since they're used outside the psql compiler context
	RoleSelectPrefix() string                     // "SELECT TOP 1 (CASE" vs "SELECT (CASE"
	RoleLimitSuffix() string                      // Close with/without LIMIT 1
	RoleDummyTable() string                       // Database-specific dummy table
	TransformBooleanLiterals(match string) string // "true"→"1" for MSSQL

	// Driver Behavior (moves db-specific code from core/args.go and core/core.go)
	RequiresJSONAsString() bool         // Oracle/MSSQL need JSON as string
	RequiresLowercaseIdentifiers() bool // Oracle needs lowercase schemas
	RequiresBooleanAsInt() bool         // Oracle needs bool as 1/0 (PL/SQL BOOLEAN can't be used in SQL)

	// Recursive CTE Syntax (moves db-specific code from psql/recur.go)
	RequiresRecursiveKeyword() bool       // Oracle doesn't use RECURSIVE
	RequiresRecursiveCTEColumnList() bool // Oracle requires explicit column alias list
	RenderRecursiveOffset(ctx Context)    // OFFSET 1 vs LIMIT -1 OFFSET 1 vs LIMIT 1, MAX
	RenderRecursiveLimit1(ctx Context)    // LIMIT 1 vs FETCH FIRST 1 ROWS ONLY
	WrapRecursiveSelect() bool            // SQLite needs extra SELECT * FROM (...)
	// RenderRecursiveAnchorWhere renders the WHERE clause for recursive CTE anchor
	// Returns true if it handled the WHERE rendering, false to use default correlation
	// For Oracle/MSSQL: inline parent's WHERE expression (no outer scope correlation)
	// For Postgres/MySQL: return false to use default outer scope correlation
	RenderRecursiveAnchorWhere(ctx Context, psel *qcode.Select, ti sdata.DBTable, pkCol string) bool

	// JSON Null Fields (moves db-specific code from psql/query.go)
	RenderJSONNullField(ctx Context, fieldName string)       // NULL field syntax
	RenderJSONNullCursorField(ctx Context, fieldName string) // NULL cursor field syntax
	RenderJSONRootSuffix(ctx Context)                        // FOR JSON PATH for MSSQL, empty for others

	// Array Operations (moves db-specific code from psql/mutate.go)
	RenderArraySelectPrefix(ctx Context)                   // ARRAY(SELECT vs (SELECT JSON_ARRAYAGG(
	RenderArraySelectSuffix(ctx Context)                   // ) vs ))
	RenderArrayAggPrefix(ctx Context, distinct bool)       // ARRAY_AGG vs json_group_array vs JSON_ARRAYAGG
	RenderArrayRemove(ctx Context, col string, val func()) // array_remove vs JSON_REMOVE

	// Column rendering (moves db-specific code from psql/columns.go)
	RequiresJSONQueryWrapper() bool  // MariaDB needs JSON_QUERY wrapper for inline children
	RequiresNullOnEmptySelect() bool // MySQL/SQLite/MariaDB need NULL when no columns rendered
}

type FullMutationCompiler

type FullMutationCompiler interface {
	// CompileFullMutation generates the complete mutation output.
	// Returns true if it handled the compilation, false to use default SQL generation.
	CompileFullMutation(ctx Context, qc *qcode.QCode) bool
}

FullMutationCompiler is an optional interface that dialects can implement to handle entire mutation compilation themselves (bypassing SQL generation). This is used by MongoDB which generates JSON mutation DSL, not SQL.

type FullQueryCompiler

type FullQueryCompiler interface {
	// CompileFullQuery generates the complete query output.
	// Returns true if it handled the compilation, false to use default SQL generation.
	CompileFullQuery(ctx Context, qc *qcode.QCode) bool
}

FullQueryCompiler is an optional interface that dialects can implement to handle entire query compilation themselves (bypassing SQL generation). This is used by MongoDB which generates JSON query DSL, not SQL.

type InlineChildRenderer

type InlineChildRenderer interface {
	RenderTable(sel *qcode.Select, schema, table string, alias bool)
	RenderJoin(join qcode.Join)
	RenderLimit(sel *qcode.Select)
	RenderOrderBy(sel *qcode.Select)
	RenderWhereExp(psel, sel *qcode.Select, ex interface{})
	RenderInlineChild(psel, sel *qcode.Select)
	RenderDefaultInlineChild(sel *qcode.Select) // For dialects that want to use the default implementation
	GetChild(id int32) *qcode.Select
	ColWithTable(table, col string)
	Quoted(s string)
	Squoted(s string)
	RenderExp(ti sdata.DBTable, ex *qcode.Exp)
	GetConfigVar(name string) (string, bool) // Returns config var value and whether it exists
	GetSecPrefix() string
	GetRootWithCursor() *qcode.Select // Returns first root select with cursor pagination
}

InlineChildRenderer is passed to dialects for rendering inline children It provides callbacks to compiler methods that dialects need

type MSSQLDialect

type MSSQLDialect struct {
	DBVersion       int
	EnableCamelcase bool
	NameMap         map[string]string // normalized→original identifier mapping
}

MSSQLDialect implements the Dialect interface for Microsoft SQL Server. Target version: SQL Server 2017+ (for STRING_AGG and JSON support)

Working Features

Basic queries work including:

  • Simple queries with limit, offset, order_by, distinct
  • Parent-child and child-parent relationships
  • Many-to-many via join tables (partial support)
  • Aggregation (count, sum, avg, etc.)
  • Fragments
  • WHERE clauses with simple conditions
  • Remote API joins
  • Query caching (APQ)
  • Allow lists and namespace support

## Basic Mutations Simple INSERT/UPDATE/DELETE mutations work:

  • Single table inserts with SCOPE_IDENTITY() for auto-generated IDs
  • Inserts with explicit ID values
  • Transaction support
  • Inline bulk inserts

Known Limitations

The following features are not yet fully implemented for MSSQL:

## Nested/Related Table Mutations Mutations involving related tables fail with "t.id could not be bound". The table alias reference pattern used for nested inserts needs MSSQL-specific handling.

## Functions Table-returning functions and field functions are not discovered from schema. MSSQL uses different system tables for function metadata.

## Array Columns MSSQL does not have native array column support like PostgreSQL. WHERE IN with array columns fails.

## Cursor Pagination Cursor pagination fails with "Invalid object name '__cur'". The cursor CTE implementation needs MSSQL-specific syntax.

## Subscriptions Real-time subscriptions are not yet implemented for MSSQL.

## Synthetic Tables Virtual/synthetic table support needs more work.

## Full-Text Search MSSQL uses different full-text search syntax (CONTAINS/FREETEXT) instead of PostgreSQL's tsvector. Not yet implemented.

## JSON Column Detection MSSQL stores JSON in NVARCHAR(MAX) columns, which aren't automatically detected as JSON type during schema introspection.

## Polymorphic Relationships (Unions) Union type queries are not yet fully working.

## Variable LIMIT Dynamic LIMIT from variables may not apply correctly.

## Skip/Include Directives Some skip/include directive patterns fail.

MSSQL-Specific Implementation Notes

- Uses [brackets] for identifier quoting instead of "double quotes" - Uses @p1, @p2, etc. for parameter binding - Uses OFFSET/FETCH for pagination (requires ORDER BY) - Uses FOR JSON PATH for JSON generation - Does not support LATERAL joins (uses inline subqueries) - Boolean values render as 1/0 (BIT type)

func (*MSSQLDialect) BindVar

func (d *MSSQLDialect) BindVar(i int) string

BindVar returns the parameter placeholder for MSSQL. go-mssqldb uses @p1, @p2, etc. for positional parameters.

func (*MSSQLDialect) ModifySelectsForMutation

func (d *MSSQLDialect) ModifySelectsForMutation(qc *qcode.QCode)

func (*MSSQLDialect) Name

func (d *MSSQLDialect) Name() string

func (*MSSQLDialect) QuoteIdentifier

func (d *MSSQLDialect) QuoteIdentifier(s string) string

func (*MSSQLDialect) RenderArray

func (d *MSSQLDialect) RenderArray(ctx Context, items []string)

func (*MSSQLDialect) RenderArrayAggPrefix

func (d *MSSQLDialect) RenderArrayAggPrefix(ctx Context, distinct bool)

func (*MSSQLDialect) RenderArrayRemove

func (d *MSSQLDialect) RenderArrayRemove(ctx Context, col string, val func())

func (*MSSQLDialect) RenderArraySelectPrefix

func (d *MSSQLDialect) RenderArraySelectPrefix(ctx Context)

Array Operations

func (*MSSQLDialect) RenderArraySelectSuffix

func (d *MSSQLDialect) RenderArraySelectSuffix(ctx Context)

func (*MSSQLDialect) RenderAssign

func (d *MSSQLDialect) RenderAssign(ctx Context, col string, val string)

func (*MSSQLDialect) RenderBaseTable

func (d *MSSQLDialect) RenderBaseTable(ctx Context)

func (*MSSQLDialect) RenderBegin

func (d *MSSQLDialect) RenderBegin(ctx Context)

func (*MSSQLDialect) RenderBooleanEqualsTrue

func (d *MSSQLDialect) RenderBooleanEqualsTrue(ctx Context, paramName string)

func (*MSSQLDialect) RenderBooleanNotEqualsTrue

func (d *MSSQLDialect) RenderBooleanNotEqualsTrue(ctx Context, paramName string)

func (*MSSQLDialect) RenderCast

func (d *MSSQLDialect) RenderCast(ctx Context, val func(), typ string)

func (*MSSQLDialect) RenderChildCursor

func (d *MSSQLDialect) RenderChildCursor(ctx Context, renderChild func())

func (*MSSQLDialect) RenderChildValue

func (d *MSSQLDialect) RenderChildValue(ctx Context, sel *qcode.Select, renderChild func())

func (*MSSQLDialect) RenderCursorCTE

func (d *MSSQLDialect) RenderCursorCTE(ctx Context, sel *qcode.Select)

func (*MSSQLDialect) RenderDelete

func (d *MSSQLDialect) RenderDelete(ctx Context, m *qcode.Mutate, where func())

func (*MSSQLDialect) RenderDistinctOn

func (d *MSSQLDialect) RenderDistinctOn(ctx Context, sel *qcode.Select)

func (*MSSQLDialect) RenderFromEdge

func (d *MSSQLDialect) RenderFromEdge(ctx Context, sel *qcode.Select)

func (*MSSQLDialect) RenderGeoOp

func (d *MSSQLDialect) RenderGeoOp(ctx Context, table, col string, ex *qcode.Exp) error

RenderGeoOp renders MSSQL Spatial operations

func (*MSSQLDialect) RenderIDCapture

func (d *MSSQLDialect) RenderIDCapture(ctx Context, varName string)

func (*MSSQLDialect) RenderInlineChild

func (d *MSSQLDialect) RenderInlineChild(ctx Context, r InlineChildRenderer, psel, sel *qcode.Select)

RenderInlineChild renders an inline subquery for MSSQL. MSSQL doesn't support LATERAL joins, so we generate correlated subqueries.

func (*MSSQLDialect) RenderInsert

func (d *MSSQLDialect) RenderInsert(ctx Context, m *qcode.Mutate, values func())

func (*MSSQLDialect) RenderJSONField

func (d *MSSQLDialect) RenderJSONField(ctx Context, fieldName string, tableAlias string, colName string, isNull bool, isJSON bool)

RenderJSONField renders a field for MSSQL's FOR JSON PATH. Unlike MySQL's json_object which uses 'key', value pairs, MSSQL FOR JSON PATH uses column aliases: col AS [key]

func (*MSSQLDialect) RenderJSONNullCursorField

func (d *MSSQLDialect) RenderJSONNullCursorField(ctx Context, fieldName string)

func (*MSSQLDialect) RenderJSONNullField

func (d *MSSQLDialect) RenderJSONNullField(ctx Context, fieldName string)

JSON Null Fields

func (*MSSQLDialect) RenderJSONPath

func (d *MSSQLDialect) RenderJSONPath(ctx Context, table, col string, path []string)

RenderJSONPath renders JSON path extraction for MSSQL.

func (*MSSQLDialect) RenderJSONPlural

func (d *MSSQLDialect) RenderJSONPlural(ctx Context, sel *qcode.Select)

RenderJSONPlural renders JSON array aggregation for MSSQL. Uses STRING_AGG to aggregate JSON objects into an array.

func (*MSSQLDialect) RenderJSONRoot

func (d *MSSQLDialect) RenderJSONRoot(ctx Context, sel *qcode.Select)

func (*MSSQLDialect) RenderJSONRootField

func (d *MSSQLDialect) RenderJSONRootField(ctx Context, key string, val func())

RenderJSONRootField renders a root-level JSON field for MSSQL's FOR JSON PATH. Uses column AS [key] format instead of 'key', value format.

func (*MSSQLDialect) RenderJSONRootSuffix

func (d *MSSQLDialect) RenderJSONRootSuffix(ctx Context)

func (*MSSQLDialect) RenderJSONSelect

func (d *MSSQLDialect) RenderJSONSelect(ctx Context, sel *qcode.Select)

func (*MSSQLDialect) RenderJoinTables

func (d *MSSQLDialect) RenderJoinTables(ctx Context, sel *qcode.Select)

func (*MSSQLDialect) RenderLateralJoin

func (d *MSSQLDialect) RenderLateralJoin(ctx Context, sel *qcode.Select, multi bool)

func (*MSSQLDialect) RenderLateralJoinClose

func (d *MSSQLDialect) RenderLateralJoinClose(ctx Context, alias string)

func (*MSSQLDialect) RenderLimit

func (d *MSSQLDialect) RenderLimit(ctx Context, sel *qcode.Select)

RenderLimit renders pagination using OFFSET/FETCH syntax. MSSQL requires ORDER BY when using OFFSET/FETCH. If no ORDER BY is specified, we add a fallback ORDER BY (SELECT NULL).

func (*MSSQLDialect) RenderLinearConnect

func (d *MSSQLDialect) RenderLinearConnect(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderFilter func())

func (*MSSQLDialect) RenderLinearDisconnect

func (d *MSSQLDialect) RenderLinearDisconnect(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderFilter func())

func (*MSSQLDialect) RenderLinearInsert

func (d *MSSQLDialect) RenderLinearInsert(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderColVal func(qcode.MColumn))

func (*MSSQLDialect) RenderLinearUpdate

func (d *MSSQLDialect) RenderLinearUpdate(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderColVal func(qcode.MColumn), renderWhere func())

func (*MSSQLDialect) RenderList

func (d *MSSQLDialect) RenderList(ctx Context, ex *qcode.Exp)

func (*MSSQLDialect) RenderLiteral

func (d *MSSQLDialect) RenderLiteral(ctx Context, val string, valType qcode.ValType)

func (*MSSQLDialect) RenderMutateToRecordSet

func (d *MSSQLDialect) RenderMutateToRecordSet(ctx Context, m *qcode.Mutate, n int, renderRoot func())

func (*MSSQLDialect) RenderMutationCTE

func (d *MSSQLDialect) RenderMutationCTE(ctx Context, m *qcode.Mutate, renderBody func())

func (*MSSQLDialect) RenderMutationInput

func (d *MSSQLDialect) RenderMutationInput(ctx Context, qc *qcode.QCode)

func (*MSSQLDialect) RenderMutationPostamble

func (d *MSSQLDialect) RenderMutationPostamble(ctx Context, qc *qcode.QCode)

func (*MSSQLDialect) RenderOp

func (d *MSSQLDialect) RenderOp(op qcode.ExpOp) (string, error)

func (*MSSQLDialect) RenderOrderBy

func (d *MSSQLDialect) RenderOrderBy(ctx Context, sel *qcode.Select)

func (*MSSQLDialect) RenderQueryPrefix

func (d *MSSQLDialect) RenderQueryPrefix(ctx Context, qc *qcode.QCode)

func (*MSSQLDialect) RenderRecursiveAnchorWhere

func (d *MSSQLDialect) RenderRecursiveAnchorWhere(ctx Context, psel *qcode.Select, ti sdata.DBTable, pkCol string) bool

func (*MSSQLDialect) RenderRecursiveLimit1

func (d *MSSQLDialect) RenderRecursiveLimit1(ctx Context)

func (*MSSQLDialect) RenderRecursiveOffset

func (d *MSSQLDialect) RenderRecursiveOffset(ctx Context)

func (*MSSQLDialect) RenderReturning

func (d *MSSQLDialect) RenderReturning(ctx Context, m *qcode.Mutate)

func (*MSSQLDialect) RenderRootTerminator

func (d *MSSQLDialect) RenderRootTerminator(ctx Context)

func (*MSSQLDialect) RenderSearchHeadline

func (d *MSSQLDialect) RenderSearchHeadline(ctx Context, sel *qcode.Select, f qcode.Field)

func (*MSSQLDialect) RenderSearchRank

func (d *MSSQLDialect) RenderSearchRank(ctx Context, sel *qcode.Select, f qcode.Field)

func (*MSSQLDialect) RenderSetSessionVar

func (d *MSSQLDialect) RenderSetSessionVar(ctx Context, name, value string) bool

func (*MSSQLDialect) RenderSetup

func (d *MSSQLDialect) RenderSetup(ctx Context)

func (*MSSQLDialect) RenderSubscriptionUnbox

func (d *MSSQLDialect) RenderSubscriptionUnbox(ctx Context, params []Param, innerSQL string)

func (*MSSQLDialect) RenderTableAlias

func (d *MSSQLDialect) RenderTableAlias(ctx Context, alias string)

func (*MSSQLDialect) RenderTableName

func (d *MSSQLDialect) RenderTableName(ctx Context, sel *qcode.Select, schema, table string)

func (*MSSQLDialect) RenderTeardown

func (d *MSSQLDialect) RenderTeardown(ctx Context)

func (*MSSQLDialect) RenderTryCast

func (d *MSSQLDialect) RenderTryCast(ctx Context, val func(), typ string)

func (*MSSQLDialect) RenderTsQuery

func (d *MSSQLDialect) RenderTsQuery(ctx Context, ti sdata.DBTable, ex *qcode.Exp)

func (*MSSQLDialect) RenderUpdate

func (d *MSSQLDialect) RenderUpdate(ctx Context, m *qcode.Mutate, set func(), from func(), where func())

func (*MSSQLDialect) RenderUpsert

func (d *MSSQLDialect) RenderUpsert(ctx Context, m *qcode.Mutate, insert func(), updateSet func())

func (*MSSQLDialect) RenderValArrayColumn

func (d *MSSQLDialect) RenderValArrayColumn(ctx Context, ex *qcode.Exp, table string, pid int32)

func (*MSSQLDialect) RenderValPrefix

func (d *MSSQLDialect) RenderValPrefix(ctx Context, ex *qcode.Exp) bool

func (*MSSQLDialect) RenderValVar

func (d *MSSQLDialect) RenderValVar(ctx Context, ex *qcode.Exp, val string) bool

func (*MSSQLDialect) RenderVar

func (d *MSSQLDialect) RenderVar(ctx Context, name string)

func (*MSSQLDialect) RenderVarDeclaration

func (d *MSSQLDialect) RenderVarDeclaration(ctx Context, name, typeName string)

func (*MSSQLDialect) RequiresBooleanAsInt

func (d *MSSQLDialect) RequiresBooleanAsInt() bool

func (*MSSQLDialect) RequiresJSONAsString

func (d *MSSQLDialect) RequiresJSONAsString() bool

Driver Behavior

func (*MSSQLDialect) RequiresJSONQueryWrapper

func (d *MSSQLDialect) RequiresJSONQueryWrapper() bool

Column rendering

func (*MSSQLDialect) RequiresLowercaseIdentifiers

func (d *MSSQLDialect) RequiresLowercaseIdentifiers() bool

func (*MSSQLDialect) RequiresNullOnEmptySelect

func (d *MSSQLDialect) RequiresNullOnEmptySelect() bool

func (*MSSQLDialect) RequiresRecursiveCTEColumnList

func (d *MSSQLDialect) RequiresRecursiveCTEColumnList() bool

func (*MSSQLDialect) RequiresRecursiveKeyword

func (d *MSSQLDialect) RequiresRecursiveKeyword() bool

Recursive CTE Syntax

func (*MSSQLDialect) RoleDummyTable

func (d *MSSQLDialect) RoleDummyTable() string

func (*MSSQLDialect) RoleLimitSuffix

func (d *MSSQLDialect) RoleLimitSuffix() string

func (*MSSQLDialect) RoleSelectPrefix

func (d *MSSQLDialect) RoleSelectPrefix() string

Role Statement rendering

func (*MSSQLDialect) SetNameMap added in v3.8.0

func (d *MSSQLDialect) SetNameMap(tables []sdata.DBTable)

SetNameMap builds a normalized→original name mapping from discovered tables.

func (*MSSQLDialect) SplitQuery

func (d *MSSQLDialect) SplitQuery(query string) []string

func (*MSSQLDialect) SupportsConflictUpdate

func (d *MSSQLDialect) SupportsConflictUpdate() bool

func (*MSSQLDialect) SupportsLateral

func (d *MSSQLDialect) SupportsLateral() bool

SupportsLateral returns false for MSSQL because it doesn't support LATERAL joins. We use inline subqueries via RenderInlineChild instead.

func (*MSSQLDialect) SupportsLinearExecution

func (d *MSSQLDialect) SupportsLinearExecution() bool

func (*MSSQLDialect) SupportsReturning

func (d *MSSQLDialect) SupportsReturning() bool

SupportsReturning returns true because MSSQL has OUTPUT clause.

func (*MSSQLDialect) SupportsSubscriptionBatching

func (d *MSSQLDialect) SupportsSubscriptionBatching() bool

func (*MSSQLDialect) SupportsWritableCTE

func (d *MSSQLDialect) SupportsWritableCTE() bool

func (*MSSQLDialect) TransformBooleanLiterals

func (d *MSSQLDialect) TransformBooleanLiterals(match string) string

func (*MSSQLDialect) UseNamedParams

func (d *MSSQLDialect) UseNamedParams() bool

func (*MSSQLDialect) WrapRecursiveSelect

func (d *MSSQLDialect) WrapRecursiveSelect() bool

type MariaDBDialect

type MariaDBDialect struct {
	MySQLDialect
	DBVersion int
}

MariaDBDialect embeds MySQLDialect and provides MariaDB-specific behavior. MariaDB is a fork of MySQL and is largely compatible, but may have differences in JSON functions, version detection, and other features.

func (*MariaDBDialect) Name

func (d *MariaDBDialect) Name() string

func (*MariaDBDialect) QuoteIdentifier

func (d *MariaDBDialect) QuoteIdentifier(s string) string

func (*MariaDBDialect) RenderArrayAggPrefix

func (d *MariaDBDialect) RenderArrayAggPrefix(ctx Context, distinct bool)

func (*MariaDBDialect) RenderArrayRemove

func (d *MariaDBDialect) RenderArrayRemove(ctx Context, col string, val func())

func (*MariaDBDialect) RenderArraySelectPrefix

func (d *MariaDBDialect) RenderArraySelectPrefix(ctx Context)

Array Operations

func (*MariaDBDialect) RenderArraySelectSuffix

func (d *MariaDBDialect) RenderArraySelectSuffix(ctx Context)

func (*MariaDBDialect) RenderCast

func (d *MariaDBDialect) RenderCast(ctx Context, val func(), typ string)

RenderCast handles type casting for MariaDB. MariaDB doesn't support CAST(... AS JSON) or CAST(... AS LONGTEXT), so we need to map these to supported types.

func (*MariaDBDialect) RenderChildCursor

func (d *MariaDBDialect) RenderChildCursor(ctx Context, renderChild func())

func (*MariaDBDialect) RenderChildValue

func (d *MariaDBDialect) RenderChildValue(ctx Context, sel *qcode.Select, renderChild func())

func (*MariaDBDialect) RenderCursorCTE

func (d *MariaDBDialect) RenderCursorCTE(ctx Context, sel *qcode.Select)

RenderCursorCTE creates a __cur CTE that parses the cursor parameter. MariaDB uses colon separator for cursors (matching RenderInlineChild cursor generation).

func (*MariaDBDialect) RenderGeoOp

func (d *MariaDBDialect) RenderGeoOp(ctx Context, table, col string, ex *qcode.Exp) error

RenderGeoOp renders MariaDB spatial operations MariaDB uses standard WKT (longitude, latitude) order, NOT MySQL 8.0's (lat, lon)

func (*MariaDBDialect) RenderInlineChild

func (d *MariaDBDialect) RenderInlineChild(ctx Context, r InlineChildRenderer, psel, sel *qcode.Select)

RenderInlineChild renders an inline subquery for MariaDB. MariaDB doesn't support LATERAL joins, so we generate flat correlated subqueries. For plural (array) results, we use a subquery to apply ORDER BY and LIMIT before aggregation.

func (*MariaDBDialect) RenderJSONField

func (d *MariaDBDialect) RenderJSONField(ctx Context, fieldName string, tableAlias string, colName string, isNull bool, isJSON bool)

RenderJSONField renders a JSON field for MariaDB. For JSON columns (isJSON=true), wrap with JSON_QUERY to preserve JSON structure. MariaDB stores JSON as LONGTEXT, so without this, JSON values get stringified.

func (*MariaDBDialect) RenderJSONNullCursorField

func (d *MariaDBDialect) RenderJSONNullCursorField(ctx Context, fieldName string)

func (*MariaDBDialect) RenderJSONNullField

func (d *MariaDBDialect) RenderJSONNullField(ctx Context, fieldName string)

JSON Null Fields

func (*MariaDBDialect) RenderJSONPath

func (d *MariaDBDialect) RenderJSONPath(ctx Context, table, col string, path []string)

RenderJSONPath renders a JSON path extraction for MariaDB. MariaDB uses JSON_EXTRACT(col, '$.path') and we wrap it in JSON_UNQUOTE to get text. We do NOT use ->> operator to avoid syntax issues in older versions or specific contexts, even though 10.2+ supports it.

func (*MariaDBDialect) RenderJSONPlural

func (d *MariaDBDialect) RenderJSONPlural(ctx Context, sel *qcode.Select)

RenderJSONPlural renders JSON array aggregation for MariaDB. Since MariaDB doesn't support LATERAL joins, we use inline subqueries and aggregate the "json" column from the inner query. Unlike MySQL, we don't CAST AS JSON since MariaDB doesn't support that syntax.

func (*MariaDBDialect) RenderJSONRoot

func (d *MariaDBDialect) RenderJSONRoot(ctx Context, sel *qcode.Select)

func (*MariaDBDialect) RenderJSONRootField

func (d *MariaDBDialect) RenderJSONRootField(ctx Context, key string, val func())

RenderJSONRootField renders a JSON field at the root level for MariaDB. MariaDB treats JSON as LONGTEXT, so nested JSON values get stringified unless we use JSON_QUERY to extract them as proper JSON. For scalar values like __typename, we output the value directly without JSON_QUERY.

func (*MariaDBDialect) RenderJSONRootSuffix

func (d *MariaDBDialect) RenderJSONRootSuffix(ctx Context)

func (*MariaDBDialect) RenderLateralJoin

func (d *MariaDBDialect) RenderLateralJoin(ctx Context, sel *qcode.Select, multi bool)

func (*MariaDBDialect) RenderLateralJoinClose

func (d *MariaDBDialect) RenderLateralJoinClose(ctx Context, alias string)

func (*MariaDBDialect) RenderLinearConnect

func (d *MariaDBDialect) RenderLinearConnect(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderFilter func())

RenderLinearConnect overrides MySQL's version for MariaDB. MariaDB has issues with column resolution when JSON_TABLE derived table is in the same FROM clause as the target table. We restructure the query to use an explicit JOIN instead of a cartesian product.

func (*MariaDBDialect) RenderLinearDisconnect

func (d *MariaDBDialect) RenderLinearDisconnect(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderFilter func())

RenderLinearDisconnect overrides MySQL's version for MariaDB.

func (*MariaDBDialect) RenderOp

func (d *MariaDBDialect) RenderOp(op qcode.ExpOp) (string, error)

func (*MariaDBDialect) RenderRecursiveAnchorWhere

func (d *MariaDBDialect) RenderRecursiveAnchorWhere(ctx Context, psel *qcode.Select, ti sdata.DBTable, pkCol string) bool

func (*MariaDBDialect) RenderRecursiveLimit1

func (d *MariaDBDialect) RenderRecursiveLimit1(ctx Context)

func (*MariaDBDialect) RenderRecursiveOffset

func (d *MariaDBDialect) RenderRecursiveOffset(ctx Context)

func (*MariaDBDialect) RenderReturning

func (d *MariaDBDialect) RenderReturning(ctx Context, m *qcode.Mutate)

RenderReturning renders the RETURNING clause for MariaDB 10.5+. MariaDB supports RETURNING * syntax similar to PostgreSQL.

func (*MariaDBDialect) RenderSubscriptionUnbox

func (d *MariaDBDialect) RenderSubscriptionUnbox(ctx Context, params []Param, innerSQL string)

func (*MariaDBDialect) RenderTableAlias

func (d *MariaDBDialect) RenderTableAlias(ctx Context, alias string)

func (*MariaDBDialect) RenderValArrayColumn

func (d *MariaDBDialect) RenderValArrayColumn(ctx Context, ex *qcode.Exp, table string, pid int32)

RenderValArrayColumn handles array value columns for MariaDB. Unlike MySQL, MariaDB does not support CAST(... AS JSON), so we use JSON_TABLE to extract the array values.

func (*MariaDBDialect) RenderValPrefix

func (d *MariaDBDialect) RenderValPrefix(ctx Context, ex *qcode.Exp) bool

func (*MariaDBDialect) RequiresBooleanAsInt

func (d *MariaDBDialect) RequiresBooleanAsInt() bool

func (*MariaDBDialect) RequiresJSONAsString

func (d *MariaDBDialect) RequiresJSONAsString() bool

Driver Behavior

func (*MariaDBDialect) RequiresJSONQueryWrapper

func (d *MariaDBDialect) RequiresJSONQueryWrapper() bool

Column rendering

func (*MariaDBDialect) RequiresLowercaseIdentifiers

func (d *MariaDBDialect) RequiresLowercaseIdentifiers() bool

func (*MariaDBDialect) RequiresNullOnEmptySelect

func (d *MariaDBDialect) RequiresNullOnEmptySelect() bool

func (*MariaDBDialect) RequiresRecursiveCTEColumnList

func (d *MariaDBDialect) RequiresRecursiveCTEColumnList() bool

func (*MariaDBDialect) RequiresRecursiveKeyword

func (d *MariaDBDialect) RequiresRecursiveKeyword() bool

Recursive CTE Syntax

func (*MariaDBDialect) RoleDummyTable

func (d *MariaDBDialect) RoleDummyTable() string

func (*MariaDBDialect) RoleLimitSuffix

func (d *MariaDBDialect) RoleLimitSuffix() string

func (*MariaDBDialect) RoleSelectPrefix

func (d *MariaDBDialect) RoleSelectPrefix() string

Role Statement rendering - MariaDB uses default syntax (same as Postgres)

func (*MariaDBDialect) SupportsLateral

func (d *MariaDBDialect) SupportsLateral() bool

SupportsLateral returns false for MariaDB because the shared LATERAL join code path in query.go is incompatible with MariaDB's RenderJSONPlural. MariaDB uses inline subqueries via RenderInlineChild instead. Note: Subscription batching uses a separate code path (RenderSubscriptionUnbox) that handles LATERAL joins internally and is not affected by this setting.

func (*MariaDBDialect) SupportsReturning

func (d *MariaDBDialect) SupportsReturning() bool

SupportsReturning returns true for MariaDB 10.5+ which added RETURNING clause support.

func (*MariaDBDialect) SupportsSubscriptionBatching

func (d *MariaDBDialect) SupportsSubscriptionBatching() bool

SupportsSubscriptionBatching returns false for MariaDB. MariaDB's LATERAL support is incompatible with the inline subquery structure used when SupportsLateral() = false. Each subscription runs individually.

func (*MariaDBDialect) TransformBooleanLiterals

func (d *MariaDBDialect) TransformBooleanLiterals(match string) string

func (*MariaDBDialect) WrapRecursiveSelect

func (d *MariaDBDialect) WrapRecursiveSelect() bool

type MongoDBDialect

type MongoDBDialect struct {
	EnableCamelcase bool
	// contains filtered or unexported fields
}

MongoDBDialect generates JSON query DSL instead of SQL. The JSON is parsed and executed by the mongodriver package.

func (*MongoDBDialect) BindVar

func (d *MongoDBDialect) BindVar(i int) string

BindVar returns MongoDB parameter placeholder.

func (*MongoDBDialect) CompileFullMutation

func (d *MongoDBDialect) CompileFullMutation(ctx Context, qc *qcode.QCode) bool

CompileFullMutation implements FullMutationCompiler interface. It generates the complete JSON mutation DSL for MongoDB, bypassing SQL generation.

func (*MongoDBDialect) CompileFullQuery

func (d *MongoDBDialect) CompileFullQuery(ctx Context, qc *qcode.QCode) bool

CompileFullQuery implements FullQueryCompiler interface. It generates the complete JSON query DSL for MongoDB, bypassing SQL generation.

func (*MongoDBDialect) ModifySelectsForMutation

func (d *MongoDBDialect) ModifySelectsForMutation(qc *qcode.QCode)

func (*MongoDBDialect) Name

func (d *MongoDBDialect) Name() string

func (*MongoDBDialect) QuoteIdentifier

func (d *MongoDBDialect) QuoteIdentifier(s string) string

func (*MongoDBDialect) RenderArray

func (d *MongoDBDialect) RenderArray(ctx Context, items []string)

func (*MongoDBDialect) RenderArrayAggPrefix

func (d *MongoDBDialect) RenderArrayAggPrefix(ctx Context, distinct bool)

func (*MongoDBDialect) RenderArrayRemove

func (d *MongoDBDialect) RenderArrayRemove(ctx Context, col string, val func())

func (*MongoDBDialect) RenderArraySelectPrefix

func (d *MongoDBDialect) RenderArraySelectPrefix(ctx Context)

func (*MongoDBDialect) RenderArraySelectSuffix

func (d *MongoDBDialect) RenderArraySelectSuffix(ctx Context)

func (*MongoDBDialect) RenderAssign

func (d *MongoDBDialect) RenderAssign(ctx Context, col string, val string)

func (*MongoDBDialect) RenderBaseTable

func (d *MongoDBDialect) RenderBaseTable(ctx Context)

func (*MongoDBDialect) RenderBegin

func (d *MongoDBDialect) RenderBegin(ctx Context)

func (*MongoDBDialect) RenderBooleanEqualsTrue

func (d *MongoDBDialect) RenderBooleanEqualsTrue(ctx Context, paramName string)

func (*MongoDBDialect) RenderBooleanNotEqualsTrue

func (d *MongoDBDialect) RenderBooleanNotEqualsTrue(ctx Context, paramName string)

func (*MongoDBDialect) RenderCast

func (d *MongoDBDialect) RenderCast(ctx Context, val func(), typ string)

func (*MongoDBDialect) RenderChildCursor

func (d *MongoDBDialect) RenderChildCursor(ctx Context, renderChild func())

func (*MongoDBDialect) RenderChildValue

func (d *MongoDBDialect) RenderChildValue(ctx Context, sel *qcode.Select, renderChild func())

func (*MongoDBDialect) RenderCursorCTE

func (d *MongoDBDialect) RenderCursorCTE(ctx Context, sel *qcode.Select)

func (*MongoDBDialect) RenderDelete

func (d *MongoDBDialect) RenderDelete(ctx Context, m *qcode.Mutate, where func())

func (*MongoDBDialect) RenderDistinctOn

func (d *MongoDBDialect) RenderDistinctOn(ctx Context, sel *qcode.Select)

func (*MongoDBDialect) RenderFromEdge

func (d *MongoDBDialect) RenderFromEdge(ctx Context, sel *qcode.Select)

func (*MongoDBDialect) RenderGeoOp

func (d *MongoDBDialect) RenderGeoOp(ctx Context, table, col string, ex *qcode.Exp) error

RenderGeoOp renders MongoDB geospatial operations

func (*MongoDBDialect) RenderIDCapture

func (d *MongoDBDialect) RenderIDCapture(ctx Context, varName string)

func (*MongoDBDialect) RenderInlineChild

func (d *MongoDBDialect) RenderInlineChild(ctx Context, renderer InlineChildRenderer, psel, sel *qcode.Select)

func (*MongoDBDialect) RenderInsert

func (d *MongoDBDialect) RenderInsert(ctx Context, m *qcode.Mutate, values func())

func (*MongoDBDialect) RenderJSONField

func (d *MongoDBDialect) RenderJSONField(ctx Context, fieldName string, tableAlias string, colName string, isNull bool, isJSON bool)

func (*MongoDBDialect) RenderJSONNullCursorField

func (d *MongoDBDialect) RenderJSONNullCursorField(ctx Context, fieldName string)

func (*MongoDBDialect) RenderJSONNullField

func (d *MongoDBDialect) RenderJSONNullField(ctx Context, fieldName string)

func (*MongoDBDialect) RenderJSONPath

func (d *MongoDBDialect) RenderJSONPath(ctx Context, table, col string, path []string)

func (*MongoDBDialect) RenderJSONPlural

func (d *MongoDBDialect) RenderJSONPlural(ctx Context, sel *qcode.Select)

func (*MongoDBDialect) RenderJSONRoot

func (d *MongoDBDialect) RenderJSONRoot(ctx Context, sel *qcode.Select)

RenderJSONRoot starts the JSON query structure

func (*MongoDBDialect) RenderJSONRootField

func (d *MongoDBDialect) RenderJSONRootField(ctx Context, key string, val func())

func (*MongoDBDialect) RenderJSONRootSuffix

func (d *MongoDBDialect) RenderJSONRootSuffix(ctx Context)

func (*MongoDBDialect) RenderJSONSelect

func (d *MongoDBDialect) RenderJSONSelect(ctx Context, sel *qcode.Select)

func (*MongoDBDialect) RenderJoinTables

func (d *MongoDBDialect) RenderJoinTables(ctx Context, sel *qcode.Select)

func (*MongoDBDialect) RenderLateralJoin

func (d *MongoDBDialect) RenderLateralJoin(ctx Context, sel *qcode.Select, multi bool)

func (*MongoDBDialect) RenderLateralJoinClose

func (d *MongoDBDialect) RenderLateralJoinClose(ctx Context, alias string)

func (*MongoDBDialect) RenderLimit

func (d *MongoDBDialect) RenderLimit(ctx Context, sel *qcode.Select)

func (*MongoDBDialect) RenderLinearConnect

func (d *MongoDBDialect) RenderLinearConnect(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderFilter func())

func (*MongoDBDialect) RenderLinearDisconnect

func (d *MongoDBDialect) RenderLinearDisconnect(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderFilter func())

func (*MongoDBDialect) RenderLinearInsert

func (d *MongoDBDialect) RenderLinearInsert(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderColVal func(qcode.MColumn))

func (*MongoDBDialect) RenderLinearUpdate

func (d *MongoDBDialect) RenderLinearUpdate(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderColVal func(qcode.MColumn), renderWhere func())

func (*MongoDBDialect) RenderList

func (d *MongoDBDialect) RenderList(ctx Context, ex *qcode.Exp)

func (*MongoDBDialect) RenderLiteral

func (d *MongoDBDialect) RenderLiteral(ctx Context, val string, valType qcode.ValType)

func (*MongoDBDialect) RenderMutateToRecordSet

func (d *MongoDBDialect) RenderMutateToRecordSet(ctx Context, m *qcode.Mutate, n int, renderRoot func())

func (*MongoDBDialect) RenderMutationCTE

func (d *MongoDBDialect) RenderMutationCTE(ctx Context, m *qcode.Mutate, renderBody func())

func (*MongoDBDialect) RenderMutationInput

func (d *MongoDBDialect) RenderMutationInput(ctx Context, qc *qcode.QCode)

func (*MongoDBDialect) RenderMutationPostamble

func (d *MongoDBDialect) RenderMutationPostamble(ctx Context, qc *qcode.QCode)

func (*MongoDBDialect) RenderOp

func (d *MongoDBDialect) RenderOp(op qcode.ExpOp) (string, error)

func (*MongoDBDialect) RenderOrderBy

func (d *MongoDBDialect) RenderOrderBy(ctx Context, sel *qcode.Select)

func (*MongoDBDialect) RenderQueryPrefix

func (d *MongoDBDialect) RenderQueryPrefix(ctx Context, qc *qcode.QCode)

func (*MongoDBDialect) RenderRecursiveAnchorWhere

func (d *MongoDBDialect) RenderRecursiveAnchorWhere(ctx Context, psel *qcode.Select, ti sdata.DBTable, pkCol string) bool

func (*MongoDBDialect) RenderRecursiveLimit1

func (d *MongoDBDialect) RenderRecursiveLimit1(ctx Context)

func (*MongoDBDialect) RenderRecursiveOffset

func (d *MongoDBDialect) RenderRecursiveOffset(ctx Context)

func (*MongoDBDialect) RenderReturning

func (d *MongoDBDialect) RenderReturning(ctx Context, m *qcode.Mutate)

func (*MongoDBDialect) RenderRootTerminator

func (d *MongoDBDialect) RenderRootTerminator(ctx Context)

func (*MongoDBDialect) RenderSearchHeadline

func (d *MongoDBDialect) RenderSearchHeadline(ctx Context, sel *qcode.Select, f qcode.Field)

func (*MongoDBDialect) RenderSearchRank

func (d *MongoDBDialect) RenderSearchRank(ctx Context, sel *qcode.Select, f qcode.Field)

func (*MongoDBDialect) RenderSetSessionVar

func (d *MongoDBDialect) RenderSetSessionVar(ctx Context, name, value string) bool

func (*MongoDBDialect) RenderSetup

func (d *MongoDBDialect) RenderSetup(ctx Context)

func (*MongoDBDialect) RenderSubscriptionUnbox

func (d *MongoDBDialect) RenderSubscriptionUnbox(ctx Context, params []Param, innerSQL string)

func (*MongoDBDialect) RenderTableAlias

func (d *MongoDBDialect) RenderTableAlias(ctx Context, alias string)

func (*MongoDBDialect) RenderTableName

func (d *MongoDBDialect) RenderTableName(ctx Context, sel *qcode.Select, schema, table string)

func (*MongoDBDialect) RenderTeardown

func (d *MongoDBDialect) RenderTeardown(ctx Context)

func (*MongoDBDialect) RenderTryCast

func (d *MongoDBDialect) RenderTryCast(ctx Context, val func(), typ string)

func (*MongoDBDialect) RenderTsQuery

func (d *MongoDBDialect) RenderTsQuery(ctx Context, ti sdata.DBTable, ex *qcode.Exp)

func (*MongoDBDialect) RenderUpdate

func (d *MongoDBDialect) RenderUpdate(ctx Context, m *qcode.Mutate, set func(), from func(), where func())

func (*MongoDBDialect) RenderUpsert

func (d *MongoDBDialect) RenderUpsert(ctx Context, m *qcode.Mutate, insert func(), updateSet func())

func (*MongoDBDialect) RenderValArrayColumn

func (d *MongoDBDialect) RenderValArrayColumn(ctx Context, ex *qcode.Exp, table string, pid int32)

func (*MongoDBDialect) RenderValPrefix

func (d *MongoDBDialect) RenderValPrefix(ctx Context, ex *qcode.Exp) bool

func (*MongoDBDialect) RenderValVar

func (d *MongoDBDialect) RenderValVar(ctx Context, ex *qcode.Exp, val string) bool

func (*MongoDBDialect) RenderVar

func (d *MongoDBDialect) RenderVar(ctx Context, name string)

func (*MongoDBDialect) RenderVarDeclaration

func (d *MongoDBDialect) RenderVarDeclaration(ctx Context, name, typeName string)

func (*MongoDBDialect) RequiresBooleanAsInt

func (d *MongoDBDialect) RequiresBooleanAsInt() bool

func (*MongoDBDialect) RequiresJSONAsString

func (d *MongoDBDialect) RequiresJSONAsString() bool

func (*MongoDBDialect) RequiresJSONQueryWrapper

func (d *MongoDBDialect) RequiresJSONQueryWrapper() bool

func (*MongoDBDialect) RequiresLowercaseIdentifiers

func (d *MongoDBDialect) RequiresLowercaseIdentifiers() bool

func (*MongoDBDialect) RequiresNullOnEmptySelect

func (d *MongoDBDialect) RequiresNullOnEmptySelect() bool

func (*MongoDBDialect) RequiresRecursiveCTEColumnList

func (d *MongoDBDialect) RequiresRecursiveCTEColumnList() bool

func (*MongoDBDialect) RequiresRecursiveKeyword

func (d *MongoDBDialect) RequiresRecursiveKeyword() bool

func (*MongoDBDialect) RoleDummyTable

func (d *MongoDBDialect) RoleDummyTable() string

func (*MongoDBDialect) RoleLimitSuffix

func (d *MongoDBDialect) RoleLimitSuffix() string

func (*MongoDBDialect) RoleSelectPrefix

func (d *MongoDBDialect) RoleSelectPrefix() string

func (*MongoDBDialect) SplitQuery

func (d *MongoDBDialect) SplitQuery(query string) []string

func (*MongoDBDialect) SupportsConflictUpdate

func (d *MongoDBDialect) SupportsConflictUpdate() bool

func (*MongoDBDialect) SupportsLateral

func (d *MongoDBDialect) SupportsLateral() bool

func (*MongoDBDialect) SupportsLinearExecution

func (d *MongoDBDialect) SupportsLinearExecution() bool

func (*MongoDBDialect) SupportsReturning

func (d *MongoDBDialect) SupportsReturning() bool

func (*MongoDBDialect) SupportsSubscriptionBatching

func (d *MongoDBDialect) SupportsSubscriptionBatching() bool

func (*MongoDBDialect) SupportsWritableCTE

func (d *MongoDBDialect) SupportsWritableCTE() bool

func (*MongoDBDialect) TransformBooleanLiterals

func (d *MongoDBDialect) TransformBooleanLiterals(match string) string

func (*MongoDBDialect) UseNamedParams

func (d *MongoDBDialect) UseNamedParams() bool

func (*MongoDBDialect) WrapRecursiveSelect

func (d *MongoDBDialect) WrapRecursiveSelect() bool

type MySQLDialect

type MySQLDialect struct {
	EnableCamelcase bool
}

func (*MySQLDialect) BindVar

func (d *MySQLDialect) BindVar(i int) string

func (*MySQLDialect) ModifySelectsForMutation

func (d *MySQLDialect) ModifySelectsForMutation(qc *qcode.QCode)

func (*MySQLDialect) Name

func (d *MySQLDialect) Name() string

func (*MySQLDialect) Quote

func (d *MySQLDialect) Quote(ctx Context, col string)

func (*MySQLDialect) QuoteIdentifier

func (d *MySQLDialect) QuoteIdentifier(s string) string

func (*MySQLDialect) RenderArray

func (d *MySQLDialect) RenderArray(ctx Context, items []string)

func (*MySQLDialect) RenderArrayAggPrefix

func (d *MySQLDialect) RenderArrayAggPrefix(ctx Context, distinct bool)

func (*MySQLDialect) RenderArrayRemove

func (d *MySQLDialect) RenderArrayRemove(ctx Context, col string, val func())

func (*MySQLDialect) RenderArraySelectPrefix

func (d *MySQLDialect) RenderArraySelectPrefix(ctx Context)

Array Operations

func (*MySQLDialect) RenderArraySelectSuffix

func (d *MySQLDialect) RenderArraySelectSuffix(ctx Context)

func (*MySQLDialect) RenderAssign

func (d *MySQLDialect) RenderAssign(ctx Context, col string, val string)

func (*MySQLDialect) RenderBaseTable

func (d *MySQLDialect) RenderBaseTable(ctx Context)

func (*MySQLDialect) RenderBegin

func (d *MySQLDialect) RenderBegin(ctx Context)

func (*MySQLDialect) RenderBooleanEqualsTrue

func (d *MySQLDialect) RenderBooleanEqualsTrue(ctx Context, paramName string)

func (*MySQLDialect) RenderBooleanNotEqualsTrue

func (d *MySQLDialect) RenderBooleanNotEqualsTrue(ctx Context, paramName string)

func (*MySQLDialect) RenderCast

func (d *MySQLDialect) RenderCast(ctx Context, val func(), typ string)

func (*MySQLDialect) RenderChildCursor

func (d *MySQLDialect) RenderChildCursor(ctx Context, renderChild func())

func (*MySQLDialect) RenderChildValue

func (d *MySQLDialect) RenderChildValue(ctx Context, sel *qcode.Select, renderChild func())

func (*MySQLDialect) RenderCursorCTE

func (d *MySQLDialect) RenderCursorCTE(ctx Context, sel *qcode.Select)

func (*MySQLDialect) RenderDelete

func (d *MySQLDialect) RenderDelete(ctx Context, m *qcode.Mutate, where func())

func (*MySQLDialect) RenderDistinctOn

func (d *MySQLDialect) RenderDistinctOn(ctx Context, sel *qcode.Select)

func (*MySQLDialect) RenderFromEdge

func (d *MySQLDialect) RenderFromEdge(ctx Context, sel *qcode.Select)

func (*MySQLDialect) RenderGeoOp

func (d *MySQLDialect) RenderGeoOp(ctx Context, table, col string, ex *qcode.Exp) error

RenderGeoOp renders MySQL spatial operations

func (*MySQLDialect) RenderIDCapture

func (d *MySQLDialect) RenderIDCapture(ctx Context, varName string)

func (*MySQLDialect) RenderInlineChild

func (d *MySQLDialect) RenderInlineChild(ctx Context, renderer InlineChildRenderer, psel, sel *qcode.Select)

RenderInlineChild is not used for MySQL since it supports LATERAL joins

func (*MySQLDialect) RenderInsert

func (d *MySQLDialect) RenderInsert(ctx Context, m *qcode.Mutate, values func())

func (*MySQLDialect) RenderJSONField

func (d *MySQLDialect) RenderJSONField(ctx Context, fieldName string, tableAlias string, colName string, isNull bool, isJSON bool)

func (*MySQLDialect) RenderJSONNullCursorField

func (d *MySQLDialect) RenderJSONNullCursorField(ctx Context, fieldName string)

func (*MySQLDialect) RenderJSONNullField

func (d *MySQLDialect) RenderJSONNullField(ctx Context, fieldName string)

JSON Null Fields

func (*MySQLDialect) RenderJSONPath

func (d *MySQLDialect) RenderJSONPath(ctx Context, table, col string, path []string)

func (*MySQLDialect) RenderJSONPlural

func (d *MySQLDialect) RenderJSONPlural(ctx Context, sel *qcode.Select)

func (*MySQLDialect) RenderJSONRoot

func (d *MySQLDialect) RenderJSONRoot(ctx Context, sel *qcode.Select)

func (*MySQLDialect) RenderJSONRootField

func (d *MySQLDialect) RenderJSONRootField(ctx Context, key string, val func())

func (*MySQLDialect) RenderJSONRootSuffix

func (d *MySQLDialect) RenderJSONRootSuffix(ctx Context)

func (*MySQLDialect) RenderJSONSelect

func (d *MySQLDialect) RenderJSONSelect(ctx Context, sel *qcode.Select)

func (*MySQLDialect) RenderJoinTables

func (d *MySQLDialect) RenderJoinTables(ctx Context, sel *qcode.Select)

func (*MySQLDialect) RenderLateralJoin

func (d *MySQLDialect) RenderLateralJoin(ctx Context, sel *qcode.Select, multi bool)

func (*MySQLDialect) RenderLateralJoinClose

func (d *MySQLDialect) RenderLateralJoinClose(ctx Context, alias string)

func (*MySQLDialect) RenderLimit

func (d *MySQLDialect) RenderLimit(ctx Context, sel *qcode.Select)

func (*MySQLDialect) RenderLinearConnect

func (d *MySQLDialect) RenderLinearConnect(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderFilter func())

func (*MySQLDialect) RenderLinearDisconnect

func (d *MySQLDialect) RenderLinearDisconnect(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderFilter func())

func (*MySQLDialect) RenderLinearInsert

func (d *MySQLDialect) RenderLinearInsert(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderColVal func(qcode.MColumn))

func (*MySQLDialect) RenderLinearUpdate

func (d *MySQLDialect) RenderLinearUpdate(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderColVal func(qcode.MColumn), renderWhere func())

func (*MySQLDialect) RenderList

func (d *MySQLDialect) RenderList(ctx Context, ex *qcode.Exp)

func (*MySQLDialect) RenderLiteral

func (d *MySQLDialect) RenderLiteral(ctx Context, val string, valType qcode.ValType)

func (*MySQLDialect) RenderMutateToRecordSet

func (d *MySQLDialect) RenderMutateToRecordSet(ctx Context, m *qcode.Mutate, n int, renderRoot func())

func (*MySQLDialect) RenderMutationCTE

func (d *MySQLDialect) RenderMutationCTE(ctx Context, m *qcode.Mutate, renderBody func())

RenderMutationCTE for MySQL generally mocks logic or errors, but as per plan, we just implement strict no-op or basic generation where possible. Writable CTEs are FALSE so this path shouldn't be main strategy.

func (*MySQLDialect) RenderMutationInput

func (d *MySQLDialect) RenderMutationInput(ctx Context, qc *qcode.QCode)

func (*MySQLDialect) RenderMutationPostamble

func (d *MySQLDialect) RenderMutationPostamble(ctx Context, qc *qcode.QCode)

func (*MySQLDialect) RenderOp

func (d *MySQLDialect) RenderOp(op qcode.ExpOp) (string, error)

func (*MySQLDialect) RenderOrderBy

func (d *MySQLDialect) RenderOrderBy(ctx Context, sel *qcode.Select)

func (*MySQLDialect) RenderQueryPrefix

func (d *MySQLDialect) RenderQueryPrefix(ctx Context, qc *qcode.QCode)

func (*MySQLDialect) RenderRecursiveAnchorWhere

func (d *MySQLDialect) RenderRecursiveAnchorWhere(ctx Context, psel *qcode.Select, ti sdata.DBTable, pkCol string) bool

func (*MySQLDialect) RenderRecursiveLimit1

func (d *MySQLDialect) RenderRecursiveLimit1(ctx Context)

func (*MySQLDialect) RenderRecursiveOffset

func (d *MySQLDialect) RenderRecursiveOffset(ctx Context)

func (*MySQLDialect) RenderReturning

func (d *MySQLDialect) RenderReturning(ctx Context, m *qcode.Mutate)

func (*MySQLDialect) RenderRootTerminator

func (d *MySQLDialect) RenderRootTerminator(ctx Context)

func (*MySQLDialect) RenderSearchHeadline

func (d *MySQLDialect) RenderSearchHeadline(ctx Context, sel *qcode.Select, f qcode.Field)

func (*MySQLDialect) RenderSearchRank

func (d *MySQLDialect) RenderSearchRank(ctx Context, sel *qcode.Select, f qcode.Field)

func (*MySQLDialect) RenderSetSessionVar

func (d *MySQLDialect) RenderSetSessionVar(ctx Context, name, value string) bool

RenderSetSessionVar renders the SQL to set a session variable in MySQL

func (*MySQLDialect) RenderSetup

func (d *MySQLDialect) RenderSetup(ctx Context)

func (*MySQLDialect) RenderSubscriptionUnbox

func (d *MySQLDialect) RenderSubscriptionUnbox(ctx Context, params []Param, innerSQL string)

func (*MySQLDialect) RenderTableAlias

func (d *MySQLDialect) RenderTableAlias(ctx Context, alias string)

func (*MySQLDialect) RenderTableName

func (d *MySQLDialect) RenderTableName(ctx Context, sel *qcode.Select, schema, table string)

func (*MySQLDialect) RenderTeardown

func (d *MySQLDialect) RenderTeardown(ctx Context)

func (*MySQLDialect) RenderTryCast

func (d *MySQLDialect) RenderTryCast(ctx Context, val func(), typ string)

func (*MySQLDialect) RenderTsQuery

func (d *MySQLDialect) RenderTsQuery(ctx Context, ti sdata.DBTable, ex *qcode.Exp)

func (*MySQLDialect) RenderUpdate

func (d *MySQLDialect) RenderUpdate(ctx Context, m *qcode.Mutate, set func(), from func(), where func())

func (*MySQLDialect) RenderUpsert

func (d *MySQLDialect) RenderUpsert(ctx Context, m *qcode.Mutate, insert func(), updateSet func())

func (*MySQLDialect) RenderValArrayColumn

func (d *MySQLDialect) RenderValArrayColumn(ctx Context, ex *qcode.Exp, table string, pid int32)

func (*MySQLDialect) RenderValPrefix

func (d *MySQLDialect) RenderValPrefix(ctx Context, ex *qcode.Exp) bool

func (*MySQLDialect) RenderValVar

func (d *MySQLDialect) RenderValVar(ctx Context, ex *qcode.Exp, val string) bool

func (*MySQLDialect) RenderVar

func (d *MySQLDialect) RenderVar(ctx Context, name string)

func (*MySQLDialect) RenderVarDeclaration

func (d *MySQLDialect) RenderVarDeclaration(ctx Context, name, typeName string)

func (*MySQLDialect) RequiresBooleanAsInt

func (d *MySQLDialect) RequiresBooleanAsInt() bool

func (*MySQLDialect) RequiresJSONAsString

func (d *MySQLDialect) RequiresJSONAsString() bool

Driver Behavior

func (*MySQLDialect) RequiresJSONQueryWrapper

func (d *MySQLDialect) RequiresJSONQueryWrapper() bool

Column rendering

func (*MySQLDialect) RequiresLowercaseIdentifiers

func (d *MySQLDialect) RequiresLowercaseIdentifiers() bool

func (*MySQLDialect) RequiresNullOnEmptySelect

func (d *MySQLDialect) RequiresNullOnEmptySelect() bool

func (*MySQLDialect) RequiresRecursiveCTEColumnList

func (d *MySQLDialect) RequiresRecursiveCTEColumnList() bool

func (*MySQLDialect) RequiresRecursiveKeyword

func (d *MySQLDialect) RequiresRecursiveKeyword() bool

Recursive CTE Syntax

func (*MySQLDialect) RoleDummyTable

func (d *MySQLDialect) RoleDummyTable() string

func (*MySQLDialect) RoleLimitSuffix

func (d *MySQLDialect) RoleLimitSuffix() string

func (*MySQLDialect) RoleSelectPrefix

func (d *MySQLDialect) RoleSelectPrefix() string

Role Statement rendering

func (*MySQLDialect) SplitQuery

func (d *MySQLDialect) SplitQuery(query string) (parts []string)

func (*MySQLDialect) SupportsConflictUpdate

func (d *MySQLDialect) SupportsConflictUpdate() bool

func (*MySQLDialect) SupportsLateral

func (d *MySQLDialect) SupportsLateral() bool

func (*MySQLDialect) SupportsLinearExecution

func (d *MySQLDialect) SupportsLinearExecution() bool

func (*MySQLDialect) SupportsReturning

func (d *MySQLDialect) SupportsReturning() bool

func (*MySQLDialect) SupportsSubscriptionBatching

func (d *MySQLDialect) SupportsSubscriptionBatching() bool

func (*MySQLDialect) SupportsWritableCTE

func (d *MySQLDialect) SupportsWritableCTE() bool

func (*MySQLDialect) TransformBooleanLiterals

func (d *MySQLDialect) TransformBooleanLiterals(match string) string

func (*MySQLDialect) UseNamedParams

func (d *MySQLDialect) UseNamedParams() bool

func (*MySQLDialect) WrapRecursiveSelect

func (d *MySQLDialect) WrapRecursiveSelect() bool

type NameMapSetter added in v3.8.0

type NameMapSetter interface {
	SetNameMap(tables []sdata.DBTable)
}

NameMapSetter is an optional interface that dialects can implement to receive a mapping of normalized→original identifier names. This is used by MSSQL to preserve PascalCase identifiers in generated SQL.

type OracleDialect

type OracleDialect struct {
	DBVersion       int
	EnableCamelcase bool
}

func (*OracleDialect) BindVar

func (d *OracleDialect) BindVar(i int) string

func (*OracleDialect) ModifySelectsForMutation

func (d *OracleDialect) ModifySelectsForMutation(qc *qcode.QCode)

func (*OracleDialect) Name

func (d *OracleDialect) Name() string

func (*OracleDialect) QuoteIdentifier

func (d *OracleDialect) QuoteIdentifier(s string) string

func (*OracleDialect) RenderArray

func (d *OracleDialect) RenderArray(ctx Context, items []string)

func (*OracleDialect) RenderArrayAggPrefix

func (d *OracleDialect) RenderArrayAggPrefix(ctx Context, distinct bool)

func (*OracleDialect) RenderArrayRemove

func (d *OracleDialect) RenderArrayRemove(ctx Context, col string, val func())

func (*OracleDialect) RenderArraySelectPrefix

func (d *OracleDialect) RenderArraySelectPrefix(ctx Context)

Array Operations

func (*OracleDialect) RenderArraySelectSuffix

func (d *OracleDialect) RenderArraySelectSuffix(ctx Context)

func (*OracleDialect) RenderAssign

func (d *OracleDialect) RenderAssign(ctx Context, col string, val string)

func (*OracleDialect) RenderBaseTable

func (d *OracleDialect) RenderBaseTable(ctx Context)

func (*OracleDialect) RenderBegin

func (d *OracleDialect) RenderBegin(ctx Context)

func (*OracleDialect) RenderBooleanEqualsTrue

func (d *OracleDialect) RenderBooleanEqualsTrue(ctx Context, paramName string)

func (*OracleDialect) RenderBooleanNotEqualsTrue

func (d *OracleDialect) RenderBooleanNotEqualsTrue(ctx Context, paramName string)

func (*OracleDialect) RenderCast

func (d *OracleDialect) RenderCast(ctx Context, val func(), typ string)

func (*OracleDialect) RenderChildCursor

func (d *OracleDialect) RenderChildCursor(ctx Context, renderChild func())

func (*OracleDialect) RenderChildValue

func (d *OracleDialect) RenderChildValue(ctx Context, sel *qcode.Select, renderChild func())

func (*OracleDialect) RenderCursorCTE

func (d *OracleDialect) RenderCursorCTE(ctx Context, sel *qcode.Select)

func (*OracleDialect) RenderDelete

func (d *OracleDialect) RenderDelete(ctx Context, m *qcode.Mutate, where func())

func (*OracleDialect) RenderDistinctOn

func (d *OracleDialect) RenderDistinctOn(ctx Context, sel *qcode.Select)

func (*OracleDialect) RenderFromEdge

func (d *OracleDialect) RenderFromEdge(ctx Context, sel *qcode.Select)

func (*OracleDialect) RenderGeoOp

func (d *OracleDialect) RenderGeoOp(ctx Context, table, col string, ex *qcode.Exp) error

RenderGeoOp renders Oracle Spatial operations

func (*OracleDialect) RenderIDCapture

func (d *OracleDialect) RenderIDCapture(ctx Context, varName string)

func (*OracleDialect) RenderInlineChild

func (d *OracleDialect) RenderInlineChild(ctx Context, renderer InlineChildRenderer, psel, sel *qcode.Select)

RenderInlineChild is not used for Oracle since it supports LATERAL joins

func (*OracleDialect) RenderInsert

func (d *OracleDialect) RenderInsert(ctx Context, m *qcode.Mutate, values func())

func (*OracleDialect) RenderJSONField

func (d *OracleDialect) RenderJSONField(ctx Context, fieldName string, tableAlias string, colName string, isNull bool, isJSON bool)

func (*OracleDialect) RenderJSONNullCursorField

func (d *OracleDialect) RenderJSONNullCursorField(ctx Context, fieldName string)

func (*OracleDialect) RenderJSONNullField

func (d *OracleDialect) RenderJSONNullField(ctx Context, fieldName string)

JSON Null Fields

func (*OracleDialect) RenderJSONPath

func (d *OracleDialect) RenderJSONPath(ctx Context, table, col string, path []string)

func (*OracleDialect) RenderJSONPlural

func (d *OracleDialect) RenderJSONPlural(ctx Context, sel *qcode.Select)

func (*OracleDialect) RenderJSONRoot

func (d *OracleDialect) RenderJSONRoot(ctx Context, sel *qcode.Select)

func (*OracleDialect) RenderJSONRootField

func (d *OracleDialect) RenderJSONRootField(ctx Context, key string, val func())

func (*OracleDialect) RenderJSONRootSuffix

func (d *OracleDialect) RenderJSONRootSuffix(ctx Context)

func (*OracleDialect) RenderJSONSelect

func (d *OracleDialect) RenderJSONSelect(ctx Context, sel *qcode.Select)

func (*OracleDialect) RenderJoinTables

func (d *OracleDialect) RenderJoinTables(ctx Context, sel *qcode.Select)

func (*OracleDialect) RenderLateralJoin

func (d *OracleDialect) RenderLateralJoin(ctx Context, sel *qcode.Select, multi bool)

func (*OracleDialect) RenderLateralJoinClose

func (d *OracleDialect) RenderLateralJoinClose(ctx Context, alias string)

func (*OracleDialect) RenderLimit

func (d *OracleDialect) RenderLimit(ctx Context, sel *qcode.Select)

func (*OracleDialect) RenderLinearConnect

func (d *OracleDialect) RenderLinearConnect(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderFilter func())

func (*OracleDialect) RenderLinearDisconnect

func (d *OracleDialect) RenderLinearDisconnect(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderFilter func())

func (*OracleDialect) RenderLinearInsert

func (d *OracleDialect) RenderLinearInsert(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderColVal func(qcode.MColumn))

func (*OracleDialect) RenderLinearUpdate

func (d *OracleDialect) RenderLinearUpdate(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderColVal func(qcode.MColumn), renderWhere func())

func (*OracleDialect) RenderList

func (d *OracleDialect) RenderList(ctx Context, ex *qcode.Exp)

func (*OracleDialect) RenderLiteral

func (d *OracleDialect) RenderLiteral(ctx Context, val string, valType qcode.ValType)

func (*OracleDialect) RenderMutateToRecordSet

func (d *OracleDialect) RenderMutateToRecordSet(ctx Context, m *qcode.Mutate, n int, renderRoot func())

func (*OracleDialect) RenderMutationCTE

func (d *OracleDialect) RenderMutationCTE(ctx Context, m *qcode.Mutate, renderBody func())

func (*OracleDialect) RenderMutationInput

func (d *OracleDialect) RenderMutationInput(ctx Context, qc *qcode.QCode)

func (*OracleDialect) RenderMutationPostamble

func (d *OracleDialect) RenderMutationPostamble(ctx Context, qc *qcode.QCode)

func (*OracleDialect) RenderOp

func (d *OracleDialect) RenderOp(op qcode.ExpOp) (string, error)

func (*OracleDialect) RenderOrderBy

func (d *OracleDialect) RenderOrderBy(ctx Context, sel *qcode.Select)

func (*OracleDialect) RenderQueryPrefix

func (d *OracleDialect) RenderQueryPrefix(ctx Context, qc *qcode.QCode)

func (*OracleDialect) RenderRecursiveAnchorWhere

func (d *OracleDialect) RenderRecursiveAnchorWhere(ctx Context, psel *qcode.Select, ti sdata.DBTable, pkCol string) bool

func (*OracleDialect) RenderRecursiveLimit1

func (d *OracleDialect) RenderRecursiveLimit1(ctx Context)

func (*OracleDialect) RenderRecursiveOffset

func (d *OracleDialect) RenderRecursiveOffset(ctx Context)

func (*OracleDialect) RenderReturning

func (d *OracleDialect) RenderReturning(ctx Context, m *qcode.Mutate)

func (*OracleDialect) RenderRootTerminator

func (d *OracleDialect) RenderRootTerminator(ctx Context)

func (*OracleDialect) RenderSearchHeadline

func (d *OracleDialect) RenderSearchHeadline(ctx Context, sel *qcode.Select, f qcode.Field)

func (*OracleDialect) RenderSearchRank

func (d *OracleDialect) RenderSearchRank(ctx Context, sel *qcode.Select, f qcode.Field)

func (*OracleDialect) RenderSetSessionVar

func (d *OracleDialect) RenderSetSessionVar(ctx Context, name, value string) bool

func (*OracleDialect) RenderSetup

func (d *OracleDialect) RenderSetup(ctx Context)

func (*OracleDialect) RenderSubscriptionUnbox

func (d *OracleDialect) RenderSubscriptionUnbox(ctx Context, params []Param, innerSQL string)

func (*OracleDialect) RenderTableAlias

func (d *OracleDialect) RenderTableAlias(ctx Context, alias string)

func (*OracleDialect) RenderTableName

func (d *OracleDialect) RenderTableName(ctx Context, sel *qcode.Select, schema, table string)

func (*OracleDialect) RenderTeardown

func (d *OracleDialect) RenderTeardown(ctx Context)

func (*OracleDialect) RenderTryCast

func (d *OracleDialect) RenderTryCast(ctx Context, val func(), typ string)

func (*OracleDialect) RenderTsQuery

func (d *OracleDialect) RenderTsQuery(ctx Context, ti sdata.DBTable, ex *qcode.Exp)

func (*OracleDialect) RenderUpdate

func (d *OracleDialect) RenderUpdate(ctx Context, m *qcode.Mutate, set func(), from func(), where func())

func (*OracleDialect) RenderUpsert

func (d *OracleDialect) RenderUpsert(ctx Context, m *qcode.Mutate, insert func(), updateSet func())

func (*OracleDialect) RenderValArrayColumn

func (d *OracleDialect) RenderValArrayColumn(ctx Context, ex *qcode.Exp, table string, pid int32)

func (*OracleDialect) RenderValPrefix

func (d *OracleDialect) RenderValPrefix(ctx Context, ex *qcode.Exp) bool

func (*OracleDialect) RenderValVar

func (d *OracleDialect) RenderValVar(ctx Context, ex *qcode.Exp, val string) bool

func (*OracleDialect) RenderVar

func (d *OracleDialect) RenderVar(ctx Context, name string)

func (*OracleDialect) RenderVarDeclaration

func (d *OracleDialect) RenderVarDeclaration(ctx Context, name, typeName string)

func (*OracleDialect) RequiresBooleanAsInt

func (d *OracleDialect) RequiresBooleanAsInt() bool

func (*OracleDialect) RequiresJSONAsString

func (d *OracleDialect) RequiresJSONAsString() bool

Driver Behavior

func (*OracleDialect) RequiresJSONQueryWrapper

func (d *OracleDialect) RequiresJSONQueryWrapper() bool

Column rendering

func (*OracleDialect) RequiresLowercaseIdentifiers

func (d *OracleDialect) RequiresLowercaseIdentifiers() bool

func (*OracleDialect) RequiresNullOnEmptySelect

func (d *OracleDialect) RequiresNullOnEmptySelect() bool

func (*OracleDialect) RequiresRecursiveCTEColumnList

func (d *OracleDialect) RequiresRecursiveCTEColumnList() bool

func (*OracleDialect) RequiresRecursiveKeyword

func (d *OracleDialect) RequiresRecursiveKeyword() bool

Recursive CTE Syntax

func (*OracleDialect) RoleDummyTable

func (d *OracleDialect) RoleDummyTable() string

func (*OracleDialect) RoleLimitSuffix

func (d *OracleDialect) RoleLimitSuffix() string

func (*OracleDialect) RoleSelectPrefix

func (d *OracleDialect) RoleSelectPrefix() string

Role Statement rendering

func (*OracleDialect) SplitQuery

func (d *OracleDialect) SplitQuery(query string) (parts []string)

func (*OracleDialect) SupportsConflictUpdate

func (d *OracleDialect) SupportsConflictUpdate() bool

func (*OracleDialect) SupportsLateral

func (d *OracleDialect) SupportsLateral() bool

func (*OracleDialect) SupportsLinearExecution

func (d *OracleDialect) SupportsLinearExecution() bool

func (*OracleDialect) SupportsReturning

func (d *OracleDialect) SupportsReturning() bool

func (*OracleDialect) SupportsSubscriptionBatching

func (d *OracleDialect) SupportsSubscriptionBatching() bool

func (*OracleDialect) SupportsWritableCTE

func (d *OracleDialect) SupportsWritableCTE() bool

func (*OracleDialect) TransformBooleanLiterals

func (d *OracleDialect) TransformBooleanLiterals(match string) string

func (*OracleDialect) UseNamedParams

func (d *OracleDialect) UseNamedParams() bool

func (*OracleDialect) WrapRecursiveSelect

func (d *OracleDialect) WrapRecursiveSelect() bool

type Param

type Param struct {
	Name        string
	Type        string
	IsArray     bool
	IsNotNull   bool
	WrapInArray bool
}

type PostgresDialect

type PostgresDialect struct {
	DBVersion       int
	EnableCamelcase bool
	SecPrefix       []byte
}

func (*PostgresDialect) BindVar

func (d *PostgresDialect) BindVar(i int) string

func (*PostgresDialect) ModifySelectsForMutation

func (d *PostgresDialect) ModifySelectsForMutation(qc *qcode.QCode)

func (*PostgresDialect) Name

func (d *PostgresDialect) Name() string

func (*PostgresDialect) QuoteIdentifier

func (d *PostgresDialect) QuoteIdentifier(s string) string

func (*PostgresDialect) RenderArray

func (d *PostgresDialect) RenderArray(ctx Context, items []string)

func (*PostgresDialect) RenderArrayAggPrefix

func (d *PostgresDialect) RenderArrayAggPrefix(ctx Context, distinct bool)

func (*PostgresDialect) RenderArrayRemove

func (d *PostgresDialect) RenderArrayRemove(ctx Context, col string, val func())

func (*PostgresDialect) RenderArraySelectPrefix

func (d *PostgresDialect) RenderArraySelectPrefix(ctx Context)

Array Operations

func (*PostgresDialect) RenderArraySelectSuffix

func (d *PostgresDialect) RenderArraySelectSuffix(ctx Context)

func (*PostgresDialect) RenderAssign

func (d *PostgresDialect) RenderAssign(ctx Context, col string, val string)

func (*PostgresDialect) RenderBaseTable

func (d *PostgresDialect) RenderBaseTable(ctx Context)

func (*PostgresDialect) RenderBegin

func (d *PostgresDialect) RenderBegin(ctx Context)

func (*PostgresDialect) RenderBooleanEqualsTrue

func (d *PostgresDialect) RenderBooleanEqualsTrue(ctx Context, paramName string)

func (*PostgresDialect) RenderBooleanNotEqualsTrue

func (d *PostgresDialect) RenderBooleanNotEqualsTrue(ctx Context, paramName string)

func (*PostgresDialect) RenderCast

func (d *PostgresDialect) RenderCast(ctx Context, val func(), typ string)

func (*PostgresDialect) RenderChildCursor

func (d *PostgresDialect) RenderChildCursor(ctx Context, renderChild func())

func (*PostgresDialect) RenderChildValue

func (d *PostgresDialect) RenderChildValue(ctx Context, sel *qcode.Select, renderChild func())

func (*PostgresDialect) RenderCursorCTE

func (d *PostgresDialect) RenderCursorCTE(ctx Context, sel *qcode.Select)

func (*PostgresDialect) RenderDelete

func (d *PostgresDialect) RenderDelete(ctx Context, m *qcode.Mutate, where func())

func (*PostgresDialect) RenderDistinctOn

func (d *PostgresDialect) RenderDistinctOn(ctx Context, sel *qcode.Select)

func (*PostgresDialect) RenderFromEdge

func (d *PostgresDialect) RenderFromEdge(ctx Context, sel *qcode.Select)

func (*PostgresDialect) RenderGeoOp

func (d *PostgresDialect) RenderGeoOp(ctx Context, table, col string, ex *qcode.Exp) error

RenderGeoOp renders PostGIS spatial operations

func (*PostgresDialect) RenderIDCapture

func (d *PostgresDialect) RenderIDCapture(ctx Context, varName string)

func (*PostgresDialect) RenderInlineChild

func (d *PostgresDialect) RenderInlineChild(ctx Context, renderer InlineChildRenderer, psel, sel *qcode.Select)

RenderInlineChild is not used for PostgreSQL since it supports LATERAL joins

func (*PostgresDialect) RenderInsert

func (d *PostgresDialect) RenderInsert(ctx Context, m *qcode.Mutate, values func())

func (*PostgresDialect) RenderJSONField

func (d *PostgresDialect) RenderJSONField(ctx Context, fieldName string, tableAlias string, colName string, isNull bool, isJSON bool)

func (*PostgresDialect) RenderJSONNullCursorField

func (d *PostgresDialect) RenderJSONNullCursorField(ctx Context, fieldName string)

func (*PostgresDialect) RenderJSONNullField

func (d *PostgresDialect) RenderJSONNullField(ctx Context, fieldName string)

JSON Null Fields

func (*PostgresDialect) RenderJSONPath

func (d *PostgresDialect) RenderJSONPath(ctx Context, table, col string, path []string)

func (*PostgresDialect) RenderJSONPlural

func (d *PostgresDialect) RenderJSONPlural(ctx Context, sel *qcode.Select)

func (*PostgresDialect) RenderJSONRoot

func (d *PostgresDialect) RenderJSONRoot(ctx Context, sel *qcode.Select)

func (*PostgresDialect) RenderJSONRootField

func (d *PostgresDialect) RenderJSONRootField(ctx Context, key string, val func())

func (*PostgresDialect) RenderJSONRootSuffix

func (d *PostgresDialect) RenderJSONRootSuffix(ctx Context)

func (*PostgresDialect) RenderJSONSelect

func (d *PostgresDialect) RenderJSONSelect(ctx Context, sel *qcode.Select)

func (*PostgresDialect) RenderJoinTables

func (d *PostgresDialect) RenderJoinTables(ctx Context, sel *qcode.Select)

func (*PostgresDialect) RenderLateralJoin

func (d *PostgresDialect) RenderLateralJoin(ctx Context, sel *qcode.Select, multi bool)

func (*PostgresDialect) RenderLateralJoinClose

func (d *PostgresDialect) RenderLateralJoinClose(ctx Context, alias string)

func (*PostgresDialect) RenderLimit

func (d *PostgresDialect) RenderLimit(ctx Context, sel *qcode.Select)

func (*PostgresDialect) RenderLinearConnect

func (d *PostgresDialect) RenderLinearConnect(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderFilter func())

func (*PostgresDialect) RenderLinearDisconnect

func (d *PostgresDialect) RenderLinearDisconnect(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderFilter func())

func (*PostgresDialect) RenderLinearInsert

func (d *PostgresDialect) RenderLinearInsert(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderColVal func(qcode.MColumn))

func (*PostgresDialect) RenderLinearUpdate

func (d *PostgresDialect) RenderLinearUpdate(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderColVal func(qcode.MColumn), renderWhere func())

func (*PostgresDialect) RenderList

func (d *PostgresDialect) RenderList(ctx Context, ex *qcode.Exp)

func (*PostgresDialect) RenderLiteral

func (d *PostgresDialect) RenderLiteral(ctx Context, val string, valType qcode.ValType)

func (*PostgresDialect) RenderMutateToRecordSet

func (d *PostgresDialect) RenderMutateToRecordSet(ctx Context, m *qcode.Mutate, n int, renderRoot func())

func (*PostgresDialect) RenderMutationCTE

func (d *PostgresDialect) RenderMutationCTE(ctx Context, m *qcode.Mutate, renderBody func())

func (*PostgresDialect) RenderMutationInput

func (d *PostgresDialect) RenderMutationInput(ctx Context, qc *qcode.QCode)

func (*PostgresDialect) RenderMutationPostamble

func (d *PostgresDialect) RenderMutationPostamble(ctx Context, qc *qcode.QCode)

func (*PostgresDialect) RenderOp

func (d *PostgresDialect) RenderOp(op qcode.ExpOp) (string, error)

func (*PostgresDialect) RenderOrderBy

func (d *PostgresDialect) RenderOrderBy(ctx Context, sel *qcode.Select)

func (*PostgresDialect) RenderQueryPrefix

func (d *PostgresDialect) RenderQueryPrefix(ctx Context, qc *qcode.QCode)

func (*PostgresDialect) RenderRecursiveAnchorWhere

func (d *PostgresDialect) RenderRecursiveAnchorWhere(ctx Context, psel *qcode.Select, ti sdata.DBTable, pkCol string) bool

func (*PostgresDialect) RenderRecursiveLimit1

func (d *PostgresDialect) RenderRecursiveLimit1(ctx Context)

func (*PostgresDialect) RenderRecursiveOffset

func (d *PostgresDialect) RenderRecursiveOffset(ctx Context)

func (*PostgresDialect) RenderReturning

func (d *PostgresDialect) RenderReturning(ctx Context, m *qcode.Mutate)

func (*PostgresDialect) RenderRootTerminator

func (d *PostgresDialect) RenderRootTerminator(ctx Context)

func (*PostgresDialect) RenderSearchHeadline

func (d *PostgresDialect) RenderSearchHeadline(ctx Context, sel *qcode.Select, f qcode.Field)

func (*PostgresDialect) RenderSearchRank

func (d *PostgresDialect) RenderSearchRank(ctx Context, sel *qcode.Select, f qcode.Field)

func (*PostgresDialect) RenderSetSessionVar

func (d *PostgresDialect) RenderSetSessionVar(ctx Context, name, value string) bool

RenderSetSessionVar renders the SQL to set a session variable in Postgres

func (*PostgresDialect) RenderSetup

func (d *PostgresDialect) RenderSetup(ctx Context)

func (*PostgresDialect) RenderSubscriptionUnbox

func (d *PostgresDialect) RenderSubscriptionUnbox(ctx Context, params []Param, innerSQL string)

func (*PostgresDialect) RenderTableAlias

func (d *PostgresDialect) RenderTableAlias(ctx Context, alias string)

func (*PostgresDialect) RenderTableName

func (d *PostgresDialect) RenderTableName(ctx Context, sel *qcode.Select, schema, table string)

func (*PostgresDialect) RenderTeardown

func (d *PostgresDialect) RenderTeardown(ctx Context)

func (*PostgresDialect) RenderTryCast

func (d *PostgresDialect) RenderTryCast(ctx Context, val func(), typ string)

func (*PostgresDialect) RenderTsQuery

func (d *PostgresDialect) RenderTsQuery(ctx Context, ti sdata.DBTable, ex *qcode.Exp)

func (*PostgresDialect) RenderUpdate

func (d *PostgresDialect) RenderUpdate(ctx Context, m *qcode.Mutate, set func(), from func(), where func())

func (*PostgresDialect) RenderUpsert

func (d *PostgresDialect) RenderUpsert(ctx Context, m *qcode.Mutate, insert func(), updateSet func())

func (*PostgresDialect) RenderValArrayColumn

func (d *PostgresDialect) RenderValArrayColumn(ctx Context, ex *qcode.Exp, table string, pid int32)

func (*PostgresDialect) RenderValPrefix

func (d *PostgresDialect) RenderValPrefix(ctx Context, ex *qcode.Exp) bool

func (*PostgresDialect) RenderValVar

func (d *PostgresDialect) RenderValVar(ctx Context, ex *qcode.Exp, val string) bool

func (*PostgresDialect) RenderVar

func (d *PostgresDialect) RenderVar(ctx Context, name string)

func (*PostgresDialect) RenderVarDeclaration

func (d *PostgresDialect) RenderVarDeclaration(ctx Context, name, typeName string)

func (*PostgresDialect) RequiresBooleanAsInt

func (d *PostgresDialect) RequiresBooleanAsInt() bool

func (*PostgresDialect) RequiresJSONAsString

func (d *PostgresDialect) RequiresJSONAsString() bool

Driver Behavior

func (*PostgresDialect) RequiresJSONQueryWrapper

func (d *PostgresDialect) RequiresJSONQueryWrapper() bool

Column rendering

func (*PostgresDialect) RequiresLowercaseIdentifiers

func (d *PostgresDialect) RequiresLowercaseIdentifiers() bool

func (*PostgresDialect) RequiresNullOnEmptySelect

func (d *PostgresDialect) RequiresNullOnEmptySelect() bool

func (*PostgresDialect) RequiresRecursiveCTEColumnList

func (d *PostgresDialect) RequiresRecursiveCTEColumnList() bool

func (*PostgresDialect) RequiresRecursiveKeyword

func (d *PostgresDialect) RequiresRecursiveKeyword() bool

Recursive CTE Syntax

func (*PostgresDialect) RoleDummyTable

func (d *PostgresDialect) RoleDummyTable() string

func (*PostgresDialect) RoleLimitSuffix

func (d *PostgresDialect) RoleLimitSuffix() string

func (*PostgresDialect) RoleSelectPrefix

func (d *PostgresDialect) RoleSelectPrefix() string

Role Statement rendering

func (*PostgresDialect) SplitQuery

func (d *PostgresDialect) SplitQuery(query string) (parts []string)

func (*PostgresDialect) SupportsConflictUpdate

func (d *PostgresDialect) SupportsConflictUpdate() bool

func (*PostgresDialect) SupportsLateral

func (d *PostgresDialect) SupportsLateral() bool

func (*PostgresDialect) SupportsLinearExecution

func (d *PostgresDialect) SupportsLinearExecution() bool

func (*PostgresDialect) SupportsReturning

func (d *PostgresDialect) SupportsReturning() bool

func (*PostgresDialect) SupportsSubscriptionBatching

func (d *PostgresDialect) SupportsSubscriptionBatching() bool

func (*PostgresDialect) SupportsWritableCTE

func (d *PostgresDialect) SupportsWritableCTE() bool

func (*PostgresDialect) TransformBooleanLiterals

func (d *PostgresDialect) TransformBooleanLiterals(match string) string

func (*PostgresDialect) UseNamedParams

func (d *PostgresDialect) UseNamedParams() bool

func (*PostgresDialect) WrapRecursiveSelect

func (d *PostgresDialect) WrapRecursiveSelect() bool

type SQLiteDialect

type SQLiteDialect struct {
}

func (*SQLiteDialect) BindVar

func (d *SQLiteDialect) BindVar(i int) string

func (*SQLiteDialect) ModifySelectsForMutation

func (d *SQLiteDialect) ModifySelectsForMutation(qc *qcode.QCode)

ModifySelectsForMutation injects WHERE clauses to filter SELECT results to only include records from INSERT/UPDATE/UPSERT mutations. This ensures CONNECT mutations' captured IDs are available in the CTE for joins, but don't affect which primary records are returned.

func (*SQLiteDialect) Name

func (d *SQLiteDialect) Name() string

func (*SQLiteDialect) Quote

func (d *SQLiteDialect) Quote(ctx Context, col string)

func (*SQLiteDialect) QuoteIdentifier

func (d *SQLiteDialect) QuoteIdentifier(s string) string

func (*SQLiteDialect) RenderArray

func (d *SQLiteDialect) RenderArray(ctx Context, items []string)

func (*SQLiteDialect) RenderArrayAggPrefix

func (d *SQLiteDialect) RenderArrayAggPrefix(ctx Context, distinct bool)

func (*SQLiteDialect) RenderArrayRemove

func (d *SQLiteDialect) RenderArrayRemove(ctx Context, col string, val func())

func (*SQLiteDialect) RenderArraySelectPrefix

func (d *SQLiteDialect) RenderArraySelectPrefix(ctx Context)

Array Operations

func (*SQLiteDialect) RenderArraySelectSuffix

func (d *SQLiteDialect) RenderArraySelectSuffix(ctx Context)

func (*SQLiteDialect) RenderAssign

func (d *SQLiteDialect) RenderAssign(ctx Context, col string, val string)

func (*SQLiteDialect) RenderBaseTable

func (d *SQLiteDialect) RenderBaseTable(ctx Context)

func (*SQLiteDialect) RenderBegin

func (d *SQLiteDialect) RenderBegin(ctx Context)

func (*SQLiteDialect) RenderBooleanEqualsTrue

func (d *SQLiteDialect) RenderBooleanEqualsTrue(ctx Context, paramName string)

func (*SQLiteDialect) RenderBooleanNotEqualsTrue

func (d *SQLiteDialect) RenderBooleanNotEqualsTrue(ctx Context, paramName string)

func (*SQLiteDialect) RenderCast

func (d *SQLiteDialect) RenderCast(ctx Context, val func(), typ string)

func (*SQLiteDialect) RenderChildCursor

func (d *SQLiteDialect) RenderChildCursor(ctx Context, renderChild func())

func (*SQLiteDialect) RenderChildValue

func (d *SQLiteDialect) RenderChildValue(ctx Context, sel *qcode.Select, renderChild func())

func (*SQLiteDialect) RenderCursorCTE

func (d *SQLiteDialect) RenderCursorCTE(ctx Context, sel *qcode.Select)

func (*SQLiteDialect) RenderDelete

func (d *SQLiteDialect) RenderDelete(ctx Context, m *qcode.Mutate, where func())

func (*SQLiteDialect) RenderDistinctOn

func (d *SQLiteDialect) RenderDistinctOn(ctx Context, sel *qcode.Select)

func (*SQLiteDialect) RenderFromEdge

func (d *SQLiteDialect) RenderFromEdge(ctx Context, sel *qcode.Select)

func (*SQLiteDialect) RenderGeoOp

func (d *SQLiteDialect) RenderGeoOp(ctx Context, table, col string, ex *qcode.Exp) error

RenderGeoOp renders SpatiaLite spatial operations Requires SpatiaLite extension to be loaded

func (*SQLiteDialect) RenderIDCapture

func (d *SQLiteDialect) RenderIDCapture(ctx Context, varName string)

func (*SQLiteDialect) RenderInlineChild

func (d *SQLiteDialect) RenderInlineChild(ctx Context, renderer InlineChildRenderer, psel, sel *qcode.Select)

RenderInlineChild for SQLite uses the default implementation from query.go RenderInlineChild for SQLite uses the default implementation from query.go

func (*SQLiteDialect) RenderInsert

func (d *SQLiteDialect) RenderInsert(ctx Context, m *qcode.Mutate, values func())

func (*SQLiteDialect) RenderJSONField

func (d *SQLiteDialect) RenderJSONField(ctx Context, fieldName string, tableAlias string, colName string, isNull bool, isJSON bool)

func (*SQLiteDialect) RenderJSONNullCursorField

func (d *SQLiteDialect) RenderJSONNullCursorField(ctx Context, fieldName string)

func (*SQLiteDialect) RenderJSONNullField

func (d *SQLiteDialect) RenderJSONNullField(ctx Context, fieldName string)

JSON Null Fields

func (*SQLiteDialect) RenderJSONPath

func (d *SQLiteDialect) RenderJSONPath(ctx Context, table, col string, path []string)

func (*SQLiteDialect) RenderJSONPlural

func (d *SQLiteDialect) RenderJSONPlural(ctx Context, sel *qcode.Select)

func (*SQLiteDialect) RenderJSONRoot

func (d *SQLiteDialect) RenderJSONRoot(ctx Context, sel *qcode.Select)

func (*SQLiteDialect) RenderJSONRootField

func (d *SQLiteDialect) RenderJSONRootField(ctx Context, key string, val func())

func (*SQLiteDialect) RenderJSONRootSuffix

func (d *SQLiteDialect) RenderJSONRootSuffix(ctx Context)

func (*SQLiteDialect) RenderJSONSelect

func (d *SQLiteDialect) RenderJSONSelect(ctx Context, sel *qcode.Select)

func (*SQLiteDialect) RenderJoinTables

func (d *SQLiteDialect) RenderJoinTables(ctx Context, sel *qcode.Select)

func (*SQLiteDialect) RenderLateralJoin

func (d *SQLiteDialect) RenderLateralJoin(ctx Context, sel *qcode.Select, multi bool)

func (*SQLiteDialect) RenderLateralJoinClose

func (d *SQLiteDialect) RenderLateralJoinClose(ctx Context, alias string)

func (*SQLiteDialect) RenderLimit

func (d *SQLiteDialect) RenderLimit(ctx Context, sel *qcode.Select)

func (*SQLiteDialect) RenderLinearConnect

func (d *SQLiteDialect) RenderLinearConnect(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderFilter func())

func (*SQLiteDialect) RenderLinearDisconnect

func (d *SQLiteDialect) RenderLinearDisconnect(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderFilter func())

func (*SQLiteDialect) RenderLinearInsert

func (d *SQLiteDialect) RenderLinearInsert(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderColVal func(qcode.MColumn))

func (*SQLiteDialect) RenderLinearUpdate

func (d *SQLiteDialect) RenderLinearUpdate(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderColVal func(qcode.MColumn), renderWhere func())

func (*SQLiteDialect) RenderLinearValues

func (d *SQLiteDialect) RenderLinearValues(ctx Context, m *qcode.Mutate, renderRoot func())

func (*SQLiteDialect) RenderList

func (d *SQLiteDialect) RenderList(ctx Context, ex *qcode.Exp)

func (*SQLiteDialect) RenderLiteral

func (d *SQLiteDialect) RenderLiteral(ctx Context, val string, valType qcode.ValType)

func (*SQLiteDialect) RenderMutateToRecordSet

func (d *SQLiteDialect) RenderMutateToRecordSet(ctx Context, m *qcode.Mutate, n int, renderRoot func())

func (*SQLiteDialect) RenderMutationCTE

func (d *SQLiteDialect) RenderMutationCTE(ctx Context, m *qcode.Mutate, renderBody func())

func (*SQLiteDialect) RenderMutationInput

func (d *SQLiteDialect) RenderMutationInput(ctx Context, qc *qcode.QCode)

func (*SQLiteDialect) RenderMutationPostamble

func (d *SQLiteDialect) RenderMutationPostamble(ctx Context, qc *qcode.QCode)

func (*SQLiteDialect) RenderOp

func (d *SQLiteDialect) RenderOp(op qcode.ExpOp) (string, error)

func (*SQLiteDialect) RenderOrderBy

func (d *SQLiteDialect) RenderOrderBy(ctx Context, sel *qcode.Select)

func (*SQLiteDialect) RenderQueryPrefix

func (d *SQLiteDialect) RenderQueryPrefix(ctx Context, qc *qcode.QCode)

func (*SQLiteDialect) RenderRecursiveAnchorWhere

func (d *SQLiteDialect) RenderRecursiveAnchorWhere(ctx Context, psel *qcode.Select, ti sdata.DBTable, pkCol string) bool

func (*SQLiteDialect) RenderRecursiveLimit1

func (d *SQLiteDialect) RenderRecursiveLimit1(ctx Context)

func (*SQLiteDialect) RenderRecursiveOffset

func (d *SQLiteDialect) RenderRecursiveOffset(ctx Context)

func (*SQLiteDialect) RenderReturning

func (d *SQLiteDialect) RenderReturning(ctx Context, m *qcode.Mutate)

func (*SQLiteDialect) RenderRootTerminator

func (d *SQLiteDialect) RenderRootTerminator(ctx Context)

func (*SQLiteDialect) RenderSearchHeadline

func (d *SQLiteDialect) RenderSearchHeadline(ctx Context, sel *qcode.Select, f qcode.Field)

func (*SQLiteDialect) RenderSearchRank

func (d *SQLiteDialect) RenderSearchRank(ctx Context, sel *qcode.Select, f qcode.Field)

func (*SQLiteDialect) RenderSetSessionVar

func (d *SQLiteDialect) RenderSetSessionVar(ctx Context, name, value string) bool

func (*SQLiteDialect) RenderSetup

func (d *SQLiteDialect) RenderSetup(ctx Context)

func (*SQLiteDialect) RenderSubscriptionUnbox

func (d *SQLiteDialect) RenderSubscriptionUnbox(ctx Context, params []Param, innerSQL string)

func (*SQLiteDialect) RenderTableAlias

func (d *SQLiteDialect) RenderTableAlias(ctx Context, alias string)

func (*SQLiteDialect) RenderTableName

func (d *SQLiteDialect) RenderTableName(ctx Context, sel *qcode.Select, schema, table string)

RenderTableName renders table names for SQLite. For mutated tables in mutations, omits the schema so the scoping CTE is used.

func (*SQLiteDialect) RenderTeardown

func (d *SQLiteDialect) RenderTeardown(ctx Context)

func (*SQLiteDialect) RenderTryCast

func (d *SQLiteDialect) RenderTryCast(ctx Context, val func(), typ string)

func (*SQLiteDialect) RenderTsQuery

func (d *SQLiteDialect) RenderTsQuery(ctx Context, ti sdata.DBTable, ex *qcode.Exp)

func (*SQLiteDialect) RenderUpdate

func (d *SQLiteDialect) RenderUpdate(ctx Context, m *qcode.Mutate, set func(), from func(), where func())

func (*SQLiteDialect) RenderUpsert

func (d *SQLiteDialect) RenderUpsert(ctx Context, m *qcode.Mutate, insert func(), updateSet func())

func (*SQLiteDialect) RenderValArrayColumn

func (d *SQLiteDialect) RenderValArrayColumn(ctx Context, ex *qcode.Exp, table string, pid int32)

func (*SQLiteDialect) RenderValPrefix

func (d *SQLiteDialect) RenderValPrefix(ctx Context, ex *qcode.Exp) bool

func (*SQLiteDialect) RenderValVar

func (d *SQLiteDialect) RenderValVar(ctx Context, ex *qcode.Exp, val string) bool

func (*SQLiteDialect) RenderVar

func (d *SQLiteDialect) RenderVar(ctx Context, name string)

func (*SQLiteDialect) RenderVarDeclaration

func (d *SQLiteDialect) RenderVarDeclaration(ctx Context, name, typeName string)

func (*SQLiteDialect) RequiresBooleanAsInt

func (d *SQLiteDialect) RequiresBooleanAsInt() bool

func (*SQLiteDialect) RequiresJSONAsString

func (d *SQLiteDialect) RequiresJSONAsString() bool

Driver Behavior

func (*SQLiteDialect) RequiresJSONQueryWrapper

func (d *SQLiteDialect) RequiresJSONQueryWrapper() bool

Column rendering

func (*SQLiteDialect) RequiresLowercaseIdentifiers

func (d *SQLiteDialect) RequiresLowercaseIdentifiers() bool

func (*SQLiteDialect) RequiresNullOnEmptySelect

func (d *SQLiteDialect) RequiresNullOnEmptySelect() bool

func (*SQLiteDialect) RequiresRecursiveCTEColumnList

func (d *SQLiteDialect) RequiresRecursiveCTEColumnList() bool

func (*SQLiteDialect) RequiresRecursiveKeyword

func (d *SQLiteDialect) RequiresRecursiveKeyword() bool

Recursive CTE Syntax

func (*SQLiteDialect) RoleDummyTable

func (d *SQLiteDialect) RoleDummyTable() string

func (*SQLiteDialect) RoleLimitSuffix

func (d *SQLiteDialect) RoleLimitSuffix() string

func (*SQLiteDialect) RoleSelectPrefix

func (d *SQLiteDialect) RoleSelectPrefix() string

Role Statement rendering

func (*SQLiteDialect) SplitQuery

func (d *SQLiteDialect) SplitQuery(query string) (parts []string)

func (*SQLiteDialect) SupportsConflictUpdate

func (d *SQLiteDialect) SupportsConflictUpdate() bool

func (*SQLiteDialect) SupportsLateral

func (d *SQLiteDialect) SupportsLateral() bool

func (*SQLiteDialect) SupportsLinearExecution

func (d *SQLiteDialect) SupportsLinearExecution() bool

func (*SQLiteDialect) SupportsReturning

func (d *SQLiteDialect) SupportsReturning() bool

func (*SQLiteDialect) SupportsSubscriptionBatching

func (d *SQLiteDialect) SupportsSubscriptionBatching() bool

func (*SQLiteDialect) SupportsWritableCTE

func (d *SQLiteDialect) SupportsWritableCTE() bool

func (*SQLiteDialect) TransformBooleanLiterals

func (d *SQLiteDialect) TransformBooleanLiterals(match string) string

func (*SQLiteDialect) UseNamedParams

func (d *SQLiteDialect) UseNamedParams() bool

func (*SQLiteDialect) WrapRecursiveSelect

func (d *SQLiteDialect) WrapRecursiveSelect() bool

type SnowflakeDialect added in v3.14.0

type SnowflakeDialect struct {
	PostgresDialect
}

SnowflakeDialect is implementation-ready but intentionally not wired into compiler/service selection yet (single-file delivery constraint).

TODO(follow-up outside this file): 1) Add case "snowflake" in psql.NewCompiler (core/internal/psql/query.go) 2) Add case "snowflake" in core/subs.go getDialectForType 3) Add snowflake to DB type validation lists 4) Add Snowflake schema discovery SQL + service driver wiring

TODO(parity): - GIS operators are intentionally unsupported in this phase. - Postgres-specific array/json key ops are intentionally unsupported. - RelEmbedded/RenderFromEdge parity may need a Snowflake-specific approach.

func (*SnowflakeDialect) BindVar added in v3.14.0

func (d *SnowflakeDialect) BindVar(i int) string

func (*SnowflakeDialect) ModifySelectsForMutation added in v3.14.0

func (d *SnowflakeDialect) ModifySelectsForMutation(qc *qcode.QCode)

func (*SnowflakeDialect) Name added in v3.14.0

func (d *SnowflakeDialect) Name() string

func (*SnowflakeDialect) QuoteIdentifier added in v3.14.0

func (d *SnowflakeDialect) QuoteIdentifier(s string) string

func (*SnowflakeDialect) RenderArray added in v3.14.0

func (d *SnowflakeDialect) RenderArray(ctx Context, items []string)

func (*SnowflakeDialect) RenderBegin added in v3.14.0

func (d *SnowflakeDialect) RenderBegin(ctx Context)

func (*SnowflakeDialect) RenderCast added in v3.14.0

func (d *SnowflakeDialect) RenderCast(ctx Context, val func(), typ string)

func (*SnowflakeDialect) RenderChildCursor added in v3.14.0

func (d *SnowflakeDialect) RenderChildCursor(ctx Context, renderChild func())

func (*SnowflakeDialect) RenderChildValue added in v3.14.0

func (d *SnowflakeDialect) RenderChildValue(ctx Context, sel *qcode.Select, renderChild func())

func (*SnowflakeDialect) RenderCursorCTE added in v3.14.0

func (d *SnowflakeDialect) RenderCursorCTE(ctx Context, sel *qcode.Select)

func (*SnowflakeDialect) RenderFromEdge added in v3.14.0

func (d *SnowflakeDialect) RenderFromEdge(ctx Context, sel *qcode.Select)

func (*SnowflakeDialect) RenderGeoOp added in v3.14.0

func (d *SnowflakeDialect) RenderGeoOp(ctx Context, table, col string, ex *qcode.Exp) error

func (*SnowflakeDialect) RenderIDCapture added in v3.14.0

func (d *SnowflakeDialect) RenderIDCapture(ctx Context, varName string)

func (*SnowflakeDialect) RenderInlineChild added in v3.14.0

func (d *SnowflakeDialect) RenderInlineChild(ctx Context, renderer InlineChildRenderer, psel, sel *qcode.Select)

func (*SnowflakeDialect) RenderJSONField added in v3.14.0

func (d *SnowflakeDialect) RenderJSONField(ctx Context, fieldName string, tableAlias string, colName string, isNull bool, isJSON bool)

func (*SnowflakeDialect) RenderJSONNullCursorField added in v3.14.0

func (d *SnowflakeDialect) RenderJSONNullCursorField(ctx Context, fieldName string)

func (*SnowflakeDialect) RenderJSONNullField added in v3.14.0

func (d *SnowflakeDialect) RenderJSONNullField(ctx Context, fieldName string)

func (*SnowflakeDialect) RenderJSONPath added in v3.14.0

func (d *SnowflakeDialect) RenderJSONPath(ctx Context, table, col string, path []string)

func (*SnowflakeDialect) RenderJSONPlural added in v3.14.0

func (d *SnowflakeDialect) RenderJSONPlural(ctx Context, sel *qcode.Select)

func (*SnowflakeDialect) RenderJSONRoot added in v3.14.0

func (d *SnowflakeDialect) RenderJSONRoot(ctx Context, sel *qcode.Select)

func (*SnowflakeDialect) RenderJSONRootField added in v3.14.0

func (d *SnowflakeDialect) RenderJSONRootField(ctx Context, key string, val func())

func (*SnowflakeDialect) RenderJSONRootSuffix added in v3.14.0

func (d *SnowflakeDialect) RenderJSONRootSuffix(ctx Context)

func (*SnowflakeDialect) RenderJSONSelect added in v3.14.0

func (d *SnowflakeDialect) RenderJSONSelect(ctx Context, sel *qcode.Select)

func (*SnowflakeDialect) RenderJoinTables added in v3.14.0

func (d *SnowflakeDialect) RenderJoinTables(ctx Context, sel *qcode.Select)

func (*SnowflakeDialect) RenderLinearConnect added in v3.14.0

func (d *SnowflakeDialect) RenderLinearConnect(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderFilter func())

func (*SnowflakeDialect) RenderLinearDisconnect added in v3.14.0

func (d *SnowflakeDialect) RenderLinearDisconnect(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderFilter func())

func (*SnowflakeDialect) RenderLinearInsert added in v3.14.0

func (d *SnowflakeDialect) RenderLinearInsert(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderColVal func(qcode.MColumn))

func (*SnowflakeDialect) RenderLinearUpdate added in v3.14.0

func (d *SnowflakeDialect) RenderLinearUpdate(ctx Context, m *qcode.Mutate, qc *qcode.QCode, varName string, renderColVal func(qcode.MColumn), renderWhere func())

func (*SnowflakeDialect) RenderList added in v3.14.0

func (d *SnowflakeDialect) RenderList(ctx Context, ex *qcode.Exp)

func (*SnowflakeDialect) RenderMutateToRecordSet added in v3.14.0

func (d *SnowflakeDialect) RenderMutateToRecordSet(ctx Context, m *qcode.Mutate, n int, renderRoot func())

func (*SnowflakeDialect) RenderMutationInput added in v3.14.0

func (d *SnowflakeDialect) RenderMutationInput(ctx Context, qc *qcode.QCode)

func (*SnowflakeDialect) RenderOp added in v3.14.0

func (d *SnowflakeDialect) RenderOp(op qcode.ExpOp) (string, error)

func (*SnowflakeDialect) RenderOrderBy added in v3.14.0

func (d *SnowflakeDialect) RenderOrderBy(ctx Context, sel *qcode.Select)

func (*SnowflakeDialect) RenderRecursiveAnchorWhere added in v3.14.0

func (d *SnowflakeDialect) RenderRecursiveAnchorWhere(ctx Context, psel *qcode.Select, ti sdata.DBTable, pkCol string) bool

func (*SnowflakeDialect) RenderSearchHeadline added in v3.14.0

func (d *SnowflakeDialect) RenderSearchHeadline(ctx Context, sel *qcode.Select, f qcode.Field)

func (*SnowflakeDialect) RenderSearchRank added in v3.14.0

func (d *SnowflakeDialect) RenderSearchRank(ctx Context, sel *qcode.Select, f qcode.Field)

func (*SnowflakeDialect) RenderSetup added in v3.14.0

func (d *SnowflakeDialect) RenderSetup(ctx Context)

func (*SnowflakeDialect) RenderTeardown added in v3.14.0

func (d *SnowflakeDialect) RenderTeardown(ctx Context)

func (*SnowflakeDialect) RenderTryCast added in v3.14.0

func (d *SnowflakeDialect) RenderTryCast(ctx Context, val func(), typ string)

func (*SnowflakeDialect) RenderTsQuery added in v3.14.0

func (d *SnowflakeDialect) RenderTsQuery(ctx Context, ti sdata.DBTable, ex *qcode.Exp)

func (*SnowflakeDialect) RenderValPrefix added in v3.14.0

func (d *SnowflakeDialect) RenderValPrefix(ctx Context, ex *qcode.Exp) bool

func (*SnowflakeDialect) RenderValVar added in v3.14.0

func (d *SnowflakeDialect) RenderValVar(ctx Context, ex *qcode.Exp, val string) bool

func (*SnowflakeDialect) RenderVar added in v3.14.0

func (d *SnowflakeDialect) RenderVar(ctx Context, name string)

func (*SnowflakeDialect) RenderVarDeclaration added in v3.14.0

func (d *SnowflakeDialect) RenderVarDeclaration(ctx Context, name, typeName string)

func (*SnowflakeDialect) RequiresBooleanAsInt added in v3.14.0

func (d *SnowflakeDialect) RequiresBooleanAsInt() bool

func (*SnowflakeDialect) RequiresJSONAsString added in v3.14.0

func (d *SnowflakeDialect) RequiresJSONAsString() bool

func (*SnowflakeDialect) RequiresLowercaseIdentifiers added in v3.14.0

func (d *SnowflakeDialect) RequiresLowercaseIdentifiers() bool

func (*SnowflakeDialect) RequiresNullOnEmptySelect added in v3.14.0

func (d *SnowflakeDialect) RequiresNullOnEmptySelect() bool

func (*SnowflakeDialect) SplitQuery added in v3.14.0

func (d *SnowflakeDialect) SplitQuery(query string) (parts []string)

func (*SnowflakeDialect) SupportsLateral added in v3.14.0

func (d *SnowflakeDialect) SupportsLateral() bool

func (*SnowflakeDialect) SupportsLinearExecution added in v3.14.0

func (d *SnowflakeDialect) SupportsLinearExecution() bool

func (*SnowflakeDialect) SupportsReturning added in v3.14.0

func (d *SnowflakeDialect) SupportsReturning() bool

func (*SnowflakeDialect) SupportsSubscriptionBatching added in v3.14.0

func (d *SnowflakeDialect) SupportsSubscriptionBatching() bool

func (*SnowflakeDialect) SupportsWritableCTE added in v3.14.0

func (d *SnowflakeDialect) SupportsWritableCTE() bool

func (*SnowflakeDialect) UseNamedParams added in v3.14.0

func (d *SnowflakeDialect) UseNamedParams() bool

Jump to

Keyboard shortcuts

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