Documentación
Noticias
Detalles técnicos
Ejemplos
Programas necesarios
Disponibilidad
Contribuciones
Autores
Versión en Inglés (English version)
UESQLC Universal Embedded SQL Compiler

Introducción

UESQLC es un precompilador de SQL-92 inmerso en C++ y JAVA con licencia de Fuentes Abiertas, diseñado para ser extensible usando documentos SGML. Permite al usuario acceder a múltiples sistemas de gestión de bases de datos relacionales a partir de los mismos fuentes. Además, puede verificar los tres niveles de cumplimiento del SQL (Entry, Intermediate y Full).

La distribución incluye los documentos SGML que permiten generar el código para los sistemas de acceso a bases de datos Oracle Server OCI, PostgreSQL LIBPQ, PostgreSQL JDBC y ODBC (en Unix/Linux se ha probado con UnixODBC). UESQLC está distribuido de acuerdo con los términos de la Licencia General GNU (GPL).

Documentación

Para crear la documentación tanto del UESQLC como del MPCL, deberá usar DOXYGEN, el cual generará la documentación en formato PostScript, DVI, Man (Unix) y HTML. En estas páginas podrá encontrar la documentación en formato HTML de UESQLC y MPCL.

Detalles Técnicos

UESQLC ha sido escrito en C++ usando la librería MPCL (ver abajo). Ha sido desarrollada en una plataforma Linux y probada en Linux (con PostgreSQL LIBPQ) y Sun Solaris (con Oracle Server OCI) sin embargo, son bienvenidas versiones para otros sistemas operativos.

Ver README, ChangeLog y NEWS para UESQLC y README, ChangeLog y NEWS para MPCL.

Aquí tenemos una tabla con las plataformas donde el compilador ha sido compilado y verificado.

Nombre canónico obtenido con config.guess
i586-pc-linux-gnu
i686-pc-linux-gnu
sparc-sun-solaris2.6

Aquí tenemos una tabla con los sistemas de acceso a bases de datos para los que UESQLC genera código actualmente.

Sistema (documento CDML) SGBD Sistema de acceso Versión del sistema de acceso
odbc-3.x cualquiera que soporte ODBC ODBC >= 3.x
oracle-oci-7.x Oracle Server OCI (Oracle Call Interface) >= 7.x
postgresql-jdbc-3.0 PostgreSQL JDBC >= 3.0
postgresql-libpq-6.2.x PostgreSQL LIBPQ >= 6.2.x

Tanto el analizador lexicográfico como el sintáctico del lenguaje SQL-92, han sido escritos desde cero. Soporta SQL-92 menos los juegos de caracteres y los módulos. Donde este precompilador destaca es en la posibilidad de añadir nuevos sistemas de acceso a bases de datos (MySQL, Informix SQL, etc.) simplemente escribiendo un nuevo documento SGML (llamado formalmente CDML) sin tener que recompilar el propio compilador. Incluso, se podría escribir un documento CDML para un sistema de acceso a base de datos que no soporte SQL aunque si, un lenguaje de consulta equivalente.

Con el uso de las herramientas GNU, autoconf, automake y libtool, el nivel de portabilidad del compilador es muy alto.

Ejemplos

He aquí un ejemplo de código UESQL (inmerso en C++) que se conecta a un SGBD, crea una tabla y visualiza los resultados de una sentencia SELECT. Por último, la tabla es eliminada.

    uesqlc::TString    yCode;
    uesqlc::TInteger   tWorkerCount;
  
    extern "UESQL::default"
    {
      whenever not found goto not_found;
      connect to 'sql.server.name' user 'myname';
      create table JOBS
      (
        CODE         character (3) not null ,
        WORKER_COUNT integer
      );
      insert into JOBS values ('001', 100);
      insert into JOBS values ('002', 250);
      declare MYCURSOR cursor for
        select CODE, WORKER_COUNT
          from JOBS
          where ( WORKER_COUNT > 50 );
      open MYCURSOR;
    }
    cout << "CODE WORKER_COUNT" << endl;
    cout << "==== ============" << endl;
    while ( true )
    {
      extern "UESQL::default"
      {
        fetch from MYCURSOR into :yCode, :tWorkerCount;
      }
      cout << yCode << "  " << tWorkerCount << endl;
    }

  not_found:
    extern "UESQL::default"
    {
      close MYCURSOR;
      drop table JOBS cascade;
    }
	      

Programas necesarios

Nombre Versión necesaria
GNU g++ >= 3.1
GNU make cualquiera
JAVA >= 1.4

Disponibilidad

UESQLC y MPCL están disponibles aquí y la distribución sigue los terminos de la Licencia Pública GNU (GPL) y la Licencia Pública de Bibliotecas GNU respectivamente.

Fuentes y binarios. Directorio de descarga
Fuentes de UESQLC. uesqlc-0.10.0.zip
Fuentes de MPCL. mpcl-11.0.2.zip

Contribuciones

UESQLC (y MPCL) son programas/librerías de Fuentes Abiertos, y contribuciones, en términos de informes sobre errores, ideas, documentación, y parches, son por lo tanto, bienvenidas.

Su habilidad para sobrevivir y tener éxito dependerán grandemente de las contribuciones de otros. No hace falta saber programar para poder contribuir, aunque ayuda :) La lista de cosas por hacer es:

  • Contribuciones relacionadas con la programación.

    • Compilación en otras plataformas (Solaris, BSD, AIX...).

    • Añadir nuevos objetivos para C++ (Informix, SAP-DB, MySQL, etc.).

    • Añadir soporte de Java como lenguaje anfitrión (además del C++) (hecho).

    • Añadir PostgreSQL como nuevo objetivo para JAVA JDBC (hecho).

    • Nuevas versiones (Alpha, SGI, etc.).

    • Convertir MPCL/ADT (Abstract Data Types) a STL (hecho).

    • Internationalización del compilador usando locale.

  • Contribuciones no relacionadas con la programación.

    • Documentación (con DOXYGEN) (hecho).

    • Documentos Info, HOWTOs, FAQs, etc.

    • Sugerencias para las páginas Web, correcciones y errores ortográficos (hecho).

Por favor, dime qué te parece el programa.

Autores

UESQLC ha sido escrito por Rafael Jesús Alcántara Pérez con la ayuda del profesor (y amigo) Sergio Gálvez Rojas como Director del Proyecto en la Universidad de Málaga. Si desea soporte comercial para este proyecto, contacte con Dédalo Ingenieros, S.L.

MPCL ha sido escrito por Rafael Jesús Alcántara Pérez como principal programador, y Francisco Rodrigo Escobedo Robles, Angel Jiménez Jiménez, Carlos Jiménez Moreno y Francisco Vides Fernández.

Copyright © 1996-2009 de Rafael Jesús Alcántara Pérez.
Esta página fue modificada el 27 de Enero de 2009.