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 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 CatalogContextKey string = contextPrefix + catalogContextKey
CatalogContextKey context key of setting catalog
var ResultModeContextKey string = contextPrefix + resultModeContextKey
ResultModeContextKey context key of setting result mode
var TimeoutContextKey string = contextPrefix + timeoutContextKey
TimeoutContextKey context key of setting timeout
Functions ¶
func Open ¶
Open is a more robust version of `db.Open`, as it accepts a raw aws.Session. 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 set APIMode to ResultMode from context
func SetCatalog ¶
SetCatalog set catalog from context
func SetGzipDLMode ¶
SetGzipDLMode set CTASMode to ResultMode from context
Types ¶
type Config ¶
type Config struct { Session *session.Session 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 )