2010-12-15 5 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 

私の質問は:私は、SQL文にTracQueryを変換することができたり、私は、バックエンドで行われているSQL文を見ることができますか?私はいくつかの列をキャストしたり、他のSQL関数を使用できるようにしたいので頼んでいます。

答えて

4

ログレベルをDEBUGに設定し、trac.iniに設定オプション[trac] debug_sql = trueを設定します。これにより、データベースに作成されたすべてのSQL文(クエリに対応するものを含む)がログに記録されます。最も難しい部分は、ログに正しいステートメントを見つけることです。

ああ、すべてのロギングがTracを大幅に遅くするので、終了したらもう一度オプションを無効にしてください。

1

Tracのソースコードはクエリを内部的にSQLに変換するので、ソースを編集してDBに送信する前にクエリ文字列をログファイルに出力する必要があります(ソースが前にありません私はあなたに正確なコードの場所を教えてくれません)。 SQLを直接入力すると、まったく同じ結果が得られない場合があります。TracがTracQueryを介してSQLクエリの結果に対して余分な後処理を行うかどうかはわかりません。

Tracのログ設定を「DEBUG」に調整し、これらの2つのクエリを実行するときにログに有用な出力があるかどうかを確認することもできます。

+0

あなたのヒントありがとうございます。残念ながら私はPython開発者ではないので、コードを自分で変更したくないです。しかし、私はデバッグモードを試し、結果が得られるかどうか報告します。 – 2ndkauboy

関連する問題