Documentation ¶
Index ¶
- Constants
- Variables
- func AddRootCertToConfig(config *pgconn.Config, certLocation string) error
- func AddSearchPathPrefix(searchPathPrefix []string, searchPath []string) []string
- func BuildSearchPathResult(searchPathString string) ([]string, error)
- func CacheClear(ctx context.Context, connection *pgx.Conn) error
- func CreateIntrospectionTables(ctx context.Context, workspaceResources *modconfig.ResourceMaps, ...) error
- func ExecuteQuery(ctx context.Context, client Client, queryString string, args ...any) (*queryresult.ResultStreamer, error)
- func GetCommentsQueryForPlugin(connectionName string, p map[string]*proto.TableSchema) string
- func GetDeleteConnectionQuery(name string) string
- func GetUpdateConnectionQuery(localSchema, remoteSchema string) string
- func GetUserSearchPath(ctx context.Context, conn *pgx.Conn) ([]string, error)
- func IsSchemaNameValid(name string) (bool, string)
- func LoadForeignSchemaNames(ctx context.Context, conn *pgx.Conn) ([]string, error)
- func MaxDbConnections() int
- func PgEscapeName(name string) string
- func PgEscapeSearchPath(searchPath []string) []string
- func PgEscapeString(str string) string
- func SetCacheEnabled(ctx context.Context, enabled bool, connection *pgx.Conn) error
- func SetCacheTtl(ctx context.Context, duration time.Duration, connection *pgx.Conn) error
- func WaitForConnection(ctx context.Context, connStr string, options ...WaitOption) (conn *pgx.Conn, err error)
- func WaitForConnectionPing(ctx context.Context, connection *pgx.Conn, waitOptions ...WaitOption) (err error)
- func WaitForPool(ctx context.Context, db *pgxpool.Pool, waitOptions ...WaitOption) (err error)
- func WaitForRecovery(ctx context.Context, connection *pgx.Conn, waitOptions ...WaitOption) (err error)
- type AcquireSessionResult
- type Client
- type ColumnSchema
- type ColumnTag
- type DatabaseSession
- type InitResult
- type QueryWithArgs
- type SQLFunction
- type SchemaMetadata
- type TableSchema
- type WaitOption
Constants ¶
const TagColumn = "column"
TagColumn is the tag used to specify the column name and type in the introspection tables
Variables ¶
var ErrServiceInRecoveryMode = errors.New("service is in recovery mode")
var Functions = []SQLFunction{ { Name: "glob", Params: map[string]string{"input_glob": "text"}, Returns: "text", Language: "plpgsql", Body: ` declare output_pattern text; begin output_pattern = replace(input_glob, '*', '%'); output_pattern = replace(output_pattern, '?', '_'); return output_pattern; end; `, }, }
Functions is a list of SQLFunction objects that are installed in the db 'internal' schema startup
Functions ¶
func AddRootCertToConfig ¶ added in v0.17.0
func AddSearchPathPrefix ¶ added in v0.20.0
func BuildSearchPathResult ¶ added in v0.20.0
func CacheClear ¶ added in v0.20.0
CacheClear resets the max time on the cache anything below this is not accepted
func CreateIntrospectionTables ¶
func CreateIntrospectionTables(ctx context.Context, workspaceResources *modconfig.ResourceMaps, conn *pgx.Conn) error
func ExecuteQuery ¶
func ExecuteQuery(ctx context.Context, client Client, queryString string, args ...any) (*queryresult.ResultStreamer, error)
ExecuteQuery executes a single query. If shutdownAfterCompletion is true, shutdown the client after completion
func GetCommentsQueryForPlugin ¶ added in v0.20.0
func GetCommentsQueryForPlugin(connectionName string, p map[string]*proto.TableSchema) string
func GetDeleteConnectionQuery ¶ added in v0.20.0
func GetUpdateConnectionQuery ¶ added in v0.20.0
func GetUserSearchPath ¶ added in v0.20.0
func IsSchemaNameValid ¶ added in v0.20.0
IsSchemaNameValid verifies that the given string is a valid pgsql schema name
func LoadForeignSchemaNames ¶ added in v0.20.0
func MaxDbConnections ¶ added in v0.20.0
func MaxDbConnections() int
func PgEscapeName ¶
PgEscapeName escapes strings which will be usaed for Podsdtgres object identifiers (table names, column names, schema names)
func PgEscapeSearchPath ¶
PgEscapeSearchPath applies postgres escaping to search path and remove whitespace
func PgEscapeString ¶
PgEscapeString escapes strings which are to be inserted use a custom escape tag to avoid chance of clash with the escaped text https://medium.com/@lnishada/postgres-dollar-quoting-6d23e4f186ec
func SetCacheEnabled ¶ added in v0.20.0
SetCacheEnabled enables/disables the cache
func SetCacheTtl ¶ added in v0.20.0
SetCacheTtl set the cache ttl on the client
func WaitForConnection ¶
func WaitForConnection(ctx context.Context, connStr string, options ...WaitOption) (conn *pgx.Conn, err error)
func WaitForConnectionPing ¶ added in v0.19.0
func WaitForConnectionPing(ctx context.Context, connection *pgx.Conn, waitOptions ...WaitOption) (err error)
WaitForConnectionPing PINGs the DB - retrying after a backoff of constants.ServicePingInterval - but only for constants.DBConnectionTimeout returns the error from the database if the dbClient does not respond successfully after a timeout
func WaitForPool ¶ added in v0.17.0
WaitForPool waits for the db to start accepting connections and returns true returns false if the dbClient does not start within a stipulated time,
func WaitForRecovery ¶ added in v0.19.0
func WaitForRecovery(ctx context.Context, connection *pgx.Conn, waitOptions ...WaitOption) (err error)
WaitForRecovery returns an error (ErrRecoveryMode) if the service stays in recovery mode for more than constants.DBRecoveryWaitTimeout
Types ¶
type AcquireSessionResult ¶
type AcquireSessionResult struct { Session *DatabaseSession modconfig.ErrorAndWarnings }
type Client ¶
type Client interface { Close(ctx context.Context) error LoadUserSearchPath(ctx context.Context) error SetRequiredSessionSearchPath(context.Context) error GetRequiredSessionSearchPath() []string GetCustomSearchPath() []string // acquire a database connection - must be closed AcquireConnection(ctx context.Context) (*pgxpool.Conn, error) // acquire a query execution session (which search pathand cache options set) - must be closed AcquireSession(context.Context) *AcquireSessionResult ExecuteSync(context.Context, string, ...any) (*queryresult.SyncQueryResult, error) Execute(context.Context, string, ...any) (*queryresult.Result, error) ExecuteSyncInSession(context.Context, *DatabaseSession, string, ...any) (*queryresult.SyncQueryResult, error) ExecuteInSession(context.Context, *DatabaseSession, func(), string, ...any) (*queryresult.Result, error) RefreshSessions(context.Context) *AcquireSessionResult GetSchemaFromDB(context.Context) (*SchemaMetadata, error) }
type ColumnSchema ¶ added in v0.20.0
type ColumnSchema struct { ID string Name string NotNull bool Type string Default string Description string }
ColumnSchema contains the details of a single column in a table
type DatabaseSession ¶
type DatabaseSession struct { BackendPid uint32 `json:"backend_pid"` UsedCount int `json:"used"` LastUsed time.Time `json:"last_used"` SearchPath []string `json:"-"` Initialized bool `json:"-"` // this gets rewritten, since the database/sql gives back a new instance everytime Connection *pgxpool.Conn `json:"-"` // the id of the last scan metadata retrieved ScanMetadataMaxId int64 `json:"-"` }
DatabaseSession wraps over the raw database/sql.Conn and also allows for retaining useful instrumentation
func NewDBSession ¶
func NewDBSession(backendPid uint32) *DatabaseSession
func (*DatabaseSession) Close ¶
func (s *DatabaseSession) Close(waitForCleanup bool)
func (*DatabaseSession) UpdateUsage ¶
func (s *DatabaseSession) UpdateUsage()
UpdateUsage updates the UsedCount of the DatabaseSession and also the lastUsed time
type InitResult ¶
type InitResult struct { Error error Warnings []string Messages []string // allow overriding of the display functions DisplayMessage func(ctx context.Context, m string) DisplayWarning func(ctx context.Context, w string) }
func (*InitResult) AddMessage ¶
func (r *InitResult) AddMessage(message string)
func (*InitResult) AddWarnings ¶
func (r *InitResult) AddWarnings(warnings ...string)
func (*InitResult) DisplayMessages ¶
func (r *InitResult) DisplayMessages()
func (*InitResult) HasMessages ¶
func (r *InitResult) HasMessages() bool
type QueryWithArgs ¶ added in v0.20.0
type SQLFunction ¶ added in v0.20.0
type SQLFunction struct { Name string Params map[string]string Returns string Body string Language string }
SQLFunction is a struct for an sqlFunc
type SchemaMetadata ¶ added in v0.20.0
type SchemaMetadata struct { // map {schemaname, {map {tablename -> tableschema}} Schemas map[string]map[string]TableSchema // the name of the temporary schema TemporarySchemaName string }
SchemaMetadata is a struct to represent the schema of the database
func BuildSchemaMetadata ¶
func BuildSchemaMetadata(rows pgx.Rows) (_ *SchemaMetadata, err error)
func NewSchemaMetadata ¶ added in v0.20.0
func NewSchemaMetadata() *SchemaMetadata
func (*SchemaMetadata) GetSchemas ¶ added in v0.20.0
func (m *SchemaMetadata) GetSchemas() []string
GetSchemas returns all foreign schema names
func (*SchemaMetadata) GetTablesInSchema ¶ added in v0.20.0
func (m *SchemaMetadata) GetTablesInSchema(schemaName string) map[string]struct{}
GetTablesInSchema returns a lookup of all foreign tables in a given foreign schema
type TableSchema ¶ added in v0.20.0
type TableSchema struct { // map columnName -> columnSchema Columns map[string]ColumnSchema Name string FullName string Schema string Description string }
TableSchema contains the details of a single table in the schema
type WaitOption ¶ added in v0.19.0
type WaitOption func(w *waitConfig)
func WithRetryInterval ¶ added in v0.19.0
func WithRetryInterval(d time.Duration) WaitOption
func WithTimeout ¶ added in v0.19.0
func WithTimeout(d time.Duration) WaitOption
Source Files ¶
- acquire_session_result.go
- cache_control.go
- client.go
- column_tag.go
- db_session.go
- execute.go
- functions.go
- init_result.go
- introspection_tables.go
- max_connections.go
- postgres.go
- query_with_args.go
- schema.go
- schema_metadata.go
- search_path.go
- sql_connections.go
- sql_function.go
- tls_config.go
- wait_connection.go