Closed PeterFaiman closed 7 years ago
LGTM
I'm uneasy about the string matching for error, but since that's our only option let's just leave a passive aggressive comment and move on
I updated the commit message to clarify behavior, it now reads:
Recommend COALESCE on error writing NULL to CSV.
This error only occurs when saving values to a query-results-file CSV. This makes the error message clarify the limitation of writing NULLs to CSV files, rather than just displaying a cryptic error about casting.
...
Partially addresses issue #6.
Test:
CREATE TABLE test(s VARCHAR(64)); INSERT INTO test(s) VALUES ('test'), (NULL), ('test');
without COALESCE test.ini:
[test] query=SELECT s FROM test query-results-file=/tmp/test.csv count=1
result:
2017/07/26 09:47:58 Connected 2017/07/26 09:47:58 starting test 2017/07/26 09:47:58 error for query SELECT s FROM test in test: sql: Scan error on column index 0: unsupported Scan, storing driver.Value type into type *string, NULL cannot be uniquely encoded as a CSV value, consider using the SQL function COALESCE to convert NULLs to some default value
with COALESCE test.ini:
[test] query=SELECT COALESCE(s, 'NULL') FROM test query-results-file=/tmp/test.csv count=1
result:
2017/07/26 09:47:36 Connected 2017/07/26 09:47:36 starting test 2017/07/26 09:47:36 stopping test 2017/07/26 09:47:36 test: latency 845.736µs±0s; 1 transactions (1182.402 TPS); 3 rows (3547.206 RPS)