Add Spanner dialect to pkg/storage/unified/sql/sqltemplate package. (#102121)

This commit is contained in:
Peter Štibraný
2025-03-13 16:38:05 +01:00
committed by GitHub
parent 20b91cfa04
commit 6f12712ad6
2 changed files with 34 additions and 0 deletions
@@ -24,6 +24,8 @@ func DialectForDriver(driverName string) Dialect {
return PostgreSQL
case "sqlite", "sqlite3":
return SQLite
case "spanner":
return Spanner
default:
return nil
}
@@ -0,0 +1,32 @@
package sqltemplate
// Spanner is an implementation of Dialect for the Google Spanner database.
var Spanner = spanner{}
var _ Dialect = Spanner
type spanner struct{}
func (s spanner) DialectName() string {
return "spanner"
}
func (s spanner) Ident(a string) (string, error) {
return backtickIdent{}.Ident(a)
}
func (s spanner) ArgPlaceholder(argNum int) string {
return argFmtSQL92.ArgPlaceholder(argNum)
}
func (s spanner) SelectFor(a ...string) (string, error) {
return rowLockingClauseSpanner.SelectFor(a...)
}
func (spanner) CurrentEpoch() string {
return "UNIX_MICROS(CURRENT_TIMESTAMP())"
}
var rowLockingClauseSpanner = rowLockingClauseMap{
SelectForUpdate: SelectForUpdate,
}