The golang bindings imply that we can return a IO object backed by a byte array for LocalResult#buf, which means that we avoid loading the entire result into a single in-memory string. This also allows us to iterate over the results one row at a time, which can be much more efficient than needing to parse a single string as CSV or JSON in one go.