in go/adbc/driver/flightsql/flightsql_statement.go [142:208]
func (s *statement) SetOption(key string, val string) error {
if strings.HasPrefix(key, OptionRPCCallHeaderPrefix) {
name := strings.TrimPrefix(key, OptionRPCCallHeaderPrefix)
if val == "" {
s.hdrs.Delete(name)
} else {
s.hdrs.Append(name, val)
}
return nil
}
switch key {
case OptionTimeoutFetch:
timeout, err := getTimeoutOptionValue(val)
if err != nil {
return adbc.Error{
Msg: fmt.Sprintf("invalid timeout option value %s = %s : %s",
OptionTimeoutFetch, val, err.Error()),
Code: adbc.StatusInvalidArgument,
}
}
s.timeouts.fetchTimeout = timeout
case OptionTimeoutQuery:
timeout, err := getTimeoutOptionValue(val)
if err != nil {
return adbc.Error{
Msg: fmt.Sprintf("invalid timeout option value %s = %s : %s",
OptionTimeoutFetch, val, err.Error()),
Code: adbc.StatusInvalidArgument,
}
}
s.timeouts.queryTimeout = timeout
case OptionTimeoutUpdate:
timeout, err := getTimeoutOptionValue(val)
if err != nil {
return adbc.Error{
Msg: fmt.Sprintf("invalid timeout option value %s = %s : %s",
OptionTimeoutFetch, val, err.Error()),
Code: adbc.StatusInvalidArgument,
}
}
s.timeouts.updateTimeout = timeout
case OptionStatementQueueSize:
var err error
var size int
if size, err = strconv.Atoi(val); err != nil {
return adbc.Error{
Msg: fmt.Sprintf("Invalid value for statement option '%s': '%s' is not a positive integer", OptionStatementQueueSize, val),
Code: adbc.StatusInvalidArgument,
}
} else if size <= 0 {
return adbc.Error{
Msg: fmt.Sprintf("Invalid value for statement option '%s': '%s' is not a positive integer", OptionStatementQueueSize, val),
Code: adbc.StatusInvalidArgument,
}
}
s.queueSize = size
case OptionStatementSubstraitVersion:
s.query.substraitVersion = val
default:
return adbc.Error{
Msg: "[Flight SQL] Unknown statement option '" + key + "'",
Code: adbc.StatusNotImplemented,
}
}
return nil
}