sqlite.h


Límites Run-time

int sqlite3_limit(sqlite3*, int id, int newVal);

Esta función permite limitar el tamaño de varias construcciones para una conexión por conexión base. El primer parámetro es la conexión de base de datos cuyo límite va a ser asignado o consultado. El segundo parámetro es una de las categorías de límite que definen una clase de construcción cuyo tamaño va a ser limitado. El tercer parámetro es el nuevo límite para esa construcción.

Si el nuevo límite es un número negativo, el límite no se cambia. Para cada categoría de límite SQLITE_LIMIT_NAME existe un límite superior duro asignado en tiempo de compilación mediante una macro C del preprocesador llamada SQLITE_MAX_NAME. (El "_LIMIT_" en el nombre es cambiado a "_MAX_".) Los intentos de incrementar un límite sobre ese límite superior duro son discretamente truncados al límite superior duro.

Independientemente de si el límite se ha cambiado o no, la función sqlite3_limit() devuelve el valor anterior del límite. Por lo tanto, para encontrar el valor actual de un límite sin cambiaro, símplemente hay que invocar esta función con el tercer parámetro puesto a -1.

Los límites run-time están diseñados para usarse con aplicaciones que manejen tanto sus propias bases de datos internas como las bases de datos que son controladas por fuentes externas no confiables. Un ejemplo de aplicación podría ser un navegador web que tiene sus propias bases de datos para almacenar el historial y bases de datos separadas controladas por aplicaciones JavaScript descargadas de Internet. Las bases de datos internas pueden tener los límites grandes, los que son por defecto. Las bases de datos manejadas por fuentes externas pueden tener límites mucho más pequeños diseñados para prevenir ataques por denegación de servicio. Los desarrolladores pueden también desear utilizar la función sqlite3_set_authorizer() para controlar aún más la confianza de SQL. El tamaño de la base de datos creada por un script que no es de confianza puede ser limitado usando el PRAGMA max_page_count.

Es posible que se añadan nuevas categorías de límites run-time en futuras versiones.