2012-04-26 8 views
5

Esta es una pregunta menor, pero estoy algo perplejo.SQLite max query parameters difiere en Snow Leopard?

sqlite tiene un límite estricto en el número de parámetros de consulta, de 999. Esto se establece en encabezados que no son parte del archivo de encabezado público, y el tiempo de ejecución le permite bajar el límite, pero no exceder el límite duro El módulo sqlite3 de Python en Snow Leopard (y Lion también, aparentemente) permite más parámetros que esto, sin embargo, y no puedo entender cómo esto es posible.

Consideré la posibilidad de que el contenedor de Python esté haciendo la sustitución de parámetros y pasando sentencias completas a sqlite3; pero por lo que puedo decir del código fuente, eso no está sucediendo. También consideré la posibilidad de que la implementación de sqlite3 en Snow Leopard se compilara a partir de un código fuente ligeramente diferente; pero resulta que Apple publica sus modificaciones de código abierto (ver http://opensource.apple.com/source/SQLite/SQLite-74.11/) y el límite del parámetro en su fuente es idéntico al predeterminado.

Si alguien tiene una idea sobre cómo podría estar sucediendo esto (y estoy seguro de que está sucediendo, he creado declaraciones con 2000 parámetros y funcionan bien), por favor repítame. Por lo que vale, me encontré con esto rareza porque el código idéntico se rompe en Windows, debido al límite del parámetro.

+0

¿Has comprobado cuál es el límite real de Snow Leopard? ¿Cómo se comporta la memoria si pones un número absurdamente alto? – dsign

+0

Buena idea. El número en Snow Leopard es 500000, exactamente. 500001 descansos. –

Respuesta

1

Cuando la construcción de las fuentes de SQLite completa (C), el preprocesador definir

SQLITE_MAX_VARIABLE_NUMBER 

controla el número máximo de "variables de los estados", el valor por defecto es 999.

Más información se puede encontrar aquí : https://sqlite.org/limits.html

Supongo que el enlace de python usa una compilación personalizada de SQLite con un número mayor.


(nota obligatoria sobre 999 parámetros de ser más que suficiente, y que está haciendo algo raro -. O inusual considere poner su caso de uso y si hay sugerencias para un número razonable mroe de parámetros.)

Cuestiones relacionadas