2010-12-15 2 views
3

Я создал некоторые TracReports, но, пытаясь сделать их с SQL, я не получаю ожидаемого результата. Это был мой SQL-запрос:Можно ли преобразовать TracQuery в оператор Trac SQL и наоборот?

SELECT  p.value AS __color__, 
      reporter AS __group__, 
      id AS ticket, summary, resolution , component, 
      t.type AS type, priority, severity, time AS created, 
      changetime AS modified, 
      changetime AS __changetime, description AS _description, 
      reporter AS _reporter 
FROM  ticket t 
LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority' 
WHERE  t.status = 'closed' 
ORDER BY changetime DESC, CAST(p.value AS integer), milestone, t.type, time 

С помощью этого запроса группа репортера не работает вообще. Я получаю несколько строк на каждого репортера. Поэтому я попытался получить результат с помощью функции «Пользовательский запрос». Это произвело мой ожидаемый результат со следующим TracQuery:

query:?status=closed 
&group=reporter 
&col=id 
&col=summary 
&col=resolution 
&col=component 
&col=type 
&col=priority 
&col=severity 
&col=time 
&col=changetime 
&order=changetime 
&desc=1 

Моим вопрос: Могу ли я конвертировать TracQuery в инструкцию SQL, или я могу видеть, оператор SQL, которые сделали во внутреннем интерфейсе? Я спрашиваю, хочу ли я использовать некоторые из столбцов или использовать другие функции SQL.

ответ

4

Установите уровень ведения журнала на DEBUG и установите для него [trac] debug_sql = true параметр конфигурации в trac.ini. Это будет регистрировать все операторы SQL, сделанные в базе данных, включая те, которые соответствуют вашему запросу. Самая сложная часть - найти правильное утверждение в журнале.

О, и отключите параметр снова, когда вы закончите, потому что все, что регистрирует, замедляет Trac значительно.

1

Исходный код Trac преобразует запрос в SQL внутренне, поэтому вы должны иметь возможность редактировать источник для печати строки запроса в файле журнала перед отправкой его в БД (у меня нет источника перед так что я не могу сказать вам точное местоположение кода). Вы не можете получить тот же самый результат при непосредственном вводе SQL, я не могу вспомнить, делает ли Trac дополнительную пост-обработку результатов SQL-запроса через TracQuery.

Он также может помочь настроить параметры ведения журнала Trac на «DEBUG» и посмотреть, есть ли полезный вывод в журнале при выполнении этих двух запросов.

+0

Спасибо за советы. К сожалению, я не разработчик python, поэтому я бы не хотел сам менять код. Но я попробую режим отладки и сообщите, получится ли это результат. – 2ndkauboy 2011-01-12 16:58:07

Смежные вопросы