sqlite.h


Función auxiliar de datos

void *sqlite3_get_auxdata(sqlite3_context*, int N);
void sqlite3_set_auxdata(sqlite3_context*, int N, void*, void (*)(void*));

Las dos funciones siguientes pueden ser usadas pro funciones SQL escalares para asociar metadatos con valores de argumentos. Si el mismo valor es pasado a múltiples invocaciones de la misma función SQL durante la ejecución de la consulta, bajo ciertas circunstancias los metadaos asociados podrán ser preservados. Esto puede ser usado, por ejemplo, para añadir una función de comparación de expresiones regulares escalar. La versión compilada de la expresión regular se almacena como metadatos asociados con el valor SQL pasado como patrón de expresión regular. La expresión regular compilada puede ser reusada en múltiples invocaciones de la misma función de modo que la cadena de patrón original no necesita ser recompilada para cada invocación.

La función sqlite3_get_auxdata() devuelve un puntero a los metadatos asociados con la función sqlite3_set_auxdata() con el valor del argumento enésimo de la función definida por la aplicación. Si ningún metadato ha sido nunca asignado para el enésimo argumento de la función, o si el parámetro correspondiente de la función ha cambiado desde que los metadatos fueron asignados, sqlite3_get_auxdata() devuelve un puntero NULL.

La función sqlite3_set_auxdata() guarda los metadatos apuntados por su tercer parámetro como los metadatos para el argumento enésimo de la función definida por la aplicación. Subsiguientes llamadas a sqlite3_get_auxdata() pueden devolver estos datos, si no han sido destruidos. Si no es NULL, SQLite podrá invocar a la función destructora dada por el cuarto parámetro a sqlite3_set_auxdata() sobre los metadatos cuando el parámetro correspondiente de la función cambie o cuando la sentencia SQL termine, lo que pase primero.

SQLite es libre para llamar al destructor y eliminar los metadatos de cualquier parámetro de cualquier función en cualquier momento. La única garantía de que ese destructor será invocado antes de que los metadatos se eliminen.

En la práctica, los metadatos se preservan entre llamadas a función para expresiones que sean constantes en tiempo de compilación. Esto incluye valores literales y parámetros.

Estas funciones deben ser llamadas desde el mismo hilo en el que la función SQL se está ejecutando.