Todas las fuentes de datos deben proporcionar funciones para acceder a su meta-datos. Si la fuente de datos es una base de datos, estos meta-datos son los nombres de las tablas, las columnas, derechos de usuarios, y cosas así. El resultado de una consulta de meta información se representa como Gda_Recordset. El problema es que la mayor parte del tiempo el cliente solo esta interesado en alguna parte de esta información. El cliente quiere consultar a la fuente de datos acerca de los índices de una tabla, no todos los índices de todas las tablas. Por lo tanto es posible enviar restricciones a las consultas de meta-datos. Pero esto es sumamente complicado debido al hecho de que cada consulta deberá tener sus propias restricciones. La siguiente lista muestra que tipos de consulta están implementados y que restricciones son validas para cada consulta. Las restirciones de envían como parejas nombre-valor. El nombre es de tipo enumerado y el valor es una cadena de texto. La función de consulta es una función con numero de argumentos variable y la lista de argumentos debe finalizar con un variable enumerada de valor 0.
La siguiente tabla muestra las restricciones mas corrientes y cuando usarlas. algunos esquemas pueden requerir que entregue una restricción.
Tabla 5-1. Significado de las restricciones estándar
Restricción | Uso | Observaciones |
---|---|---|
GDA_Connection_OBJECT_CATALOG | Usada para especificar la base de datos | |
GDA_Connection_OBJECT_SCHEMA | Usada para especificar el propietario | |
GDA_Connection_OBJECT_NAME | Usada para indicar el nombre del objeto a consultar (tabla, ...) | |
GDA_Connection_EXTRA_INFO | Activela para obtener información detallada del proveedor | Dele como valor una cadena no nula (eje. "") |
La siguiente tabla muestra los esquemas estándar que debe soportar cada proveedor Gda, aunque algún proveedor especifico puede no soportar alguno de ellos. Para comprobar si se soporta un esquema, vea la función gda_connection_supports().
Tabla 5-2. Esquemas estándar y restricciones soportadas
Tipos de objeto | Identificador | Restricciones soportadas | Campos devueltos | Información adicional |
---|---|---|---|---|
Tablas | GDA_Connection_GDCN_SCHEMA_TABLES | GDA_Connection_OBJECT_NAME, GDA_Connection_OBJECT_CATALOG, GDA_Connection_OBJECT_SCHEMA, GDA_Connection_EXTRA_INFO | nombre, comentarios | nombre, propietario, comentarios, definición Sql |
Tabla padre (para los proveedores que soportan la herencia de tablas) | GDA_Connection_GDCN_SCHEMA_TAB_PARENTS | GDA_Connection_OBJECT_NAME (required), GDA_Connection_OBJECT_CATALOG | Nombre, orden de la herencia | No soportada |
Vistas | GDA_Connection_GDCN_SCHEMA_VIEWS | GDA_Connection_OBJECT_NAME, GDA_Connection_OBJECT_CATALOG, GDA_Connection_OBJECT_SCHEMA, GDA_Connection_EXTRA_INFO | nombre, comentarios | nombre, propietario, comentarios, definición Sql |
Columnas de la tabla (o vista) | GDA_Connection_GDCN_SCHEMA_COLUMNS | GDA_Connection_OBJECT_NAME (required), GDA_Connection_OBJECT_CATALOG, GDA_Connection_OBJECT_SCHEMA, GDA_Connection_COLUMN_NAME | nombre, tipo, tamaño, precisión, posible nulo, es clave, valor por omisión, comentarios | No soportado |
Secuencias | GDA_Connection_GDCN_SCHEMA_SEQUENCES | GDA_Connection_OBJECT_NAME, GDA_Connection_OBJECT_CATALOG, GDA_Connection_OBJECT_SCHEMA, GDA_Connection_EXTRA_INFO | nombre, comentarios | nombre, propietarios, comentarios, definición Sql |
Procedimientos | GDA_Connection_GDCN_SCHEMA_PROCS | GDA_Connection_OBJECT_NAME, GDA_Connection_OBJECT_CATALOG, GDA_Connection_OBJECT_SCHEMA, GDA_Connection_EXTRA_INFO | Nombre, Id del objeto, comentarios | Nombre, Id del objeto, propietario, comentarios, numero de argumentos, definición Sql |
Parametros del procedimiento | GDA_Connection_GDCN_SCHEMA_PROC_PARAMS | GDA_Connection_OBJECT_NAME (required) | Uso (entrada, salida o E/S), tipo | No soportado |
Agregados | GDA_Connection_GDCN_SCHEMA_AGGREGATES | GDA_Connection_OBJECT_NAME, GDA_Connection_OBJECT_CATALOG, GDA_Connection_OBJECT_SCHEMA, GDA_Connection_EXTRA_INFO | Nombre, Id del objeto, tipo de entrada, comentarios | Nombre, Id del objeto, tipo de entrada, comentarios, definición Sql |
Tipos | GDA_Connection_GDCN_SCHEMA_PROV_TYPES | GDA_Connection_OBJECT_NAME, GDA_Connection_OBJECT_CATALOG, GDA_Connection_OBJECT_SCHEMA, GDA_Connection_EXTRA_INFO | Nombre, propietario, comentarios, tipo Gda, tipo de proveedor | nombre, comentarios |
Debe prestar especial atención a las restirciones usadas (tanto en las aplicaciones cliente, como en los proveedores Gda), ya que es un requisito impuesto a los proveedores devolver un error si se envía una restricción invalida al servidor. Esto es especialmente importante, ya que hay esquemas que pueden significar diferentes cosas en función del conjunto de restricciones usadas. Como puede imaginar, esto puede llevar aq ue el cliente reciba datos no solicitados.