Как проверить, выполняется ли мое подготовленное утверждение в Rails или нет? - PullRequest
0 голосов
/ 09 января 2020

У меня есть этот подготовленный оператор в Rails (postgres db):

    conn = ActiveRecord::Base.connection.raw_connection

    conn.prepare('query_fetch_dest_values',
       "SELECT q.entity AS source_entity,
          q.financial_institution AS source_financial_institution,
          q.account_number AS source_account_number,
          a2.entity AS destination_entity,
          a2.financial_institution AS destination_financial_institution,
          a2.account_number AS destination_account_number
        FROM
        (SELECT *
         FROM forecast_entry_and_cash_positions
         INNER JOIN accounts a ON forecast_entry_and_cash_positions.source_account_id = a.account_number 
         WHERE (input_type IN ($1) AND
            a.financial_institution IN ($2) AND
            forecast_entry_and_cash_positions.source_account_id IN ($3))
         )q LEFT JOIN accounts a2 ON q.dest_account_id = a2.account_number")

    search_destination_values = 
      conn.exec_prepared('query_fetch_dest_values',
        [decode_input_type(params[:search_input_type]),
          params[:search_source_financial_institution],
          params[:search_source_account_number]
        ])

    puts "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
    puts search_destination_values.inspect
  1. Вышеуказанный SQL не печатается на моей консоли. Итак, как мне узнать, выполняется мой запрос или нет?
  2. В inspect, как показано в приведенном выше коде, это то, что выводится на консоль:
#<PG::Result:0x00007f9d32c528b8 status=PGRES_TUPLES_OK ntuples=0 nfields=6 cmd_tuples=0>

Я узнал из этого блога - https://blog.kiprosh.com/understanding-pg-result-object/, что nTuples=0 и cmd_tuples=0 в приведенном выше выводе означают, что число записей, возвращаемых SQL, равно 0.

Мой запрос в pgadmin возвращает 3 записи - почему я не получаю вывод здесь?

В этой документации https://rubydoc.info/gems/pg/PG/Connection#exec_prepared -instance_method и блогах stackoverflow, подобных этому -> Подготовленный оператор для Postgresql в Rails , показано, как передавать значения динамических c для фильтров, когда условие фильтрации - это условие = (равно) для фильтруемых столбцов.

Однако в моем состоянии у меня есть 3 IN фильтров. В документации не приведен пример прохождения динамических c фильтров для предложений IN. В приведенном выше фрагменте кода правильно ли я передаю фильтры Dynami c для моих предложений 3 IN? (Опять же, поскольку мой запрос не печатается на моей консоли, я не могу проверить, правильно ли мои фильтры добавлены в SQL или нет).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...