tabledefinition

package
v0.2.4 Latest Latest
Warning

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

Go to latest
Published: Apr 23, 2022 License: MIT Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var MockDataTypeMapping = []dataTypeLink{
	{SourceDataType: "date", TargetDataType: "timestamp_tz", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeDateTime},
	{SourceDataType: "number", TargetDataType: "number", SanitiserFunc: sanitisePrecisionScale, DeltaDataType: DeltaTypeNumber},
}
View Source
var NetezzaToSnowflakeDataTypeMapping = []dataTypeLink{

	{SourceDataType: "bigint", TargetDataType: "bigint", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "boolean", TargetDataType: "boolean", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeUnclassified},
	{SourceDataType: "bpchar", TargetDataType: "varchar", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeText},
	{SourceDataType: "byteint", TargetDataType: "integer", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "char", TargetDataType: "varchar", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeText},
	{SourceDataType: "character", TargetDataType: "varchar", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeText},
	{SourceDataType: "character varying", TargetDataType: "varchar", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeText},
	{SourceDataType: "date", TargetDataType: "varchar", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeText},

	{SourceDataType: "decimal", TargetDataType: "string", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "double", TargetDataType: "float", SanitiserFunc: sanitiseDouble, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "double precision", TargetDataType: "float", SanitiserFunc: sanitiseDouble, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "float", TargetDataType: "float", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "integer", TargetDataType: "integer", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "interval", TargetDataType: "varchar", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeText},
	{SourceDataType: "interval day", TargetDataType: "varchar", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeText},
	{SourceDataType: "interval day to hour", TargetDataType: "varchar", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeText},
	{SourceDataType: "interval day to minute", TargetDataType: "varchar", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeText},
	{SourceDataType: "interval day to second", TargetDataType: "varchar", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeText},
	{SourceDataType: "interval hour", TargetDataType: "varchar", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeText},
	{SourceDataType: "interval hour to minute", TargetDataType: "varchar", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeText},
	{SourceDataType: "interval hour to second", TargetDataType: "varchar", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeText},
	{SourceDataType: "interval minute", TargetDataType: "varchar", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeText},
	{SourceDataType: "interval minute to second", TargetDataType: "varchar", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeText},
	{SourceDataType: "interval month", TargetDataType: "varchar", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeText},
	{SourceDataType: "interval second", TargetDataType: "varchar", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeText},
	{SourceDataType: "interval year", TargetDataType: "varchar", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeText},
	{SourceDataType: "interval year to month", TargetDataType: "varchar", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeText},
	{SourceDataType: "json", TargetDataType: "varchar", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeText},
	{SourceDataType: "jsonb", TargetDataType: "varchar", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeText},
	{SourceDataType: "jsonpath", TargetDataType: "varchar", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeText},
	{SourceDataType: "nchar", TargetDataType: "varchar", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeText},
	{SourceDataType: "national character", TargetDataType: "varchar", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeText},
	{SourceDataType: "national character varying", TargetDataType: "varchar", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeText},

	{SourceDataType: "numeric", TargetDataType: "string", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "nvarchar", TargetDataType: "varchar", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeText},
	{SourceDataType: "real", TargetDataType: "real", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "smallint", TargetDataType: "smallint", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "st_geometry", TargetDataType: "varchar", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeUnclassified},
	{SourceDataType: "time", TargetDataType: "time", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeUnclassified},
	{SourceDataType: "timestamp", TargetDataType: "timestamp", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeUnclassified},
	{SourceDataType: "timetz", TargetDataType: "time", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeUnclassified},
	{SourceDataType: "time with time zone", TargetDataType: "time", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeUnclassified},
	{SourceDataType: "varbinary", TargetDataType: "binary", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeUnclassified},
	{SourceDataType: "binary varying", TargetDataType: "binary", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeUnclassified},
	{SourceDataType: "varchar", TargetDataType: "varchar", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeText},
}
View Source
var OracleToSnowflakeDataTypeMapping = []dataTypeLink{
	{SourceDataType: "date", TargetDataType: "timestamp_tz", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeDateTime},
	{SourceDataType: "timestamp(3)", TargetDataType: "timestamp_tz(3)", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeDateTime},
	{SourceDataType: "timestamp(6)", TargetDataType: "timestamp_tz(6)", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeDateTime},
	{SourceDataType: "timestamp(9)", TargetDataType: "timestamp_tz(9)", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeDateTime},
	{SourceDataType: "varchar2", TargetDataType: "varchar", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeText},
	{SourceDataType: "number", TargetDataType: "number", SanitiserFunc: sanitisePrecisionScale, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "char", TargetDataType: "varchar", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeText},
}

OracleToSnowflakeDataTypeMapping contains a mapping of Oracle to Snowflake data types. TODO: handle different cases Oracle DATE/TIMESTAMP to Snowflake time zone mapping. if we use "datetime" then Snowflake stores data without a time zone component, where it reports it as UTC! if we use "timestamp_tz" then data is stored with an offset but without the actual time zone so date arithmetic gets confusing e.g. if you add 6 months and end in up daylight savings time then that's not reflected correctly. we can use "timestamp_ltz" but Golang seems to report values as 1h less than they should be despite the UI showing correctly.

View Source
var SnowflakeToSnowflakeDataTypeMapping = []dataTypeLink{
	{SourceDataType: "array", TargetDataType: "array", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeUnclassified},
	{SourceDataType: "bigint", TargetDataType: "bigint", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "binary", TargetDataType: "binary", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeUnclassified},
	{SourceDataType: "boolean", TargetDataType: "boolean", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeUnclassified},
	{SourceDataType: "char", TargetDataType: "char", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeText},
	{SourceDataType: "character", TargetDataType: "character", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeText},
	{SourceDataType: "date", TargetDataType: "date", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeDateTime},
	{SourceDataType: "datetime", TargetDataType: "datetime", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeDateTime},
	{SourceDataType: "decimal", TargetDataType: "decimal", SanitiserFunc: sanitisePrecisionScale, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "double", TargetDataType: "double", SanitiserFunc: sanitiseDouble, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "double precision", TargetDataType: "double precision", SanitiserFunc: sanitiseDouble, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "float", TargetDataType: "float", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "float4", TargetDataType: "float4", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "float8", TargetDataType: "float8", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "geography", TargetDataType: "geography", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeUnclassified},
	{SourceDataType: "int", TargetDataType: "int", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "integer", TargetDataType: "integer", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "number", TargetDataType: "number", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "numeric", TargetDataType: "numeric", SanitiserFunc: sanitisePrecisionScale, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "object", TargetDataType: "object", SanitiserFunc: sanitisePrecisionScale, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "real", TargetDataType: "real", SanitiserFunc: sanitiseReal, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "smallint", TargetDataType: "smallint", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "string", TargetDataType: "string", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeText},
	{SourceDataType: "text", TargetDataType: "text", SanitiserFunc: sanitisePrecisionScale, DeltaDataType: DeltaTypeText},
	{SourceDataType: "time", TargetDataType: "time", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeDateTime},
	{SourceDataType: "timestamp", TargetDataType: "timestamp", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeDateTime},
	{SourceDataType: "timestamp_ltz", TargetDataType: "timestamp_ltz", SanitiserFunc: sanitiseTinyInt, DeltaDataType: DeltaTypeDateTime},
	{SourceDataType: "timestamp_ntz", TargetDataType: "timestamp_ntz", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeDateTime},
	{SourceDataType: "timestamp_tz", TargetDataType: "timestamp_tz", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeDateTime},
	{SourceDataType: "varbinary", TargetDataType: "varbinary", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeUnclassified},
	{SourceDataType: "varchar", TargetDataType: "varchar", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeText},
	{SourceDataType: "variant", TargetDataType: "variant", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeUnclassified},
}
View Source
var SqlServerToSnowflakeDataTypeMapping = []dataTypeLink{

	{SourceDataType: "bigint", TargetDataType: "bigint", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "boolean", TargetDataType: "boolean", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeUnclassified},
	{SourceDataType: "bit", TargetDataType: "boolean", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeUnclassified},
	{SourceDataType: "char", TargetDataType: "varchar", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeText},
	{SourceDataType: "date", TargetDataType: "timestamp_tz", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeDateTime},
	{SourceDataType: "datetime", TargetDataType: "datetime", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeDateTime},
	{SourceDataType: "datetime2", TargetDataType: "datetime", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeDateTime},
	{SourceDataType: "datetimeoffset", TargetDataType: "timestamp_tz", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeDateTime},
	{SourceDataType: "decimal", TargetDataType: "number", SanitiserFunc: sanitisePrecisionScale, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "double precision", TargetDataType: "float", SanitiserFunc: sanitiseDouble, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "float", TargetDataType: "float", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "guid", TargetDataType: "binary", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeUnclassified},
	{SourceDataType: "int", TargetDataType: "integer", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "integer", TargetDataType: "integer", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "image", TargetDataType: "binary", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeUnclassified},
	{SourceDataType: "money", TargetDataType: "number", SanitiserFunc: sanitisePrecisionScale, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "numeric", TargetDataType: "number", SanitiserFunc: sanitisePrecisionScale, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "ntext", TargetDataType: "varchar", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeText},
	{SourceDataType: "nchar", TargetDataType: "varchar", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeText},
	{SourceDataType: "nvarchar", TargetDataType: "varchar", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeText},
	{SourceDataType: "real", TargetDataType: "float", SanitiserFunc: sanitiseReal, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "smallint", TargetDataType: "smallint", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "smalldatetime", TargetDataType: "datetime", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeDateTime},
	{SourceDataType: "smallmoney", TargetDataType: "number", SanitiserFunc: sanitisePrecisionScale, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "time", TargetDataType: "time", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeUnclassified},
	{SourceDataType: "text", TargetDataType: "varchar", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeText},
	{SourceDataType: "tinyint", TargetDataType: "number", SanitiserFunc: sanitiseTinyInt, DeltaDataType: DeltaTypeNumber},
	{SourceDataType: "utcdatetime", TargetDataType: "datetime", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeDateTime},
	{SourceDataType: "utctime", TargetDataType: "time", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeDateTime},
	{SourceDataType: "uniqueidentifier", TargetDataType: "binary", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeUnclassified},
	{SourceDataType: "varbinary", TargetDataType: "binary", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeUnclassified},
	{SourceDataType: "varchar", TargetDataType: "varchar", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeText},
	{SourceDataType: "varwchar", TargetDataType: "varchar", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeText},
	{SourceDataType: "wchar", TargetDataType: "varchar", SanitiserFunc: sanitiseDataLen, DeltaDataType: DeltaTypeText},
	{SourceDataType: "xml", TargetDataType: "varchar", SanitiserFunc: sanitiseBlank, DeltaDataType: DeltaTypeText},
}

SqlServerToSnowflakeDataTypeMapping contains a mapping of SQL Server to Snowflake data types.

Functions

func ColumnIsNumberOrDate

func ColumnIsNumberOrDate(log logger.Logger, fnGetColumns GetColumnsFuncT, mapper Mapper, schemaTable *rdbms.SchemaTable, columnName string) (retval int, err error)

ColumnIsNumberOrDate returns: 0 if the column is a NUMBER field. 1 if the column is a DATE or TIMESTAMP based field.

func ConvertTableDefinitionToSnowflake

func ConvertTableDefinitionToSnowflake(log logger.Logger, tabCols TableColumns, snowSchemaTable rdbms.SchemaTable, mapper Mapper) (snowflakeTableDefinition string, err error)

ConvertTableDefinitionToSnowflake converts each rec in TableColumns to snowflake equivalent and returns a string that is the snowflake CREATE TABLE statement. KNOWN ISSUES: 1) not distinguishing between Oracle BYTE/CHAR semantics.

func GetTableColumns

func GetTableColumns(log logger.Logger, fnGetColumns GetColumnsFuncT, schemaTable *rdbms.SchemaTable) ([]string, error)

GetTableColumns fetches the set of columns that comprise a given [SCHEMA.]TABLE and returns them in a []string. Each column is quoted.

func TabDefinitionToChan

func TabDefinitionToChan(
	log logger.Logger,
	name string,
	conn *shared.ConnectionDetails,
	tabDefnConf mapTabDefinitionConfigT,
	schemaTable string,
	stepWatcher *stats.StepWatcher,
	waiter components.ComponentWaiter,
) (chan stream.Record, shared.Connector)

TabDefinitionToChan will fetch column names and data types onto the returned channel of stream.Record where schemaTable is of the form [OWNER.]TABLE_NAME by connecting to the given database conn. Parameter 'name' is just the name of this component for logging purposes.

Types

type DeltaType

type DeltaType uint32

DeltaType is used to flag each column as being suitable for DATE or NUMBER based arithmetic. This helps determine the type of transform required to make cp delta actions work.

const (
	DeltaTypeUnclassified DeltaType = iota + 1
	DeltaTypeDateTime
	DeltaTypeNumber
	DeltaTypeText
)

type GetColumnsFuncT

type GetColumnsFuncT func(log logger.Logger, schemaTable string) (chan stream.Record, shared.Connector)

func GetColumnsFunc

func GetColumnsFunc(conn *shared.ConnectionDetails) GetColumnsFuncT

type Mapper

type Mapper interface {
	Map(inputDataType string) (output string)
	Sanitise(inputDataType string, dataLen, precision, scale int) (output string)
	GetDeltaDataType(inputDataType string) DeltaType
}

Mapper Map takes and input and returns it's equivalent output.

func MustGetMapper

func MustGetMapper(conn *shared.ConnectionDetails) Mapper

MustGetMapper gets the Mapper from tabDefinitionConfig using the supplied conn.Type as the key.

func NewMockDataTypeMapper

func NewMockDataTypeMapper() Mapper

NewMockDataTypeMapper returns an instance of dataTypeMap{}

func NewNetezzaToSnowflakeDataTypeMapper

func NewNetezzaToSnowflakeDataTypeMapper() Mapper

NewNetezzaToSnowflakeDataTypeMapper returns an instance of dataTypeMap{} which implements interface Mapper.

func NewOracleToSnowflakeDataTypeMapper

func NewOracleToSnowflakeDataTypeMapper() Mapper

NewOracleToSnowflakeDataTypeMapper returns an instance of dataTypeMap{} which implements interface Mapper.

func NewSnowflakeDataTypeMapper

func NewSnowflakeDataTypeMapper() Mapper

NewSnowflakeDataTypeMapper returns an instance of dataTypeMap{} which implements interface Mapper. This is only really used to label the DeltaDataType of Snowflake columns.

func NewSqlServerToSnowflakeDataTypeMapper

func NewSqlServerToSnowflakeDataTypeMapper() Mapper

NewSqlServerToSnowflakeDataTypeMapper returns an instance of dataTypeMap{} which implements interface Mapper.

type TableColumn

type TableColumn struct {
	ColName       string
	DataType      string
	DataLen       int
	DataPrecision int
	DataScale     int
	Nullable      bool
	ColID         int
}

TableColumn defines a single table column.

type TableColumns

type TableColumns struct {
	Owner     string
	TableName string
	Columns   []TableColumn
}

TableColumns is a struct representing columns that you would find in one row of Oracle ALL_TAB_COLUMNS view or equivalent other RDBMS type.

func GetTableDefinition

func GetTableDefinition(log logger.Logger, fnGetColumns GetColumnsFuncT, srcSchemaTable *rdbms.SchemaTable) (tabCols TableColumns, err error)

GetTableDefinition connects to the supplied database and fetches the Snowflake table definition for the supplied [<schema>.]<table> combination. Schema is optional; table is not.

Jump to

Keyboard shortcuts

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