libgda r3094 - in trunk: . doc/C libgda libgda/sql-parser libgda/sqlite libgda/sqlite/virtual po providers providers/bdb providers/postgres providers/skel-implementation/capi providers/skel-implementation/models tests/meta-store tests/parser tests/providers
- From: vivien svn gnome org
- To: svn-commits-list gnome org
- Subject: libgda r3094 - in trunk: . doc/C libgda libgda/sql-parser libgda/sqlite libgda/sqlite/virtual po providers providers/bdb providers/postgres providers/skel-implementation/capi providers/skel-implementation/models tests/meta-store tests/parser tests/providers
- Date: Fri, 21 Mar 2008 21:07:22 +0000 (GMT)
Author: vivien
Date: Fri Mar 21 21:07:20 2008
New Revision: 3094
URL: http://svn.gnome.org/viewvc/libgda?rev=3094&view=rev
Log:
2008-03-21 Vivien Malerba <malerba gnome-db org>
* libgda/sqlite/gda-sqlite.h: correction for SQLite versions < 3.5 (for bug #523613)
* providers/postgres/parser.y:
* libgda/sql-parser/parser.y: allow identifiers to be enclosed in double quotes
* tests/parser/testdata.xml:
* libgda/sql-parser/gda-sql-parser.c: corrected a nasty bug while using a case statement
* libgda/gda-data-model.c: removed debug info
* libgda/information_schema.xml: added some descriptive fields
* libgda/Makefile.am: added gda-statement-extra.h to list of headers
* configure.in: remove non compiling providers from AC_OUTPUT, don't check anymore for
LEX and YACC as they are not used anymore
* tests/providers/*: don't fail if the providers have not been compiled (and are thus not found)
* tests/meta-store/*: adaptations to the information schema changes
* libgda/sql-parser/Makefile.am:
* libgda/sql-parser/gen_def.c:
* providers/prepare_provider_sources.sh:
* providers/postgres/Makefile.am:
* providers/skel-implementation/models/Makefile.am:
* providers/skel-implementation/capi/Makefile.am: modifications to have "make distcheck" run
* libgda/sql-parser/LemonPatch: keep the lemon.c modifications in a separate file
* libgda/sql-parser/lemon.c: modified to be able to load the "lempar.c" file from a directory
different than the current directory, and be able to write output files to the current
directory
* libgda/sqlite/virtual/libmain.c:
* providers/postgres/gda-postgres-cursor-recordset.[ch]: removed unused files
* libgda/gda-connection.c: removed unused private attribute
Added:
trunk/libgda/sql-parser/LemonPatch
Removed:
trunk/libgda/sqlite/virtual/libmain.c
trunk/providers/postgres/gda-postgres-cursor-recordset.c
trunk/providers/postgres/gda-postgres-cursor-recordset.h
Modified:
trunk/ChangeLog
trunk/configure.in
trunk/doc/C/Makefile.am
trunk/doc/C/gettingstarted.xml
trunk/libgda/Makefile.am
trunk/libgda/gda-connection.c
trunk/libgda/gda-data-model.c
trunk/libgda/information_schema.xml
trunk/libgda/sql-parser/Makefile.am
trunk/libgda/sql-parser/gda-sql-parser.c
trunk/libgda/sql-parser/gen_def.c
trunk/libgda/sql-parser/lemon.c
trunk/libgda/sql-parser/parser.y
trunk/libgda/sqlite/gda-sqlite.h
trunk/po/POTFILES.in
trunk/po/POTFILES.skip
trunk/providers/bdb/Makefile.am
trunk/providers/postgres/Makefile.am
trunk/providers/postgres/gda-postgres-meta.c
trunk/providers/postgres/parser.y
trunk/providers/prepare_provider_sources.sh
trunk/providers/skel-implementation/capi/Makefile.am
trunk/providers/skel-implementation/models/Makefile.am
trunk/tests/meta-store/Makefile.am
trunk/tests/meta-store/common.c
trunk/tests/meta-store/data_domains.csv
trunk/tests/meta-store/data_domains_1.csv
trunk/tests/parser/testdata.xml
trunk/tests/providers/check_bdb.c
trunk/tests/providers/check_firebird.c
trunk/tests/providers/check_freetds.c
trunk/tests/providers/check_ibmdb2.c
trunk/tests/providers/check_ldap.c
trunk/tests/providers/check_mdb.c
trunk/tests/providers/check_msql.c
trunk/tests/providers/check_mysql.c
trunk/tests/providers/check_odbc.c
trunk/tests/providers/check_oracle.c
trunk/tests/providers/check_postgres.c
trunk/tests/providers/check_sybase.c
trunk/tests/providers/check_xbase.c
Modified: trunk/configure.in
==============================================================================
--- trunk/configure.in (original)
+++ trunk/configure.in Fri Mar 21 21:07:20 2008
@@ -96,8 +96,6 @@
AC_STDC_HEADERS
AC_ARG_PROGRAM
AM_PROG_LIBTOOL
-AM_PROG_LEX
-AC_PROG_YACC
AC_PROG_MAKE_SET
dnl ******************************
@@ -1190,32 +1188,12 @@
providers/Makefile
providers/bdb/Makefile
providers/bdb/libgda-bdb-4.0.pc
-providers/freetds/Makefile
-providers/freetds/libgda-freetds-4.0.pc
-providers/firebird/Makefile
-providers/firebird/libgda-firebird-4.0.pc
-providers/ibmdb2/Makefile
-providers/ibmdb2/libgda-ibmdb2-4.0.pc
-providers/ldap/Makefile
-providers/ldap/libgda-ldap-4.0.pc
providers/mdb/Makefile
providers/mdb/libgda-mdb-4.0.pc
-providers/mysql/Makefile
-providers/mysql/libgda-mysql-4.0.pc
-providers/msql/Makefile
-providers/msql/libgda-msql-4.0.pc
-providers/odbc/Makefile
-providers/odbc/libgda-odbc-4.0.pc
-providers/oracle/Makefile
-providers/oracle/libgda-oracle-4.0.pc
providers/postgres/Makefile
providers/postgres/libgda-postgres-4.0.pc
providers/sqlite/Makefile
providers/sqlite/libgda-sqlite-4.0.pc
-providers/sybase/Makefile
-providers/sybase/libgda-sybase-4.0.pc
-providers/xbase/Makefile
-providers/xbase/libgda-xbase-4.0.pc
providers/skel-implementation/Makefile
providers/skel-implementation/capi/Makefile
providers/skel-implementation/capi/libgda-capi-4.0.pc
@@ -1250,19 +1228,19 @@
echo " Building Libxslt extension: `if test x$have_xslt != xno; then echo yes; else echo no; fi`"
echo " Compiled providers:"
echo " Berkeley DB = `if test x$bdbdir != x; then echo yes; else echo no; fi`"
-echo " FireBird = `if test x$firebirddir != x; then echo yes; else echo no; fi`"
-echo " FreeTDS = `if test x$freetdsdir != x; then echo yes; else echo no; fi`"
-echo " IBM DB2 = `if test x$ibmdb2dir != x; then echo yes; else echo no; fi`"
+dnl echo " FireBird = `if test x$firebirddir != x; then echo yes; else echo no; fi`"
+dnl echo " FreeTDS = `if test x$freetdsdir != x; then echo yes; else echo no; fi`"
+dnl echo " IBM DB2 = `if test x$ibmdb2dir != x; then echo yes; else echo no; fi`"
echo " MDB (MS Access) = `if test x$mdbdir != x; then echo yes; else echo no; fi`"
-echo " MySQL = `if test x$mysqldir != x; then echo yes; else echo no; fi`"
-echo " mSQL = `if test x$msqldir != x; then echo yes; else echo no; fi`"
-echo " ODBC = `if test x$odbcdir != x; then echo yes; else echo no; fi`"
-echo " Oracle = `if test x$oracledir != x; then echo yes; else echo no; fi`"
+dnl echo " MySQL = `if test x$mysqldir != x; then echo yes; else echo no; fi`"
+dnl echo " mSQL = `if test x$msqldir != x; then echo yes; else echo no; fi`"
+dnl echo " ODBC = `if test x$odbcdir != x; then echo yes; else echo no; fi`"
+dnl echo " Oracle = `if test x$oracledir != x; then echo yes; else echo no; fi`"
echo " PostgreSQL = `if test x$postgresdir != x; then echo yes; else echo no; fi`"
echo " SQLite = yes `if test x$have_sqlite = xyes; then echo '(from system installation)'; else echo '(embedded)'; fi`"
-echo " Sybase = `if test x$sybasedir != x; then echo yes; else echo no; fi`"
-echo " xBase (dBase, Clipper, FoxPro) = `if test x$xbasedir != x; then echo yes; else echo no; fi`"
-echo " LDAP = `if test x$ldapdir != x; then echo yes; else echo no; fi`"
+dnl echo " Sybase = `if test x$sybasedir != x; then echo yes; else echo no; fi`"
+dnl echo " xBase (dBase, Clipper, FoxPro) = `if test x$xbasedir != x; then echo yes; else echo no; fi`"
+dnl echo " LDAP = `if test x$ldapdir != x; then echo yes; else echo no; fi`"
if test x"$br_cv_binreloc" != "xyes" -a x"$platform_win32" != "xyes"
then
echo " Binreloc support is disabled: Libgda will not be relocatable. To enable binreloc support re-run with --enable-binreloc (see http://autopackage.org/docs/binreloc for more information)"
Modified: trunk/doc/C/Makefile.am
==============================================================================
--- trunk/doc/C/Makefile.am (original)
+++ trunk/doc/C/Makefile.am Fri Mar 21 21:07:20 2008
@@ -59,7 +59,7 @@
# Other files to distribute
EXTRA_DIST += examples/full_example.c installation.xml limitations.xml migration.xml migration2.xml \
server-operation.xml gettingstarted.xml virtual.xml virtual-notice.xml store-meta-type.xml \
- DataModels.svg \
+ prov-writing.xml DataModels.svg \
architecture.svg parts.svg stmt-unknown.svg stmt-select.svg stmt-insert1.svg stmt-insert2.svg \
stmt-update.svg stmt-compound.svg information_schema.svg
Modified: trunk/doc/C/gettingstarted.xml
==============================================================================
--- trunk/doc/C/gettingstarted.xml (original)
+++ trunk/doc/C/gettingstarted.xml Fri Mar 21 21:07:20 2008
@@ -24,7 +24,8 @@
/* open a connection */
g_print ("CONNECTING\n");
- connection = gda_connection_open_from_dsn ("calvaris", NULL, NULL, GDA_CONNECTION_OPTIONS_READ_ONLY);
+ connection = gda_connection_open_from_dsn ("calvaris", NULL,
+ GDA_CONNECTION_OPTIONS_READ_ONLY, NULL);
g_print ("CONNECTED\n");
/* use the connection */
@@ -71,7 +72,8 @@
/* open a connection */
g_print ("CONNECTING\n");
- connection = gda_connection_open_from_dsn ("calvaris", NULL, NULL, GDA_CONNECTION_OPTIONS_READ_ONLY);
+ connection = gda_connection_open_from_dsn ("calvaris", NULL,
+ GDA_CONNECTION_OPTIONS_READ_ONLY, NULL);
g_print ("CONNECTED\n");
/* use the connection */
Modified: trunk/libgda/Makefile.am
==============================================================================
--- trunk/libgda/Makefile.am (original)
+++ trunk/libgda/Makefile.am Fri Mar 21 21:07:20 2008
@@ -64,6 +64,7 @@
gda-server-provider-extra.h \
gda-server-provider-private.h \
gda-statement.h \
+ gda-statement-extra.h \
gda-threader.h \
gda-transaction-status.h \
gda-transaction-status-private.h \
@@ -199,6 +200,7 @@
dtd_DATA=$(DTD_FILES)
EXTRA_DIST = \
$(DTD_FILES) \
+ $(xml_DATA) \
gda-marshal.list
DISTCLEANFILES = .deps/*.P
Modified: trunk/libgda/gda-connection.c
==============================================================================
--- trunk/libgda/gda-connection.c (original)
+++ trunk/libgda/gda-connection.c Fri Mar 21 21:07:20 2008
@@ -54,7 +54,6 @@
GdaMetaStore *meta_store;
GList *events_list;
- GList *recset_list;
GdaTransactionStatus *trans_status;
GHashTable *prepared_stmts;
@@ -207,7 +206,6 @@
cnc->priv->auth_string = NULL;
cnc->priv->is_open = FALSE;
cnc->priv->events_list = NULL;
- cnc->priv->recset_list = NULL;
cnc->priv->trans_status = NULL; /* no transaction yet */
}
@@ -236,9 +234,6 @@
if (cnc->priv->events_list)
gda_connection_event_list_free (cnc->priv->events_list);
- if (cnc->priv->recset_list)
- g_list_foreach (cnc->priv->recset_list, (GFunc) g_object_unref, NULL);
-
if (cnc->priv->trans_status) {
g_object_unref (cnc->priv->trans_status);
cnc->priv->trans_status = NULL;
@@ -409,9 +404,7 @@
* provider (use gda_config_get_provider_info() to get it). Also one can use the "gda-sql-4.0 -L" command to
* list the possible named parameters.
*
- * If a new #GdaConnection is created, then the caller will hold a reference on it.
- *
- * Returns: the opened connection if successful, %NULL if there was an error.
+ * Returns: a new #GdaConnection if connection opening was sucessfull or %NULL if there was an error.
*/
GdaConnection *
gda_connection_open_from_dsn (const gchar *dsn, const gchar *auth_string,
@@ -496,8 +489,7 @@
* and the real connection string will be extracted from that string (note that if @provider_name
* is not %NULL then it will still be used as the provider ID).
*
- * Returns: the opened connection if successful, %NULL if there is
- * an error.
+ * Returns: a new #GdaConnection if connection opening was sucessfull or %NULL if there was an error.
*/
GdaConnection *
gda_connection_open_from_string (const gchar *provider_name, const gchar *cnc_string, const gchar *auth_string,
Modified: trunk/libgda/gda-data-model.c
==============================================================================
--- trunk/libgda/gda-data-model.c (original)
+++ trunk/libgda/gda-data-model.c Fri Mar 21 21:07:20 2008
@@ -2088,7 +2088,7 @@
GdaColumn *gdacol;
GType coltype;
-#ifdef GDA_DEBUG
+#ifdef GDA_DEBUG_NO
{
GdaColumn *col = gda_data_model_describe_column (model, i);
g_print ("Model col %d has type %s\n", i, gda_g_type_to_string (gda_column_get_g_type (col)));
Modified: trunk/libgda/information_schema.xml
==============================================================================
--- trunk/libgda/information_schema.xml (original)
+++ trunk/libgda/information_schema.xml Fri Mar 21 21:07:20 2008
@@ -267,13 +267,14 @@
<column name="trigger_catalog" pkey="TRUE"/>
<column name="trigger_schema" pkey="TRUE"/>
<column name="trigger_name" pkey="TRUE"/>
- <column name="event_manipulation" pkey="TRUE"/>
- <column name="event_object_catalog" pkey="TRUE"/>
- <column name="event_object_schema" pkey="TRUE"/>
- <column name="event_object_table" pkey="TRUE"/>
- <column name="action_statement" nullok="TRUE"/>
- <column name="action_orientation"/>
- <column name="condition_timing"/>
+ <column name="event_manipulation" pkey="TRUE" descr="Event that fires the trigger (INSERT, UPDATE, or DELETE)"/>
+ <column name="event_object_catalog" pkey="TRUE" descr="Name of the database that contains the table that the trigger is defined on"/>
+ <column name="event_object_schema" pkey="TRUE" descr="Name of the schema that contains the table that the trigger is defined on"/>
+ <column name="event_object_table" pkey="TRUE" descr="Name of the table that the trigger is defined on"/>
+
+ <column name="action_statement" nullok="TRUE" descr="Statement that is executed by the trigger"/>
+ <column name="action_orientation" descr="Identifies whether the trigger fires once for each processed row or once for each statement (ROW or STATEMENT)"/>
+ <column name="condition_timing" descr="Time at which the trigger fires (BEFORE or AFTER)"/>
<column name="trigger_comments" nullok="TRUE"/>
<column name="trigger_short_name"/>
<column name="trigger_full_name"/>
Added: trunk/libgda/sql-parser/LemonPatch
==============================================================================
--- (empty file)
+++ trunk/libgda/sql-parser/LemonPatch Fri Mar 21 21:07:20 2008
@@ -0,0 +1,114 @@
+--- lemon.c
++++ lemon.c
+@@ -263,6 +263,8 @@
+ char *vardest; /* Code for the default non-terminal destructor */
+ int vardestln; /* Line number for default non-term destructor code*/
+ char *filename; /* Name of the input file */
++ char *base_filename; /* Name of the input file, without the path part */
++ char *tmplname; /* Name of the template file */
+ char *outname; /* Name of the current output file */
+ char *tokenprefix; /* A prefix added to token names in the .h file */
+ int nconflict; /* Number of parsing conflicts */
+@@ -1393,6 +1395,7 @@
+ static int quiet = 0;
+ static int statistics = 0;
+ static int mhflag = 0;
++ static int local_out_dir = 0;
+ static struct s_options options[] = {
+ {OPT_FLAG, "b", (char*)&basisflag, "Print only the basis in report."},
+ {OPT_FLAG, "c", (char*)&compress, "Don't compress the action table."},
+@@ -1402,19 +1405,21 @@
+ {OPT_FLAG, "q", (char*)&quiet, "(Quiet) Don't print the report file."},
+ {OPT_FLAG, "s", (char*)&statistics,
+ "Print parser stats to standard output."},
++ {OPT_FLAG, "d", (char*)&local_out_dir, "Output files in the current directory."},
+ {OPT_FLAG, "x", (char*)&version, "Print the version number."},
+ {OPT_FLAG,0,0,0}
+ };
+ int i;
+ struct lemon lem;
++ char *def_tmpl_name = "lempar.c";
+
+ OptInit(argv,options,stderr);
+ if( version ){
+ printf("Lemon version 1.0\n");
+ exit(0);
+ }
+- if( OptNArgs()!=1 ){
+- fprintf(stderr,"Exactly one filename argument is required.\n");
++ if( (OptNArgs() != 1) && (OptNArgs() != 2) ){
++ fprintf(stderr,"Usage: %s file.y [path to lempar.c file].\n", argv[0]);
+ exit(1);
+ }
+ memset(&lem, 0, sizeof(lem));
+@@ -1426,6 +1431,21 @@
+ State_init();
+ lem.argv0 = argv[0];
+ lem.filename = OptArg(0);
++ if (local_out_dir) {
++ char *ptr;
++ lem.base_filename = malloc (sizeof (char) * strlen (lem.filename) + 1);
++ memcpy (lem.base_filename, lem.filename, sizeof (char) * strlen (lem.filename) + 1);
++#ifdef __WIN32__
++ for (ptr = lem.base_filename + strlen (lem.filename) - 1; (ptr > lem.base_filename) && (*ptr != '\\'); ptr--);
++#else
++ for (ptr = lem.base_filename + strlen (lem.filename) - 1; (ptr > lem.base_filename) && (*ptr != '/'); ptr--);
++#endif
++ if (ptr > lem.base_filename)
++ lem.base_filename = ptr + 1;
++ }
++ else
++ lem.base_filename = OptArg(0);
++ lem.tmplname = (OptNArgs() == 2) ? OptArg(1) : def_tmpl_name;
+ lem.basisflag = basisflag;
+ Symbol_new("$");
+ lem.errsym = Symbol_new("error");
+@@ -2667,12 +2687,12 @@
+ char *name;
+ char *cp;
+
+- name = malloc( strlen(lemp->filename) + strlen(suffix) + 5 );
++ name = malloc( strlen(lemp->base_filename) + strlen(suffix) + 5 );
+ if( name==0 ){
+ fprintf(stderr,"Can't allocate space for a filename.\n");
+ exit(1);
+ }
+- strcpy(name,lemp->filename);
++ strcpy(name,lemp->base_filename);
+ cp = strrchr(name,'.');
+ if( cp ) *cp = 0;
+ strcat(name,suffix);
+@@ -3008,7 +3028,6 @@
+ PRIVATE FILE *tplt_open(lemp)
+ struct lemon *lemp;
+ {
+- static char templatename[] = "lempar.c";
+ char buf[1000];
+ FILE *in;
+ char *tpltname;
+@@ -3022,20 +3041,20 @@
+ }
+ if( access(buf,004)==0 ){
+ tpltname = buf;
+- }else if( access(templatename,004)==0 ){
+- tpltname = templatename;
++ }else if( access(lemp->tmplname,004)==0 ){
++ tpltname = lemp->tmplname;
+ }else{
+- tpltname = pathsearch(lemp->argv0,templatename,0);
++ tpltname = pathsearch(lemp->argv0,lemp->tmplname,0);
+ }
+ if( tpltname==0 ){
+ fprintf(stderr,"Can't find the parser driver template file \"%s\".\n",
+- templatename);
++ lemp->tmplname);
+ lemp->errorcnt++;
+ return 0;
+ }
+ in = fopen(tpltname,"rb");
+ if( in==0 ){
+- fprintf(stderr,"Can't open the template file \"%s\".\n",templatename);
++ fprintf(stderr,"Can't open the template file \"%s\".\n",lemp->tmplname);
+ lemp->errorcnt++;
+ return 0;
+ }
Modified: trunk/libgda/sql-parser/Makefile.am
==============================================================================
--- trunk/libgda/sql-parser/Makefile.am (original)
+++ trunk/libgda/sql-parser/Makefile.am Fri Mar 21 21:07:20 2008
@@ -7,16 +7,16 @@
$(LIBGDA_CFLAGS)
lemon$(EXEEXT_FOR_BUILD): lemon.c
- $(CC_FOR_BUILD) -o lemon$(EXEEXT_FOR_BUILD) lemon.c
+ $(CC_FOR_BUILD) -o lemon$(EXEEXT_FOR_BUILD) $(srcdir)/lemon.c
gen_def$(EXEEXT_FOR_BUILD): gen_def.c
- $(CC_FOR_BUILD) -o gen_def$(EXEEXT_FOR_BUILD) gen_def.c
+ $(CC_FOR_BUILD) -o gen_def$(EXEEXT_FOR_BUILD) -DSRCDIR=\"$(srcdir)\" $(srcdir)/gen_def.c
parser.c parser.h: parser.y lemon$(EXEEXT_FOR_BUILD)
- - ./lemon$(EXEEXT_FOR_BUILD) parser.y
+ - ./lemon$(EXEEXT_FOR_BUILD) -q -d $(srcdir)/parser.y $(srcdir)/lempar.c
delimiter.c delimiter.h: delimiter.y lemon$(EXEEXT_FOR_BUILD)
- ./lemon$(EXEEXT_FOR_BUILD) delimiter.y
+ ./lemon$(EXEEXT_FOR_BUILD) -q -d $(srcdir)/delimiter.y $(srcdir)/lempar.c
token_types.h: gen_def$(EXEEXT_FOR_BUILD) delimiter.h parser.h
./gen_def$(EXEEXT_FOR_BUILD) > token_types.h
@@ -63,7 +63,7 @@
gda-statement-struct-unknown.c \
gda-statement-struct-util.c
-EXTRA_DIST= parser.y delimiter.y lemon.c lempar.c gen_def.c
+EXTRA_DIST= parser.y delimiter.y lemon.c lempar.c gen_def.c parser_tokens.h
CLEANFILES = parser.h parser.c parser.out delimiter.h delimiter.c delimiter.out token_types.h \
lemon$(EXEEXT_FOR_BUILD) gen_def$(EXEEXT_FOR_BUILD)
Modified: trunk/libgda/sql-parser/gda-sql-parser.c
==============================================================================
--- trunk/libgda/sql-parser/gda-sql-parser.c (original)
+++ trunk/libgda/sql-parser/gda-sql-parser.c Fri Mar 21 21:07:20 2008
@@ -988,8 +988,8 @@
GValue *retval = NULL;
gint consumed_chars = 1;
- /* safe init */
- parser->priv->context->token_type = L_ILLEGAL;
+ /* init to capture non treaded cases */
+ parser->priv->context->token_type = G_MININT;
if (!*z) {
parser->priv->context->token_type = L_END_OF_FILE;
@@ -1049,20 +1049,19 @@
if (parser->priv->mode != GDA_SQL_PARSER_MODE_DELIMIT) {
parser->priv->context->token_type = L_PLUS;
consumed_chars = 1;
- break;
}
+ break;
case '*':
if (z[1] == '/') {
parser->priv->context->token_type = L_RSBRACKET;
consumed_chars = 2;
parser->priv->context->in_param_spec = FALSE;
- break;
}
else {
parser->priv->context->token_type = L_STAR;
consumed_chars = 1;
- break;
}
+ break;
case '%':
if (parser->priv->mode != GDA_SQL_PARSER_MODE_DELIMIT) {
parser->priv->context->token_type = L_REM;
@@ -1074,7 +1073,6 @@
if (z[1] != '*' || z[2] == 0) {
parser->priv->context->token_type = L_SLASH;
consumed_chars = 1;
- break;
}
}
else if (z[1] == '*') {
@@ -1082,25 +1080,28 @@
parser->priv->context->token_type = L_LSBRACKET;
consumed_chars = 2;
parser->priv->context->in_param_spec = TRUE;
- break;
}
+ break;
case '=':
if (parser->priv->mode != GDA_SQL_PARSER_MODE_DELIMIT) {
parser->priv->context->token_type = L_EQ;
consumed_chars = 1 + (z[1] == '=');
- break;
}
+ break;
case '<':
if ((c = z[1]) == '=') {
parser->priv->context->token_type = L_LEQ;
consumed_chars = 2;
- } else if (c == '>') {
+ }
+ else if (c == '>') {
parser->priv->context->token_type = L_DIFF;
consumed_chars = 2;
- } else if (c== '<') {
+ }
+ else if (c== '<') {
parser->priv->context->token_type = L_LSHIFT;
consumed_chars = 2;
- } else {
+ }
+ else {
parser->priv->context->token_type = L_LT;
consumed_chars = 1;
}
@@ -1109,10 +1110,12 @@
if ((c = z[1]) == '=') {
parser->priv->context->token_type = L_GEQ;
consumed_chars = 2;
- } else if (c == '>') {
+ }
+ else if (c == '>') {
parser->priv->context->token_type = L_RSHIFT;
consumed_chars = 2;
- } else {
+ }
+ else {
parser->priv->context->token_type = L_GT;
consumed_chars = 1;
}
@@ -1133,8 +1136,8 @@
consumed_chars = 2;
}
}
- break;
}
+ break;
case '|':
if (parser->priv->mode != GDA_SQL_PARSER_MODE_DELIMIT) {
if (z[1] != '|') {
@@ -1144,13 +1147,12 @@
parser->priv->context->token_type = L_CONCAT;
consumed_chars = 2;
}
- break;
}
else {
parser->priv->context->token_type = L_RAWSTRING;
consumed_chars = 1;
- break;
}
+ break;
case ',':
parser->priv->context->token_type = L_COMMA;
consumed_chars = 1;
@@ -1159,8 +1161,8 @@
if (parser->priv->mode != GDA_SQL_PARSER_MODE_DELIMIT) {
parser->priv->context->token_type = L_BITAND;
consumed_chars = 1;
- break;
}
+ break;
case '~':
if (parser->priv->mode != GDA_SQL_PARSER_MODE_DELIMIT) {
if (z[1] == '*') {
@@ -1174,8 +1176,8 @@
parser->priv->context->token_type = L_BITNOT;
consumed_chars = 1;
}
- break;
}
+ break;
case '\'':
case '"': {
char delim = z[0];
@@ -1242,8 +1244,8 @@
parser->priv->context->token_type = L_SIMPLEPARAM;
retval = token_as_string (parser->priv->context->next_token_start + 1, i - 1);
consumed_chars = i;
- break;
}
+ break;
case '#': {
if (z[1] == '#') {
for (i=2; (z[i]) && (IdChar (z[i]) || (z[i] == '+') || (z[i] == '-') || (z[i] == '.') || (z[i] == ':')) &&
@@ -1290,7 +1292,6 @@
}
i++;
}
- break; /* case */
}
}
else if (parser->priv->flavour == GDA_SQL_PARSER_FLAVOUR_SQLITE) {
@@ -1298,21 +1299,19 @@
parser->priv->context->token_type = L_SIMPLEPARAM;
retval = token_as_string (parser->priv->context->next_token_start + 1, i - 1);
consumed_chars = i;
- break;
}
+ break;
case '@':
case ':':
- if (parser->priv->flavour == GDA_SQL_PARSER_FLAVOUR_SQLITE) {
+ if (z[1] == ':') {
+ parser->priv->context->token_type = L_PGCAST;
+ consumed_chars = 2;
+ }
+ else if (parser->priv->flavour == GDA_SQL_PARSER_FLAVOUR_SQLITE) {
for(i=1; isalnum(z[i]) || (z[i] == '_'); i++){}
parser->priv->context->token_type = L_SIMPLEPARAM;
retval = token_as_string (parser->priv->context->next_token_start + 1, i - 1);
consumed_chars = i;
- break;
- }
- else if ((parser->priv->flavour == GDA_SQL_PARSER_FLAVOUR_POSTGRESQL) && (z[1] == ':')) {
- parser->priv->context->token_type = L_PGCAST;
- consumed_chars = 2;
- break;
}
break;
#ifndef SQLITE_OMIT_BLOB_LITERAL
@@ -1333,18 +1332,22 @@
}
if ( c ) i++;
consumed_chars = i;
- break;
}
- /* Otherwise fall through to the next case */
+ break;
}
#endif
- default:
+ default:
+ break;
+ }
+
+ if (parser->priv->context->token_type == G_MININT) {
+ /* now treat non treated cases */
if ((parser->priv->mode != GDA_SQL_PARSER_MODE_DELIMIT) && (! parser->priv->context->in_param_spec)) {
- if (!IdChar (*z))
- break;
- for (i=1; IdChar (z[i]); i++){}
- parser->priv->context->token_type = keywordCode (parser, (char*)z, i);
- consumed_chars = i;
+ if (IdChar (*z)) {
+ for (i=1; IdChar (z[i]); i++){}
+ parser->priv->context->token_type = keywordCode (parser, (char*)z, i);
+ consumed_chars = i;
+ }
}
else {
if ((! parser->priv->context->in_param_spec) && IdChar (*z)) {
@@ -1355,47 +1358,52 @@
if (ttype != L_RAWSTRING) {
parser->priv->context->token_type = ttype;
consumed_chars = i;
- break;
}
}
- if (!strncmp (parser->priv->context->next_token_start, "name:", 5)) {
- parser->priv->context->next_token_start += 5;
- retval = getToken (parser);
- parser->priv->context->token_type = L_PNAME;
- consumed_chars = 0;
- }
- else if (!strncmp (parser->priv->context->next_token_start, "type:", 5)) {
- parser->priv->context->next_token_start += 5;
- retval = getToken (parser);
- parser->priv->context->token_type = L_PTYPE;
- consumed_chars = 0;
- }
- else if (!strncmp (parser->priv->context->next_token_start, "descr:", 6)) {
- parser->priv->context->next_token_start += 6;
- retval = getToken (parser);
- parser->priv->context->token_type = L_PDESCR;
- consumed_chars = 0;
- }
- else if (!strncmp (parser->priv->context->next_token_start, "nullok:", 7)) {
- parser->priv->context->next_token_start += 7;
- retval = getToken (parser);
- parser->priv->context->token_type = L_PNULLOK;
- consumed_chars = 0;
- }
- else {
- for (i=1; z[i] && (! isspace (z[i])) &&
- (z[i] != parser->priv->context->delimiter) && (z[i] != '*') &&
- (z[i] != '\'') && (z[i] != '"'); i++){}
- parser->priv->context->token_type = L_RAWSTRING;
- consumed_chars = i;
+ if (parser->priv->context->token_type == G_MININT) {
+ if (!strncmp (parser->priv->context->next_token_start, "name:", 5)) {
+ parser->priv->context->next_token_start += 5;
+ retval = getToken (parser);
+ parser->priv->context->token_type = L_PNAME;
+ consumed_chars = 0;
+ }
+ else if (!strncmp (parser->priv->context->next_token_start, "type:", 5)) {
+ parser->priv->context->next_token_start += 5;
+ retval = getToken (parser);
+ parser->priv->context->token_type = L_PTYPE;
+ consumed_chars = 0;
+ }
+ else if (!strncmp (parser->priv->context->next_token_start, "descr:", 6)) {
+ parser->priv->context->next_token_start += 6;
+ retval = getToken (parser);
+ parser->priv->context->token_type = L_PDESCR;
+ consumed_chars = 0;
+ }
+ else if (!strncmp (parser->priv->context->next_token_start, "nullok:", 7)) {
+ parser->priv->context->next_token_start += 7;
+ retval = getToken (parser);
+ parser->priv->context->token_type = L_PNULLOK;
+ consumed_chars = 0;
+ }
+ else {
+ for (i=1; z[i] && (! isspace (z[i])) &&
+ (z[i] != parser->priv->context->delimiter) && (z[i] != '*') &&
+ (z[i] != '\'') && (z[i] != '"'); i++){}
+ parser->priv->context->token_type = L_RAWSTRING;
+ consumed_chars = i;
+ }
}
}
}
- if (!retval)
- retval = token_as_string (parser->priv->context->next_token_start, consumed_chars);
+ /* fallback for the token type */
+ if (parser->priv->context->token_type == G_MININT)
+ parser->priv->context->token_type = L_ILLEGAL;
+ if (!retval)
+ retval = token_as_string (parser->priv->context->next_token_start, consumed_chars)
+;
tok_end:
parser->priv->context->last_token_start = parser->priv->context->next_token_start;
parser->priv->context->next_token_start += consumed_chars;
Modified: trunk/libgda/sql-parser/gen_def.c
==============================================================================
--- trunk/libgda/sql-parser/gen_def.c (original)
+++ trunk/libgda/sql-parser/gen_def.c Fri Mar 21 21:07:20 2008
@@ -63,11 +63,21 @@
FILE *fd_delim;
HashEntry *illegal_entry;
HashEntry *rawstring_entry;
+ char *file_imposed;
memset (entries, 0, sizeof (entries));
- fd_imposed = fopen (IMPOSED_HEADER, "r");
+#ifdef SRCDIR
+ #ifdef __WIN32__
+ file_imposed = SRCDIR "\\" IMPOSED_HEADER;
+ #else
+ file_imposed = SRCDIR "/" IMPOSED_HEADER;
+ #endif
+#else
+ file_imposed = IMPOSED_HEADER;
+#endif
+ fd_imposed = fopen (file_imposed, "r");
if (!fd_imposed) {
- printf ("Can't open '%s':%s\n", IMPOSED_HEADER, strerror (errno));
+ printf ("Can't open '%s':%s\n", file_imposed, strerror (errno));
return 1;
}
fd_parser = fopen (PARSER_HEADER, "r");
Modified: trunk/libgda/sql-parser/lemon.c
==============================================================================
--- trunk/libgda/sql-parser/lemon.c (original)
+++ trunk/libgda/sql-parser/lemon.c Fri Mar 21 21:07:20 2008
@@ -263,6 +263,8 @@
char *vardest; /* Code for the default non-terminal destructor */
int vardestln; /* Line number for default non-term destructor code*/
char *filename; /* Name of the input file */
+ char *base_filename; /* Name of the input file, without the path part */
+ char *tmplname; /* Name of the template file */
char *outname; /* Name of the current output file */
char *tokenprefix; /* A prefix added to token names in the .h file */
int nconflict; /* Number of parsing conflicts */
@@ -1393,6 +1395,7 @@
static int quiet = 0;
static int statistics = 0;
static int mhflag = 0;
+ static int local_out_dir = 0;
static struct s_options options[] = {
{OPT_FLAG, "b", (char*)&basisflag, "Print only the basis in report."},
{OPT_FLAG, "c", (char*)&compress, "Don't compress the action table."},
@@ -1402,19 +1405,21 @@
{OPT_FLAG, "q", (char*)&quiet, "(Quiet) Don't print the report file."},
{OPT_FLAG, "s", (char*)&statistics,
"Print parser stats to standard output."},
+ {OPT_FLAG, "d", (char*)&local_out_dir, "Output files in the current directory."},
{OPT_FLAG, "x", (char*)&version, "Print the version number."},
{OPT_FLAG,0,0,0}
};
int i;
struct lemon lem;
+ char *def_tmpl_name = "lempar.c";
OptInit(argv,options,stderr);
if( version ){
printf("Lemon version 1.0\n");
exit(0);
}
- if( OptNArgs()!=1 ){
- fprintf(stderr,"Exactly one filename argument is required.\n");
+ if( (OptNArgs() != 1) && (OptNArgs() != 2) ){
+ fprintf(stderr,"Usage: %s file.y [path to lempar.c file].\n", argv[0]);
exit(1);
}
memset(&lem, 0, sizeof(lem));
@@ -1426,6 +1431,21 @@
State_init();
lem.argv0 = argv[0];
lem.filename = OptArg(0);
+ if (local_out_dir) {
+ char *ptr;
+ lem.base_filename = malloc (sizeof (char) * strlen (lem.filename) + 1);
+ memcpy (lem.base_filename, lem.filename, sizeof (char) * strlen (lem.filename) + 1);
+#ifdef __WIN32__
+ for (ptr = lem.base_filename + strlen (lem.filename) - 1; (ptr > lem.base_filename) && (*ptr != '\\'); ptr--);
+#else
+ for (ptr = lem.base_filename + strlen (lem.filename) - 1; (ptr > lem.base_filename) && (*ptr != '/'); ptr--);
+#endif
+ if (ptr > lem.base_filename)
+ lem.base_filename = ptr + 1;
+ }
+ else
+ lem.base_filename = OptArg(0);
+ lem.tmplname = (OptNArgs() == 2) ? OptArg(1) : def_tmpl_name;
lem.basisflag = basisflag;
Symbol_new("$");
lem.errsym = Symbol_new("error");
@@ -2667,12 +2687,12 @@
char *name;
char *cp;
- name = malloc( strlen(lemp->filename) + strlen(suffix) + 5 );
+ name = malloc( strlen(lemp->base_filename) + strlen(suffix) + 5 );
if( name==0 ){
fprintf(stderr,"Can't allocate space for a filename.\n");
exit(1);
}
- strcpy(name,lemp->filename);
+ strcpy(name,lemp->base_filename);
cp = strrchr(name,'.');
if( cp ) *cp = 0;
strcat(name,suffix);
@@ -3008,7 +3028,6 @@
PRIVATE FILE *tplt_open(lemp)
struct lemon *lemp;
{
- static char templatename[] = "lempar.c";
char buf[1000];
FILE *in;
char *tpltname;
@@ -3022,20 +3041,20 @@
}
if( access(buf,004)==0 ){
tpltname = buf;
- }else if( access(templatename,004)==0 ){
- tpltname = templatename;
+ }else if( access(lemp->tmplname,004)==0 ){
+ tpltname = lemp->tmplname;
}else{
- tpltname = pathsearch(lemp->argv0,templatename,0);
+ tpltname = pathsearch(lemp->argv0,lemp->tmplname,0);
}
if( tpltname==0 ){
fprintf(stderr,"Can't find the parser driver template file \"%s\".\n",
- templatename);
+ lemp->tmplname);
lemp->errorcnt++;
return 0;
}
in = fopen(tpltname,"rb");
if( in==0 ){
- fprintf(stderr,"Can't open the template file \"%s\".\n",templatename);
+ fprintf(stderr,"Can't open the template file \"%s\".\n",lemp->tmplname);
lemp->errorcnt++;
return 0;
}
Modified: trunk/libgda/sql-parser/parser.y
==============================================================================
--- trunk/libgda/sql-parser/parser.y (original)
+++ trunk/libgda/sql-parser/parser.y Fri Mar 21 21:07:20 2008
@@ -957,7 +957,7 @@
// Values: for all constants (G_TYPE_STRING GValue)
value(V) ::= NULL. {V = NULL;}
value(V) ::= STRING(S). {V = S;}
-value(V) ::= TEXTUAL(T). {V = T;}
+//value(V) ::= TEXTUAL(T). {V = T;}
value(V) ::= INTEGER(I). {V = I;}
value(V) ::= FLOAT(F). {V = F;}
@@ -987,6 +987,7 @@
nm(A) ::= ID(X). {A = X;}
// Fully qualified name
+fullname(A) ::= TEXTUAL(X). {A = X;}
fullname(A) ::= nm(X). {A = X;}
fullname(A) ::= nm(S) DOT nm(X). {gchar *str;
str = g_strdup_printf ("%s.%s", g_value_get_string (S), g_value_get_string (X));
Modified: trunk/libgda/sqlite/gda-sqlite.h
==============================================================================
--- trunk/libgda/sqlite/gda-sqlite.h (original)
+++ trunk/libgda/sqlite/gda-sqlite.h Fri Mar 21 21:07:20 2008
@@ -31,6 +31,9 @@
#ifdef HAVE_SQLITE
#include <sqlite3.h>
+ #if (SQLITE_VERSION_NUMBER < 3005000)
+ typedef sqlite_int64 sqlite3_int64;
+ #endif
#else
#include "sqlite-src/sqlite3.h"
#endif
@@ -46,7 +49,6 @@
GdaDataModel *aggregates_model;
} SqliteConnectionData;
-
/*
* Utility functions
*/
Modified: trunk/po/POTFILES.in
==============================================================================
--- trunk/po/POTFILES.in (original)
+++ trunk/po/POTFILES.in Fri Mar 21 21:07:20 2008
@@ -1,4 +1,3 @@
-doc/C/prov-writing.xml
libgda/gda-batch.c
libgda/gda-config.c
libgda/gda-connection.c
@@ -47,7 +46,6 @@
libgda/sqlite/virtual/gda-virtual-provider.c
libgda/sqlite/virtual/gda-vprovider-data-model.c
libgda/sqlite/virtual/gda-vprovider-hub.c
-libgda/sqlite/virtual/libmain.c
libgda/sql-parser/gda-sql-parser.c
libgda/sql-parser/gda-statement-struct.c
libgda/sql-parser/gda-statement-struct-compound.c
@@ -63,67 +61,10 @@
providers/bdb/bdb_specs_dsn.xml.in
providers/bdb/gda-bdb-provider.c
providers/bdb/libmain.c
-providers/firebird/firebird_specs_dsn.xml.in
-providers/firebird/gda-firebird-blob-op.c
-providers/firebird/gda-firebird-provider.c
-providers/firebird/gda-firebird-recordset.c
-providers/firebird/libmain.c
-providers/freetds/freetds_specs_dsn.xml.in
-providers/freetds/gda-freetds-message.c
-providers/freetds/gda-freetds-provider.c
-providers/freetds/gda-freetds-recordset.c
-providers/freetds/gda-freetds-types.c
-providers/freetds/libmain.c
-providers/freetds/utils.c
-providers/ibmdb2/gda-ibmdb2-provider.c
-providers/ibmdb2/gda-ibmdb2-recordset.c
-providers/ibmdb2/gda-ibmdb2-types.c
-providers/ibmdb2/ibmdb2_specs_dsn.xml.in
-providers/ibmdb2/libmain.c
-providers/ibmdb2/utils.c
-providers/ldap/gda-ldap-provider.c
-providers/ldap/gda-ldap-recordset.c
-providers/ldap/ldap_specs_dsn.xml.in
-providers/ldap/libmain.c
providers/mdb/gda-mdb-provider.c
providers/mdb/libmain.c
providers/mdb/mdb_specs_dsn.xml.in
-providers/msql/gda-msql-provider.c
-providers/msql/gda-msql-recordset.c
-providers/msql/libmain.c
-providers/msql/msql_specs_dsn.xml.in
-providers/mysql/gda-mysql-ddl.c
-providers/mysql/gda-mysql-provider.c
-providers/mysql/gda-mysql-recordset.c
-providers/mysql/libmain.c
-providers/mysql/mysql_specs_add_column.xml.in
-providers/mysql/mysql_specs_create_db.xml.in
-providers/mysql/mysql_specs_create_index.xml.in
-providers/mysql/mysql_specs_create_table.xml.in
-providers/mysql/mysql_specs_create_view.xml.in
-providers/mysql/mysql_specs_drop_column.xml.in
-providers/mysql/mysql_specs_drop_db.xml.in
-providers/mysql/mysql_specs_drop_index.xml.in
-providers/mysql/mysql_specs_drop_table.xml.in
-providers/mysql/mysql_specs_drop_view.xml.in
-providers/mysql/mysql_specs_dsn.xml.in
-providers/mysql/mysql_specs_rename_table.xml.in
-providers/odbc/gda-odbc-provider.c
-providers/odbc/gda-odbc-recordset.c
-providers/odbc/libmain.c
-providers/odbc/odbc_specs_dsn.xml.in
-providers/odbc/utils.c
-providers/oracle/gda-oracle-blob-op.c
-providers/oracle/gda-oracle-ddl.c
-providers/oracle/gda-oracle-provider.c
-providers/oracle/gda-oracle-recordset.c
-providers/oracle/libmain.c
-providers/oracle/oracle_specs_drop_index.xml.in
-providers/oracle/oracle_specs_drop_table.xml.in
-providers/oracle/oracle_specs_dsn.xml.in
-providers/oracle/utils.c
providers/postgres/gda-postgres-blob-op.c
-providers/postgres/gda-postgres-cursor-recordset.c
providers/postgres/gda-postgres-ddl.c
providers/postgres/gda-postgres-handler-bin.c
providers/postgres/gda-postgres-meta.c
@@ -156,15 +97,6 @@
providers/sqlite/sqlite_specs_drop_view.xml.in
providers/sqlite/sqlite_specs_dsn.xml.in
providers/sqlite/sqlite_specs_rename_table.xml.in
-providers/sybase/gda-sybase-provider.c
-providers/sybase/gda-sybase-recordset.c
-providers/sybase/gda-sybase-types.c
-providers/sybase/libmain.c
-providers/sybase/sybase_specs_dsn.xml.in
-providers/sybase/utils.c
-providers/xbase/gda-xbase-provider.c
-providers/xbase/libmain.c
-providers/xbase/xbase_specs_dsn.xml.in
testing/gda-test-blob.c
testing/gda-test-connection.c
tools/command-exec.c
Modified: trunk/po/POTFILES.skip
==============================================================================
--- trunk/po/POTFILES.skip (original)
+++ trunk/po/POTFILES.skip Fri Mar 21 21:07:20 2008
@@ -1,3 +1,6 @@
+doc/C/prov-writing.xml
+libgda/sqlite/sql-parser.c/lemon.c
+libgda/sqlite/sql-parser.c/lempar.c
libgda/sqlite/sqlite-src/sqlite3.c
providers/skel-implementation/capi/capi_specs_create_table.xml.in
providers/skel-implementation/capi/capi_specs_dsn.xml.in
Modified: trunk/providers/bdb/Makefile.am
==============================================================================
--- trunk/providers/bdb/Makefile.am (original)
+++ trunk/providers/bdb/Makefile.am Fri Mar 21 21:07:20 2008
@@ -10,6 +10,7 @@
$(BDB_CFLAGS)
libgda_bdb_la_SOURCES = \
+ gda-bdb.h \
gda-bdb-provider.c \
gda-bdb-provider.h \
libmain.c
Modified: trunk/providers/postgres/Makefile.am
==============================================================================
--- trunk/providers/postgres/Makefile.am (original)
+++ trunk/providers/postgres/Makefile.am Fri Mar 21 21:07:20 2008
@@ -9,10 +9,10 @@
# parser generation
parser.c parser.h: parser.y $(top_builddir)/libgda/sql-parser/lemon$(EXEEXT_FOR_BUILD)
- - $(top_builddir)/libgda/sql-parser/lemon$(EXEEXT_FOR_BUILD) parser.y
+ - $(top_builddir)/libgda/sql-parser/lemon$(EXEEXT_FOR_BUILD) -q -d $(srcdir)/parser.y $(top_srcdir)/libgda/sql-parser/lempar.c
gen_def$(EXEEXT_FOR_BUILD): gen_def.c
- $(CC_FOR_BUILD) -o gen_def$(EXEEXT_FOR_BUILD) -DIMPOSED_HEADER=\""$(top_builddir)/libgda/sql-parser/parser_tokens.h"\" gen_def.c
+ $(CC_FOR_BUILD) -o gen_def$(EXEEXT_FOR_BUILD) -DIMPOSED_HEADER=\""$(top_srcdir)/libgda/sql-parser/parser_tokens.h"\" $(srcdir)/gen_def.c
postgres_token_types.h: gen_def$(EXEEXT_FOR_BUILD) parser.h
./gen_def$(EXEEXT_FOR_BUILD) > postgres_token_types.h
@@ -71,7 +71,7 @@
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libgda-postgres-4.0.pc
-EXTRA_DIST = $(xml_in_files) libgda-postgres-4.0.pc.in parser.y
+EXTRA_DIST = $(xml_in_files) libgda-postgres-4.0.pc.in parser.y gen_def.c
DISTCLEANFILES = $(xml_DATA)
CLEANFILES = parser.h parser.c parser.out postgres_token_types.h gen_def$(EXEEXT_FOR_BUILD)
Modified: trunk/providers/postgres/gda-postgres-meta.c
==============================================================================
--- trunk/providers/postgres/gda-postgres-meta.c (original)
+++ trunk/providers/postgres/gda-postgres-meta.c Fri Mar 21 21:07:20 2008
@@ -69,6 +69,8 @@
I_STMT_DOMAINS_CONSTRAINTS_ALL,
I_STMT_VIEWS_COLUMNS,
I_STMT_VIEWS_COLUMNS_ALL,
+ I_STMT_TRIGGERS,
+ I_STMT_TRIGGERS_ALL,
} InternalStatementItem;
@@ -164,7 +166,13 @@
"SELECT view_catalog, view_schema, view_name, table_catalog, table_schema, table_name, column_name FROM information_schema.view_column_usage WHERE view_catalog = ##cat::string AND view_schema = ##schema::string AND view_name = ##name::string",
/* I_STMT_VIEWS_COLUMNS_ALL */
- "SELECT view_catalog, view_schema, view_name, table_catalog, table_schema, table_name, column_name FROM information_schema.view_column_usage"
+ "SELECT view_catalog, view_schema, view_name, table_catalog, table_schema, table_name, column_name FROM information_schema.view_column_usage",
+
+ /* I_STMT_TRIGGERS */
+ "SELECT current_database()::information_schema.sql_identifier, n.nspname::information_schema.sql_identifier, t.tgname::information_schema.sql_identifier, em.text::information_schema.character_data, current_database()::information_schema.sql_identifier, n.nspname::information_schema.sql_identifier, c.relname::information_schema.sql_identifier, \"substring\"(pg_get_triggerdef(t.oid), \"position\"(\"substring\"(pg_get_triggerdef(t.oid), 48), 'EXECUTE PROCEDURE'::text) + 47)::information_schema.character_data AS action_statement, CASE WHEN (t.tgtype::integer & 1) = 1 THEN 'ROW'::text ELSE 'STATEMENT'::text END::information_schema.character_data AS action_orientation, CASE WHEN (t.tgtype::integer & 2) = 2 THEN 'BEFORE'::text ELSE 'AFTER'::text END::information_schema.character_data AS condition_timing, pg_catalog.obj_description(t.oid), t.tgname, t.tgname FROM pg_namespace n, pg_class c, pg_trigger t, (( SELECT 4, 'INSERT' UNION ALL SELECT 8, 'DELETE') UNION ALL SELECT 16, 'UPDA
TE') em(num, text) WHERE n.oid = c.relnamespace AND c.oid = t.tgrelid AND (t.tgtype::integer & em.num) <> 0 AND NOT t.tgisconstraint AND NOT pg_is_other_temp_schema(n.oid) AND (pg_has_role(c.relowner, 'USAGE'::text) OR has_table_privilege(c.oid, 'INSERT'::text) OR has_table_privilege(c.oid, 'UPDATE'::text) OR has_table_privilege(c.oid, 'DELETE'::text) OR has_table_privilege(c.oid, 'REFERENCES'::text) OR has_table_privilege(c.oid, 'TRIGGER'::text)) AND current_database() = ##cat::string AND n.nspname = ##schema::string AND c.relname = ##name::string",
+
+ /* I_STMT_TRIGGERS_ALL */
+ "SELECT current_database()::information_schema.sql_identifier, n.nspname::information_schema.sql_identifier, t.tgname::information_schema.sql_identifier, em.text::information_schema.character_data, current_database()::information_schema.sql_identifier, n.nspname::information_schema.sql_identifier, c.relname::information_schema.sql_identifier, \"substring\"(pg_get_triggerdef(t.oid), \"position\"(\"substring\"(pg_get_triggerdef(t.oid), 48), 'EXECUTE PROCEDURE'::text) + 47)::information_schema.character_data AS action_statement, CASE WHEN (t.tgtype::integer & 1) = 1 THEN 'ROW'::text ELSE 'STATEMENT'::text END::information_schema.character_data AS action_orientation, CASE WHEN (t.tgtype::integer & 2) = 2 THEN 'BEFORE'::text ELSE 'AFTER'::text END::information_schema.character_data AS condition_timing, pg_catalog.obj_description(t.oid), t.tgname, t.tgname FROM pg_namespace n, pg_class c, pg_trigger t, (( SELECT 4, 'INSERT' UNION ALL SELECT 8, 'DELETE') UNION ALL SELECT 16, 'UPDA
TE') em(num, text) WHERE n.oid = c.relnamespace AND c.oid = t.tgrelid AND (t.tgtype::integer & em.num) <> 0 AND NOT t.tgisconstraint AND NOT pg_is_other_temp_schema(n.oid) AND (pg_has_role(c.relowner, 'USAGE'::text) OR has_table_privilege(c.oid, 'INSERT'::text) OR has_table_privilege(c.oid, 'UPDATE'::text) OR has_table_privilege(c.oid, 'DELETE'::text) OR has_table_privilege(c.oid, 'REFERENCES'::text) OR has_table_privilege(c.oid, 'TRIGGER'::text))"
};
/*
@@ -922,8 +930,17 @@
_gda_postgres_meta__triggers (GdaServerProvider *prov, GdaConnection *cnc,
GdaMetaStore *store, GdaMetaContext *context, GError **error)
{
- TO_IMPLEMENT;
- return TRUE;
+ GdaDataModel *model;
+ gboolean retval;
+
+ model = gda_connection_statement_execute_select (cnc, internal_stmt[I_STMT_TRIGGERS_ALL], NULL,
+ error);
+ if (!model)
+ return FALSE;
+ retval = gda_meta_store_modify_with_context (store, context, model, error);
+ g_object_unref (model);
+
+ return retval;
}
gboolean
@@ -932,8 +949,21 @@
const GValue *table_catalog, const GValue *table_schema,
const GValue *table_name)
{
- TO_IMPLEMENT;
- return TRUE;
+ GdaDataModel *model;
+ gboolean retval = TRUE;
+
+ gda_holder_set_value (gda_set_get_holder (i_set, "cat"), table_catalog);
+ gda_holder_set_value (gda_set_get_holder (i_set, "schema"), table_schema);
+ gda_holder_set_value (gda_set_get_holder (i_set, "name"), table_name);
+
+ model = gda_connection_statement_execute_select (cnc, internal_stmt[I_STMT_TABLES_CONSTRAINTS], i_set,
+ error);
+ if (!model)
+ return FALSE;
+ retval = gda_meta_store_modify_with_context (store, context, model, error);
+ g_object_unref (model);
+
+ return retval;
}
gboolean
Modified: trunk/providers/postgres/parser.y
==============================================================================
--- trunk/providers/postgres/parser.y (original)
+++ trunk/providers/postgres/parser.y Fri Mar 21 21:07:20 2008
@@ -958,7 +958,7 @@
// Values: for all constants (G_TYPE_STRING GValue)
value(V) ::= NULL. {V = NULL;}
value(V) ::= STRING(S). {V = S;}
-value(V) ::= TEXTUAL(T). {V = T;}
+//value(V) ::= TEXTUAL(T). {V = T;}
value(V) ::= INTEGER(I). {V = I;}
value(V) ::= FLOAT(F). {V = F;}
@@ -988,6 +988,7 @@
nm(A) ::= ID(X). {A = X;}
// Fully qualified name
+fullname(A) ::= TEXTUAL(X). {A = X;}
fullname(A) ::= nm(X). {A = X;}
fullname(A) ::= nm(S) DOT nm(X). {gchar *str;
str = g_strdup_printf ("%s.%s", g_value_get_string (S), g_value_get_string (X));
Modified: trunk/providers/prepare_provider_sources.sh
==============================================================================
--- trunk/providers/prepare_provider_sources.sh (original)
+++ trunk/providers/prepare_provider_sources.sh Fri Mar 21 21:07:20 2008
@@ -57,4 +57,4 @@
#
# adaptating Makefile.am files
#
-cat Makefile.am | sed -e 's/^#xml_DATA/xml_DATA/' -e 's/^#provider_LTLIBRARIES/provider_LTLIBRARIES/' -e 's/^#pkgconfig_DATA/pkgconfig_DATA/' -e '/^noinst_/d' > Makefile.am.tmp && mv Makefile.am.tmp Makefile.am
+cat Makefile.am | sed -e 's/^#xml_DATA/xml_DATA/' -e 's/^#provider_LTLIBRARIES/provider_LTLIBRARIES/' -e 's/^#pkgconfig_DATA/pkgconfig_DATA/' -e '/^noinst_/d' -e 's/noinst_DATA/xml_DATA/' > Makefile.am.tmp && mv Makefile.am.tmp Makefile.am
Modified: trunk/providers/skel-implementation/capi/Makefile.am
==============================================================================
--- trunk/providers/skel-implementation/capi/Makefile.am (original)
+++ trunk/providers/skel-implementation/capi/Makefile.am Fri Mar 21 21:07:20 2008
@@ -13,10 +13,10 @@
# parser generation
parser.c parser.h: parser.y $(top_builddir)/libgda/sql-parser/lemon$(EXEEXT_FOR_BUILD)
- - $(top_builddir)/libgda/sql-parser/lemon$(EXEEXT_FOR_BUILD) parser.y
+ - $(top_builddir)/libgda/sql-parser/lemon$(EXEEXT_FOR_BUILD) -q -d $(srcdir)/parser.y $(top_srcdir)/libgda/sql-parser/lempar.c
gen_def$(EXEEXT_FOR_BUILD): gen_def.c
- $(CC_FOR_BUILD) -o gen_def$(EXEEXT_FOR_BUILD) -DIMPOSED_HEADER=\""$(top_builddir)/libgda/sql-parser/parser_tokens.h"\" gen_def.c
+ $(CC_FOR_BUILD) -o gen_def$(EXEEXT_FOR_BUILD) -DIMPOSED_HEADER=\""$(top_srcdir)/libgda/sql-parser/parser_tokens.h"\" $(srcdir)/gen_def.c
capi_token_types.h: gen_def$(EXEEXT_FOR_BUILD) parser.h
./gen_def$(EXEEXT_FOR_BUILD) > capi_token_types.h
@@ -32,6 +32,8 @@
gda-capi-parser.h \
gda-capi-provider.c \
gda-capi-provider.h \
+ gda-capi-pstmt.h \
+ gda-capi-pstmt.c \
gda-capi-meta.c \
gda-capi-meta.h \
gda-capi-recordset.c \
@@ -61,7 +63,7 @@
#pkgconfig_DATA = libgda-capi-4.0.pc
noinst_DATA += libgda-capi-4.0.pc
-EXTRA_DIST = $(xml_in_files) libgda-capi-4.0.pc.in parser.y
-DISTCLEANFILES = $(xml_DATA)
+EXTRA_DIST = $(xml_in_files) libgda-capi-4.0.pc.in parser.y gen_def.c
+DISTCLEANFILES = $(noinst_DATA)
CLEANFILES = parser.h parser.c parser.out capi_token_types.h gen_def$(EXEEXT_FOR_BUILD)
Modified: trunk/providers/skel-implementation/models/Makefile.am
==============================================================================
--- trunk/providers/skel-implementation/models/Makefile.am (original)
+++ trunk/providers/skel-implementation/models/Makefile.am Fri Mar 21 21:07:20 2008
@@ -33,5 +33,5 @@
noinst_DATA += libgda-models-4.0.pc
EXTRA_DIST = $(xml_in_files) libgda-models-4.0.pc.in
-DISTCLEANFILES = $(xml_DATA)
+DISTCLEANFILES = $(noinst_DATA)
Modified: trunk/tests/meta-store/Makefile.am
==============================================================================
--- trunk/tests/meta-store/Makefile.am (original)
+++ trunk/tests/meta-store/Makefile.am Fri Mar 21 21:07:20 2008
@@ -5,8 +5,7 @@
$(LIBGDA_CFLAGS) \
-DROOT_DIR=\""$(top_srcdir)"\"
-TESTS = check_meta_store_memory check_meta_store_sqlite check_meta_store_postgresql check_meta_store_mysql
-check_PROGRAMS = check_meta_store_memory check_meta_store_sqlite check_meta_store_postgresql check_meta_store_mysql
+noinst_PROGRAMS = check_meta_store_memory check_meta_store_sqlite check_meta_store_postgresql check_meta_store_mysql
common_sources = common.c common.h
Modified: trunk/tests/meta-store/common.c
==============================================================================
--- trunk/tests/meta-store/common.c (original)
+++ trunk/tests/meta-store/common.c Fri Mar 21 21:07:20 2008
@@ -273,6 +273,7 @@
};
gchar *view_names [] = {
"_all_types",
+ "_detailled_fk"
};
GdaConnection *cnc = gda_meta_store_get_internal_connection (store);
@@ -450,7 +451,7 @@
TEST_HEADER;
/* insert 1st part of the domains */
- import = common_load_csv_file ("data_domains.csv", 4, "gint", 5, "gint", 12, "gint", 13, "gint", 19, "boolean", -1);
+ import = common_load_csv_file ("data_domains.csv", 5, "gint", 6, "gint", 13, "gint", 14, "gint", 19, "boolean", -1);
common_declare_expected_insertions_from_model (TNAME, import);
TEST_MODIFY (store, TNAME, import, NULL, &error, NULL);
TEST_END (import);
@@ -460,7 +461,7 @@
g_value_set_string (v1 = gda_value_new (G_TYPE_STRING), "meta");
g_value_set_string (v2 = gda_value_new (G_TYPE_STRING), "information_schema");
g_value_set_string (v3 = gda_value_new (G_TYPE_STRING), "sql_identifier");
- import = common_load_csv_file ("data_domains_1.csv", 4, "gint", 5, "gint", 12, "gint", 13, "gint", 19, "boolean", -1);
+ import = common_load_csv_file ("data_domains_1.csv", 5, "gint", 6, "gint", 13, "gint", 14, "gint", 19, "boolean", -1);
common_declare_expected_insertions_from_model (TNAME, import);
TEST_MODIFY (store, TNAME, import,
"domain_catalog=##dc::string AND domain_schema=##ds::string AND domain_name=##dn::string", &error,
Modified: trunk/tests/meta-store/data_domains.csv
==============================================================================
--- trunk/tests/meta-store/data_domains.csv (original)
+++ trunk/tests/meta-store/data_domains.csv Fri Mar 21 21:07:20 2008
@@ -1,3 +1,3 @@
-"meta","information_schema","cardinal_number","pg_catalog.int4","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","32","0","NULL","NULL","NULL","information_schema.cardinal_number","information_schema.cardinal_number",FALSE,"postgres"
-"meta","information_schema","character_data","pg_catalog.varchar","NULL","1073741824","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","information_schema.character_data","information_schema.character_data",FALSE,"postgres"
-"meta","information_schema","time_stamp","pg_catalog.timestamptz","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","('now'::text)::timestamp(2) with time zone","NULL","NULL","information_schema.time_stamp","information_schema.time_stamp",FALSE,"postgres"
+"meta","information_schema","cardinal_number","pg_catalog.int4","gint","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","32","0","NULL","NULL","information_schema.cardinal_number","information_schema.cardinal_number",FALSE,"postgres"
+"meta","information_schema","character_data","pg_catalog.varchar","gchararray","NULL","1073741824","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","information_schema.character_data","information_schema.character_data",FALSE,"postgres"
+"meta","information_schema","time_stamp","pg_catalog.timestamptz","gchararray","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","('now'::text)::timestamp(2) with time zone","NULL","NULL","information_schema.time_stamp","information_schema.time_stamp",FALSE,"postgres"
Modified: trunk/tests/meta-store/data_domains_1.csv
==============================================================================
--- trunk/tests/meta-store/data_domains_1.csv (original)
+++ trunk/tests/meta-store/data_domains_1.csv Fri Mar 21 21:07:20 2008
@@ -1 +1 @@
-"meta","information_schema","sql_identifier","pg_catalog.varchar","NULL","1073741824","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","information_schema.sql_identifier","information_schema.sql_identifier",FALSE,"postgres"
+"meta","information_schema","sql_identifier","pg_catalog.varchar","gchararray", "NULL","1073741824","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","information_schema.sql_identifier","information_schema.sql_identifier",FALSE,"postgres"
Modified: trunk/tests/parser/testdata.xml
==============================================================================
--- trunk/tests/parser/testdata.xml (original)
+++ trunk/tests/parser/testdata.xml Fri Mar 21 21:07:20 2008
@@ -594,13 +594,13 @@
<test id="2007">
<sql>delete from s.my_table where ##id=f(4)</sql>
<expected>{"statements":[{"statement":{"sql":"delete from s.my_table where ##id=f(4)","stmt_type":"DELETE","contents":{"table":"s.my_table","condition":{"operation":{"operator":"=","operand0":{"value":null,"param_spec":{"name":"id","descr":null,"type":null,"is_param":true,"nullok":false}},"operand1":{"func":{"function_name":"f","function_args":[{"value":"4"}]}}}}}}}]}</expected>
- <expected mode="delim">{"statements":[{"statement":{"sql":"delete from s.my_table where ##id=f(4)","stmt_type":"UNKNOWN","contents":[{"value":"delete"},{"value":" "},{"value":"from"},{"value":" "},{"value":"s.my_table"},{"value":" "},{"value":"where"},{"value":" "},{"value":null,"param_spec":{"name":"id","descr":null,"type":null,"is_param":true,"nullok":false}},{"value":"="},{"value":"f(4)"}]}}]}</expected>
+ <expected mode="delim">{"statements":[{"statement":{"sql":"delete from s.my_table where ##id=f(4)","stmt_type":"UNKNOWN","contents":[{"value":"delete"},{"value":" "},{"value":"from"},{"value":" "},{"value":"s.my_table"},{"value":" "},{"value":"where"},{"value":" "},{"value":null,"param_spec":{"name":"id","descr":null,"type":null,"is_param":true,"nullok":false}},{"value":"=f(4)"}]}}]}</expected>
</test>
<test id="2008">
<sql>delete from s.my_table where ##id=(f(4))</sql>
<expected>{"statements":[{"statement":{"sql":"delete from s.my_table where ##id=(f(4))","stmt_type":"DELETE","contents":{"table":"s.my_table","condition":{"operation":{"operator":"=","operand0":{"value":null,"param_spec":{"name":"id","descr":null,"type":null,"is_param":true,"nullok":false}},"operand1":{"func":{"function_name":"f","function_args":[{"value":"4"}]}}}}}}}]}</expected>
- <expected mode="delim">{"statements":[{"statement":{"sql":"delete from s.my_table where ##id=(f(4))","stmt_type":"UNKNOWN","contents":[{"value":"delete"},{"value":" "},{"value":"from"},{"value":" "},{"value":"s.my_table"},{"value":" "},{"value":"where"},{"value":" "},{"value":null,"param_spec":{"name":"id","descr":null,"type":null,"is_param":true,"nullok":false}},{"value":"="},{"value":"("},{"value":"f(4))"}]}}]}</expected>
+ <expected mode="delim">{"statements":[{"statement":{"sql":"delete from s.my_table where ##id=(f(4))","stmt_type":"UNKNOWN","contents":[{"value":"delete"},{"value":" "},{"value":"from"},{"value":" "},{"value":"s.my_table"},{"value":" "},{"value":"where"},{"value":" "},{"value":null,"param_spec":{"name":"id","descr":null,"type":null,"is_param":true,"nullok":false}},{"value":"=(f(4))"}]}}]}</expected>
</test>
<test id="2009">
@@ -630,13 +630,13 @@
<test id="2013">
<sql>delete from s.my_table where a is b and c != d and e similar to f</sql>
<expected>{"statements":[{"statement":{"sql":"delete from s.my_table where a is b and c != d and e similar to f","stmt_type":"DELETE","contents":{"table":"s.my_table","condition":{"operation":{"operator":"AND","operand0":{"operation":{"operator":"IS","operand0":{"value":"a"},"operand1":{"value":"b"}}},"operand1":{"operation":{"operator":"!=","operand0":{"value":"c"},"operand1":{"value":"d"}}},"operand2":{"operation":{"operator":"SIMILAR TO","operand0":{"value":"e"},"operand1":{"value":"f"}}}}}}}}]}</expected>
- <expected mode="delim">{"statements":[{"statement":{"sql":"delete from s.my_table where a is b and c != d and e similar to f","stmt_type":"UNKNOWN","contents":[{"value":"delete"},{"value":" "},{"value":"from"},{"value":" "},{"value":"s.my_table"},{"value":" "},{"value":"where"},{"value":" "},{"value":"a"},{"value":" "},{"value":"is"},{"value":" "},{"value":"b"},{"value":" "},{"value":"and"},{"value":" "},{"value":"c"},{"value":" "},{"value":"!"},{"value":"="},{"value":" "},{"value":"d"},{"value":" "},{"value":"and"},{"value":" "},{"value":"e"},{"value":" "},{"value":"similar to"},{"value":" "},{"value":"f"}]}}]}</expected>
+ <expected mode="delim">{"statements":[{"statement":{"sql":"delete from s.my_table where a is b and c != d and e similar to f","stmt_type":"UNKNOWN","contents":[{"value":"delete"},{"value":" "},{"value":"from"},{"value":" "},{"value":"s.my_table"},{"value":" "},{"value":"where"},{"value":" "},{"value":"a"},{"value":" "},{"value":"is"},{"value":" "},{"value":"b"},{"value":" "},{"value":"and"},{"value":" "},{"value":"c"},{"value":" "},{"value":"!="},{"value":" "},{"value":"d"},{"value":" "},{"value":"and"},{"value":" "},{"value":"e"},{"value":" "},{"value":"similar to"},{"value":" "},{"value":"f"}]}}]}</expected>
</test>
<test id="2014" provider="PostgreSQL">
<sql>delete from s.my_table where a ~b and c~*d and e!~ f and g!~*h</sql>
<expected>{"statements":[{"statement":{"sql":"delete from s.my_table where a ~b and c~*d and e!~ f and g!~*h","stmt_type":"DELETE","contents":{"table":"s.my_table","condition":{"operation":{"operator":"AND","operand0":{"operation":{"operator":"RE","operand0":{"value":"a"},"operand1":{"value":"b"}}},"operand1":{"operation":{"operator":"CI_RE","operand0":{"value":"c"},"operand1":{"value":"d"}}},"operand2":{"operation":{"operator":"!RE","operand0":{"value":"e"},"operand1":{"value":"f"}}},"operand3":{"operation":{"operator":"!CI_RE","operand0":{"value":"g"},"operand1":{"value":"h"}}}}}}}}]}</expected>
- <expected mode="delim">{"statements":[{"statement":{"sql":"delete from s.my_table where a ~b and c~*d and e!~ f and g!~*h","stmt_type":"UNKNOWN","contents":[{"value":"delete"},{"value":" "},{"value":"from"},{"value":" "},{"value":"s.my_table"},{"value":" "},{"value":"where"},{"value":" "},{"value":"a"},{"value":" "},{"value":"~b and c~"},{"value":"*"},{"value":"d"},{"value":" "},{"value":"and"},{"value":" "},{"value":"e!~"},{"value":" "},{"value":"f"},{"value":" "},{"value":"and"},{"value":" "},{"value":"g!~"},{"value":"*"},{"value":"h"}]}}]}</expected>
+ <expected mode="delim">{"statements":[{"statement":{"sql":"delete from s.my_table where a ~b and c~*d and e!~ f and g!~*h","stmt_type":"UNKNOWN","contents":[{"value":"delete"},{"value":" "},{"value":"from"},{"value":" "},{"value":"s.my_table"},{"value":" "},{"value":"where"},{"value":" "},{"value":"a"},{"value":" "},{"value":"~b"},{"value":" "},{"value":"and"},{"value":" "},{"value":"c~"},{"value":"*"},{"value":"d"},{"value":" "},{"value":"and"},{"value":" "},{"value":"e!~"},{"value":" "},{"value":"f"},{"value":" "},{"value":"and"},{"value":" "},{"value":"g!~"},{"value":"*"},{"value":"h"}]}}]}</expected>
</test>
<test id="2015">
Modified: trunk/tests/providers/check_bdb.c
==============================================================================
--- trunk/tests/providers/check_bdb.c (original)
+++ trunk/tests/providers/check_bdb.c Fri Mar 21 21:07:20 2008
@@ -19,7 +19,7 @@
pinfo = gda_config_get_provider_info (PROVIDER);
if (!pinfo) {
g_warning ("Could not find provider information for %s", PROVIDER);
- return EXIT_FAILURE;
+ return EXIT_SUCCESS;
}
g_print ("Provider now tested: %s\n", pinfo->id);
Modified: trunk/tests/providers/check_firebird.c
==============================================================================
--- trunk/tests/providers/check_firebird.c (original)
+++ trunk/tests/providers/check_firebird.c Fri Mar 21 21:07:20 2008
@@ -19,7 +19,7 @@
pinfo = gda_config_get_provider_info (PROVIDER);
if (!pinfo) {
g_warning ("Could not find provider information for %s", PROVIDER);
- return EXIT_FAILURE;
+ return EXIT_SUCCESS;
}
g_print ("Provider now tested: %s\n", pinfo->id);
Modified: trunk/tests/providers/check_freetds.c
==============================================================================
--- trunk/tests/providers/check_freetds.c (original)
+++ trunk/tests/providers/check_freetds.c Fri Mar 21 21:07:20 2008
@@ -19,7 +19,7 @@
pinfo = gda_config_get_provider_info (PROVIDER);
if (!pinfo) {
g_warning ("Could not find provider information for %s", PROVIDER);
- return EXIT_FAILURE;
+ return EXIT_SUCCESS;
}
g_print ("Provider now tested: %s\n", pinfo->id);
Modified: trunk/tests/providers/check_ibmdb2.c
==============================================================================
--- trunk/tests/providers/check_ibmdb2.c (original)
+++ trunk/tests/providers/check_ibmdb2.c Fri Mar 21 21:07:20 2008
@@ -19,7 +19,7 @@
pinfo = gda_config_get_provider_info (PROVIDER);
if (!pinfo) {
g_warning ("Could not find provider information for %s", PROVIDER);
- return EXIT_FAILURE;
+ return EXIT_SUCCESS;
}
g_print ("Provider now tested: %s\n", pinfo->id);
Modified: trunk/tests/providers/check_ldap.c
==============================================================================
--- trunk/tests/providers/check_ldap.c (original)
+++ trunk/tests/providers/check_ldap.c Fri Mar 21 21:07:20 2008
@@ -19,7 +19,7 @@
pinfo = gda_config_get_provider_info (PROVIDER);
if (!pinfo) {
g_warning ("Could not find provider information for %s", PROVIDER);
- return EXIT_FAILURE;
+ return EXIT_SUCCESS;
}
g_print ("Provider now tested: %s\n", pinfo->id);
Modified: trunk/tests/providers/check_mdb.c
==============================================================================
--- trunk/tests/providers/check_mdb.c (original)
+++ trunk/tests/providers/check_mdb.c Fri Mar 21 21:07:20 2008
@@ -19,7 +19,7 @@
pinfo = gda_config_get_provider_info (PROVIDER);
if (!pinfo) {
g_warning ("Could not find provider information for %s", PROVIDER);
- return EXIT_FAILURE;
+ return EXIT_SUCCESS;
}
g_print ("Provider now tested: %s\n", pinfo->id);
Modified: trunk/tests/providers/check_msql.c
==============================================================================
--- trunk/tests/providers/check_msql.c (original)
+++ trunk/tests/providers/check_msql.c Fri Mar 21 21:07:20 2008
@@ -19,7 +19,7 @@
pinfo = gda_config_get_provider_info (PROVIDER);
if (!pinfo) {
g_warning ("Could not find provider information for %s", PROVIDER);
- return EXIT_FAILURE;
+ return EXIT_SUCCESS;
}
g_print ("Provider now tested: %s\n", pinfo->id);
Modified: trunk/tests/providers/check_mysql.c
==============================================================================
--- trunk/tests/providers/check_mysql.c (original)
+++ trunk/tests/providers/check_mysql.c Fri Mar 21 21:07:20 2008
@@ -19,7 +19,7 @@
pinfo = gda_config_get_provider_info (PROVIDER);
if (!pinfo) {
g_warning ("Could not find provider information for %s", PROVIDER);
- return EXIT_FAILURE;
+ return EXIT_SUCCESS;
}
g_print ("Provider now tested: %s\n", pinfo->id);
Modified: trunk/tests/providers/check_odbc.c
==============================================================================
--- trunk/tests/providers/check_odbc.c (original)
+++ trunk/tests/providers/check_odbc.c Fri Mar 21 21:07:20 2008
@@ -19,7 +19,7 @@
pinfo = gda_config_get_provider_info (PROVIDER);
if (!pinfo) {
g_warning ("Could not find provider information for %s", PROVIDER);
- return EXIT_FAILURE;
+ return EXIT_SUCCESS;
}
g_print ("Provider now tested: %s\n", pinfo->id);
Modified: trunk/tests/providers/check_oracle.c
==============================================================================
--- trunk/tests/providers/check_oracle.c (original)
+++ trunk/tests/providers/check_oracle.c Fri Mar 21 21:07:20 2008
@@ -19,7 +19,7 @@
pinfo = gda_config_get_provider_info (PROVIDER);
if (!pinfo) {
g_warning ("Could not find provider information for %s", PROVIDER);
- return EXIT_FAILURE;
+ return EXIT_SUCCESS;
}
g_print ("Provider now tested: %s\n", pinfo->id);
Modified: trunk/tests/providers/check_postgres.c
==============================================================================
--- trunk/tests/providers/check_postgres.c (original)
+++ trunk/tests/providers/check_postgres.c Fri Mar 21 21:07:20 2008
@@ -21,7 +21,7 @@
pinfo = gda_config_get_provider_info (PROVIDER);
if (!pinfo) {
g_warning ("Could not find provider information for %s", PROVIDER);
- return EXIT_FAILURE;
+ return EXIT_SUCCESS;
}
g_print ("Provider now tested: %s\n", pinfo->id);
Modified: trunk/tests/providers/check_sybase.c
==============================================================================
--- trunk/tests/providers/check_sybase.c (original)
+++ trunk/tests/providers/check_sybase.c Fri Mar 21 21:07:20 2008
@@ -19,7 +19,7 @@
pinfo = gda_config_get_provider_info (PROVIDER);
if (!pinfo) {
g_warning ("Could not find provider information for %s", PROVIDER);
- return EXIT_FAILURE;
+ return EXIT_SUCCESS;
}
g_print ("Provider now tested: %s\n", pinfo->id);
Modified: trunk/tests/providers/check_xbase.c
==============================================================================
--- trunk/tests/providers/check_xbase.c (original)
+++ trunk/tests/providers/check_xbase.c Fri Mar 21 21:07:20 2008
@@ -19,7 +19,7 @@
pinfo = gda_config_get_provider_info (PROVIDER);
if (!pinfo) {
g_warning ("Could not find provider information for %s", PROVIDER);
- return EXIT_FAILURE;
+ return EXIT_SUCCESS;
}
g_print ("Provider now tested: %s\n", pinfo->id);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]