Skip to content

Commit

Permalink
feat(ecto-adapter): implement query_many/4 (#65)
Browse files Browse the repository at this point in the history
This enables a multi-statement query, e.g. "select 1; select 2".
  • Loading branch information
dustinfarris authored and PM-Pepsico committed Aug 27, 2024
1 parent af0d0fa commit 0fb4157
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 2 deletions.
3 changes: 3 additions & 0 deletions lib/snowflex/connection.ex
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,9 @@ defmodule Snowflex.Connection do
%Result{num_rows: count, success: true, statement: query.statement}
end

defp parse_result(results, query) when is_list(results),
do: Enum.map(results, fn result -> parse_result(result, query) end)

defp parse_result(result, _query), do: result

defp parse_result(columns, rows, query) do
Expand Down
21 changes: 19 additions & 2 deletions lib/snowflex/ecto/connection.ex
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,26 @@ defmodule Snowflex.EctoAdapter.Connection do
Snowflex.query(conn, sql, params, opts)
end

def query_many!(conn, sql, params, opts) do
case query_many(conn, sql, params, opts) do
{:ok, result} -> result
{:error, error} -> raise error
end
end

@impl true
def query_many(_conn, _sql, _params, _opts) do
raise "query_many is not supported by Snowflake"
@doc """
Run a multi-statement query.
The `MULTI_STATEMENT_COUNT` Snowflake parameter must be set to 0 to allow
multi-statement queries.
https://docs.snowflake.com/en/sql-reference/parameters.html#multi-statement-count
"""
def query_many(conn, sql, params, opts) do
with {:ok, result} <- query(conn, sql, params, opts) do
{:ok, List.wrap(result)}
end
end

@impl true
Expand Down

0 comments on commit 0fb4157

Please sign in to comment.