** (MatchError) no match of right hand side value - Redshift

I am not able to connect to redshift db getting following error

(exit) an exception was raised:
    ** (MatchError) no match of right hand side value: {:ok, %Postgrex.Query{cache: :reference, columns: ["count", "query"], name: "", param_formats: [], param_oids: [], param_types: [], ref: #Reference<0.1270814240.2812542977.191519>, result_formats: [:binary, :binary], result_oids: [20, 1043], result_types: [Postgrex.Extensions.Int8, Postgrex.Extensions.Raw], statement: "SELECT *\nFROM ( SELECT count(*) as count, lower(event_props_typed_string) as query\nFROM \"pe_consumer_ct\".\"l_typeahead\" \"c\"\nWHERE (\"c\".\"created_at\" > (current_date - INTERVAL '30 days'))  and event_props_typed_string is not null\ngroup by event_props_typed_string\nhaving query != ''\norder by count desc\n\n ) \"s\" LIMIT 2000", types: {AfterGlow.PostgrexTypes, #Reference<0.1270814240.2812674049.191315>}}, %Postgrex.Result{columns: ["count", "query"], command: :select, connection_id: 49183, messages: [], num_rows: 2000, rows: [[17556, "condom"], [14780, "dettol"], [13838, "mask"], [11343, "hor"], [9502, "vicks"], [9438, "sex"], [9332, "horlicks"], [9192, "ensure"], [8877, "pan 40"], [8680, "pan"], [8558, "eno"], [8418, "evion"], [7864, "dett"], [7505, "vitamin e"], [7332, "volini"], [7246, "limcee"], [6481, "cerelac"], [6171, "sanitizer"], [6047, "dolo"], [5987, "zincovit"], [5960, "para"], [5815, "telma"], [5669, "shelcal"], [5631, "pan d"], [5627, "vitamin d"], [5593, "a to z"], [5464, "eco"], [5393, "crocin"], [5387, "calcium"], [5302, "viagra"], [5233, "omez"], [5170, "mintop"], [5161, "ceta"], [5134, "minoxidil"], [5114, "ultracet"], [5103, "cetaphil"], [5056, "horli"], [5019, "vitamin"], [4851, "uprise"], [4817, ...], [...], ...]}}
        (afterglow) web/modules/sql/adapters/redshift.ex:166: AfterGlow.Sql.Adapters.Redshift.run_query/5
        (afterglow) web/modules/sql/query_runner.ex:29: AfterGlow.Sql.QueryRunner.run_raw_query/4
        (afterglow) web/controllers/query_controller.ex:31: AfterGlow.QueryController.execute/2
        (afterglow) web/controllers/query_controller.ex:1: AfterGlow.QueryController.action/2
        (afterglow) web/controllers/query_controller.ex:1: AfterGlow.QueryController.phoenix_controller_pipeline/2
        (afterglow) lib/afterglow/endpoint.ex:1: AfterGlow.Endpoint.instrument/4
        (phoenix) lib/phoenix/router.ex:278: Phoenix.Router.__call__/1
        (afterglow) lib/afterglow/endpoint.ex:1: AfterGlow.Endpoint.plug_builder_call/2
        (afterglow) lib/plug/debugger.ex:122: AfterGlow.Endpoint."call (overridable 3)"/2
        (afterglow) lib/afterglow/endpoint.ex:1: AfterGlow.Endpoint.call/2
        (plug_cowboy) lib/plug/cowboy/handler.ex:18: Plug.Adapters.Cowboy.Handler.upgrade/4
        (cowboy) /Users/sahilpaudel/Documents/PharmEasy/Elixir/forked/AfterGlow/deps/cowboy/src/cowboy_protocol.erl:442: :cowboy_protocol.execute/4

This is where the error is happening

defp run_query(conn, query, exec_query, limited, frontend_limit) do
    try do
      query = Postgrex.prepare(conn, "", exec_query, opts)

      case query do
        {:ok, prepared_query} ->
          {:ok, results} = Postgrex.execute(conn, prepared_query, [], opts)  // error here

          {:ok,
           %{
             columns: results.columns,
             rows: results.rows,
             limited: limited,
             limit: frontend_limit,
             limited_query: exec_query
           }}

        {:error, error} ->
          {:error, error.postgres}
      end
    rescue
      DBConnection.ConnectionError ->
        {:error, %{message: "Query Timed Out. Please Try to optimize your query"}}
    end
  end

Any help please.

The format seems to be:

{:ok, query, result}

instead of

{:ok, result}
1 Like