in go/adbc/driver/snowflake/statement.go [128:225]
func (st *statement) SetOption(key string, val string) error {
switch key {
case adbc.OptionKeyIngestTargetTable:
st.query = ""
st.targetTable = val
case adbc.OptionKeyIngestMode:
switch val {
case adbc.OptionValueIngestModeAppend:
fallthrough
case adbc.OptionValueIngestModeCreate:
fallthrough
case adbc.OptionValueIngestModeReplace:
fallthrough
case adbc.OptionValueIngestModeCreateAppend:
st.ingestMode = val
default:
return adbc.Error{
Msg: fmt.Sprintf("[Snowflake] invalid statement option %s=%s", key, val),
Code: adbc.StatusInvalidArgument,
}
}
case OptionStatementQueueSize:
sz, err := strconv.Atoi(val)
if err != nil {
return adbc.Error{
Msg: fmt.Sprintf("[Snowflake] could not parse '%s' as int for option '%s'", val, key),
Code: adbc.StatusInvalidArgument,
}
}
return st.SetOptionInt(key, int64(sz))
case OptionStatementPrefetchConcurrency:
concurrency, err := strconv.Atoi(val)
if err != nil {
return adbc.Error{
Msg: fmt.Sprintf("[Snowflake] could not parse '%s' as int for option '%s'", val, key),
Code: adbc.StatusInvalidArgument,
}
}
return st.SetOptionInt(key, int64(concurrency))
case OptionStatementIngestWriterConcurrency:
concurrency, err := strconv.Atoi(val)
if err != nil {
return adbc.Error{
Msg: fmt.Sprintf("[Snowflake] could not parse '%s' as int for option '%s'", val, key),
Code: adbc.StatusInvalidArgument,
}
}
return st.SetOptionInt(key, int64(concurrency))
case OptionStatementIngestUploadConcurrency:
concurrency, err := strconv.Atoi(val)
if err != nil {
return adbc.Error{
Msg: fmt.Sprintf("[Snowflake] could not parse '%s' as int for option '%s'", val, key),
Code: adbc.StatusInvalidArgument,
}
}
return st.SetOptionInt(key, int64(concurrency))
case OptionStatementIngestCopyConcurrency:
concurrency, err := strconv.Atoi(val)
if err != nil {
return adbc.Error{
Msg: fmt.Sprintf("[Snowflake] could not parse '%s' as int for option '%s'", val, key),
Code: adbc.StatusInvalidArgument,
}
}
return st.SetOptionInt(key, int64(concurrency))
case OptionStatementIngestTargetFileSize:
size, err := strconv.Atoi(val)
if err != nil {
return adbc.Error{
Msg: fmt.Sprintf("[Snowflake] could not parse '%s' as int for option '%s'", val, key),
Code: adbc.StatusInvalidArgument,
}
}
return st.SetOptionInt(key, int64(size))
case OptionStatementQueryTag:
st.queryTag = val
return nil
case OptionUseHighPrecision:
switch val {
case adbc.OptionValueEnabled:
st.useHighPrecision = true
case adbc.OptionValueDisabled:
st.useHighPrecision = false
default:
return adbc.Error{
Msg: fmt.Sprintf("[Snowflake] invalid statement option %s=%s", key, val),
Code: adbc.StatusInvalidArgument,
}
}
default:
return adbc.Error{
Msg: fmt.Sprintf("[Snowflake] Unknown statement option '%s'", key),
Code: adbc.StatusNotImplemented,
}
}
return nil
}