2012-04-26 15 views
5

これは軽微な質問ですが、私はそんなに困惑しています。SQLiteの最大クエリパラメータはSnow Leopardで異なりますか?

sqliteには、999のクエリパラメータの数に厳しい制限があります。これは、パブリックヘッダーファイルの一部ではないヘッダーで設定され、ランタイムによって制限を下回ることができますハードリミット。 Snow LeopardのPythonのsqlite3モジュール(とLionも同様です)は、これよりも多くのパラメータを使用できますが、これがどのように可能かについては私の人生を理解することはできません。

私は、Pythonラッパーがパラメータ置換自体を行い、完全な文をsqlite3に渡す可能性を考えました。しかし、私がソースコードから知る限り、それは起こっていません。私はまた、Snow Leopard上のsqlite3の実装がわずかに異なるソースコードからコンパイルされた可能性を考えました。 Appleがオープンソースの変更を公開していることがわかりました(http://opensource.apple.com/source/SQLite/SQLite-74.11/参照)、ソースのパラメータの制限はデフォルトと同じです。

誰かがこれが起こっている可能性のあるアイデアがある場合(私はそれが起こっていると確信しています;私は2000パラメータのステートメントを作成しています)、チャイムインしてください。パラメータの制限のために、Windows上で同じコードが壊れてしまいます。フルSQLiteの(C)ソースを構築する場合

+0

Snow-Leopardの実際の制限はどれですか?あなたがばかげて高い数字を置くと、メモリはどのように振る舞いますか? – dsign

+0

良いアイデア。 Snow Leopardの数字は正確に500000です。 500001休憩。 –

答えて

1

、プリプロセッサは、「ステートメントの変数」の

SQLITE_MAX_VARIABLE_NUMBER 

コントロールの最大数を定義し、デフォルト値はここで見つけることができます999

詳しい情報があります:https://sqlite.org/limits.html

私はpythonバインディングは、より高い数字のSQLiteのカスタムビルドを使用すると仮定します。


(必須ノートについての999のパラメータをたっぷり以上であること、そしてあなたは奇妙な何かをやっている - 。または異常をパラメータのmroe合理的な数のための提案があるかどうか考えてみましょうあなたのユースケースを掲載して。)

関連する問題