Documentation
¶
Index ¶
- Constants
- Variables
- func Open(cfg Config) (*sql.DB, error)
- func SetAPIMode(ctx context.Context) context.Context
- func SetCatalog(ctx context.Context, catalog string) context.Context
- func SetDLMode(ctx context.Context) context.Context
- func SetGzipDLMode(ctx context.Context) context.Context
- func SetResultMode(ctx context.Context, mode ResultMode) context.Context
- func SetTimeout(ctx context.Context, timeout uint) context.Context
- type Config
- type Driver
- type ResultMode
Constants ¶
const ( // TimestampLayout is the Go time layout string for an Athena `timestamp`. TimestampLayout = "2006-01-02 15:04:05.999" TimestampWithTimeZoneLayout = "2006-01-02 15:04:05.999 MST" DateLayout = "2006-01-02" )
const (
CATALOG_AWS_DATA_CATALOG string = "AwsDataCatalog"
)
Variables ¶
var ( ErrConfigRequired = errors.New("config is required") ErrDatabaseRequired = errors.New("database is required") ErrSessionRequired = errors.New("session is required") ErrInvalidResultMode = errors.New("invalid result mode") )
Error types
var CatalogContextKey = string(catalogKey)
CatalogContextKey is deprecated, use catalogKey instead
var ResultModeContextKey = string(resultModeKey)
ResultModeContextKey is deprecated, use resultModeKey instead
var TimeoutContextKey = string(timeoutKey)
TimeoutContextKey is deprecated, use timeoutKey instead
Functions ¶
func Open ¶
Open is a more robust version of `db.Open`, as it accepts a raw aws.Config. This is useful if you have a complex AWS session since the driver doesn't currently attempt to serialize all options into a string.
func SetAPIMode ¶
SetAPIMode sets APIMode to ResultMode in context
func SetCatalog ¶
SetCatalog sets catalog in context
func SetGzipDLMode ¶
SetGzipDLMode sets GzipDLMode to ResultMode in context
func SetResultMode ¶
func SetResultMode(ctx context.Context, mode ResultMode) context.Context
SetResultMode sets the ResultMode in context
Types ¶
type Config ¶
type Config struct { Config aws.Config Database string OutputLocation string WorkGroup string PollFrequency time.Duration ResultMode ResultMode Timeout uint Catalog string }
Config is the input to Open().
type Driver ¶
type Driver struct {
// contains filtered or unexported fields
}
Driver is a sql.Driver. It's intended for db/sql.Open().
func NewDriver ¶
NewDriver allows you to register your own driver with `sql.Register`. It's useful for more complex use cases. Read more in PR #3. https://github.com/segmentio/go-athena/pull/3
Generally, sql.Open() or athena.Open() should suffice.
func (*Driver) Open ¶
Open should be used via `db/sql.Open("athena", "<params>")`. The following parameters are supported in URI query format (k=v&k2=v2&...)
- `db` (required) This is the Athena database name. In the UI, this defaults to "default", but the driver requires it regardless.
- `output_location` (required) This is the S3 location Athena will dump query results in the format "s3://bucket/and/so/forth". In the AWS UI, this defaults to "s3://aws-athena-query-results-<ACCOUNTID>-<REGION>", but the driver requires it.
- `poll_frequency` (optional) Athena's API requires polling to retrieve query results. This is the frequency at which the driver will poll for results. It should be a time/Duration.String(). A completely arbitrary default of "5s" was chosen.
- `region` (optional) Override AWS region. Useful if it is not set with environment variable.
- `workgroup` (optional) Athena's workgroup. This defaults to "primary".
Credentials must be accessible via the SDK's Default Credential Provider Chain. For more advanced AWS credentials/session/config management, please supply a custom AWS session directly via `athena.Open()`.
type ResultMode ¶
type ResultMode int
ResultMode Results mode
const ( // ResultModeAPI api access Mode ResultModeAPI ResultMode = 0 // ResultModeDL download results Mode ResultModeDL ResultMode = 1 // ResultModeGzipDL ctas query and download gzip file Mode ResultModeGzipDL ResultMode = 2 )