[libgda] Honor the new SQL identifiers case sensitiveness flag in connections



commit 65261b071cda1ff1382d2048a25b2cdf2d8c4db5
Author: Vivien Malerba <malerba gnome-db org>
Date:   Thu Jul 23 20:51:15 2009 +0200

    Honor the new SQL identifiers case sensitiveness flag in connections
    
    * when rendering SQL from a GdaSqlStatement
    * when using the new GdaSqlBuilder API

 doc/C/libgda-4.0-sections.txt                  |    2 +-
 doc/C/tmpl/gda-sql-builder.sgml                |    6 +-
 libgda/gda-sql-builder.c                       |    5 +-
 libgda/gda-sql-builder.h                       |    2 +-
 libgda/gda-statement.c                         |   91 ++++++++++++++++--------
 libgda/sql-parser/gda-statement-struct-parts.c |   16 +++-
 libgda/sql-parser/gda-statement-struct-parts.h |    7 ++-
 libgda/sqlite/gda-sqlite-provider.c            |   58 ++++++++++++----
 providers/oracle/gda-oracle-provider.c         |   73 ++++++++++++++-----
 samples/SqlBuilder/example.c                   |   28 ++++---
 tests/test-sql-builder.c                       |   82 +++++++++++-----------
 tools/browser/browser-favorites.c              |   84 +++++++++++-----------
 12 files changed, 285 insertions(+), 169 deletions(-)
---
diff --git a/doc/C/libgda-4.0-sections.txt b/doc/C/libgda-4.0-sections.txt
index 997d65a..2b28b93 100644
--- a/doc/C/libgda-4.0-sections.txt
+++ b/doc/C/libgda-4.0-sections.txt
@@ -1663,7 +1663,7 @@ gda_sql_builder_get_sql_statement
 gda_sql_builder_set_table
 gda_sql_builder_add_field
 <SUBSECTION>
-gda_sql_builder_literal
+gda_sql_builder_ident
 gda_sql_builder_expr
 gda_sql_builder_param
 <SUBSECTION>
diff --git a/doc/C/tmpl/gda-sql-builder.sgml b/doc/C/tmpl/gda-sql-builder.sgml
index 73c6fa4..84b178f 100644
--- a/doc/C/tmpl/gda-sql-builder.sgml
+++ b/doc/C/tmpl/gda-sql-builder.sgml
@@ -25,12 +25,12 @@ Factory object for statements
   The following example builds the equivalent of the <![CDATA["name='joe' AND age >= ##ageparam::int"]]> expression:
   <programlisting><![CDATA[
 GdaSqlBuilder *b=...
-gda_sql_builder_literal (b, 1, "name"); // build the "name" literal with requested ID=1
+gda_sql_builder_ident (b, 1, "name"); // build the "name" SQL identifier with requested ID=1
 gda_sql_builder_expr (b, 2, NULL, G_TYPE_STRING, "joe"); // 'joe' expression, requested ID=2
 gda_sql_builder_cond2 (b, 3, GDA_SQL_OPERATOR_TYPE_EQ, 1, 2); // "name='joe'", requested ID=3
 
 gda_sql_builder_cond2 (b, 4, GDA_SQL_OPERATOR_TYPE_GT, // requested ID=4
-       gda_sql_builder_literal (b, 0, "age"), // build the "age" literal, no specific ID
+       gda_sql_builder_ident (b, 0, "age"), // build the "age" SQL identifier, no specific ID
        gda_sql_builder_param (b, 0, "ageparam", G_TYPE_INT, FALSE) // parameter, no specific ID
       );
 gda_sql_builder_cond2 (b, 5, GDA_SQL_OPERATOR_TYPE_AND, 3, 4); // whole expression, requested ID=5
@@ -99,7 +99,7 @@ gda_sql_builder_cond2 (b, 5, GDA_SQL_OPERATOR_TYPE_AND, 3, 4); // whole expressi
 @value_id: 
 
 
-<!-- ##### FUNCTION gda_sql_builder_literal ##### -->
+<!-- ##### FUNCTION gda_sql_builder_ident ##### -->
 <para>
 
 </para>
diff --git a/libgda/gda-sql-builder.c b/libgda/gda-sql-builder.c
index 24f3d5a..5b10a98 100644
--- a/libgda/gda-sql-builder.c
+++ b/libgda/gda-sql-builder.c
@@ -635,7 +635,7 @@ gda_sql_builder_expr (GdaSqlBuilder *builder, guint id, GdaDataHandler *dh, GTyp
 }
 
 /**
- * gda_sql_builder_literal
+ * gda_sql_builder_ident
  * @builder: a #GdaSqlBuilder object
  * @id: the requested ID, or 0 if to be determined by @builder
  * @string: a string
@@ -658,7 +658,7 @@ gda_sql_builder_expr (GdaSqlBuilder *builder, guint id, GdaDataHandler *dh, GTyp
  * Since: 4.2
  */
 guint
-gda_sql_builder_literal (GdaSqlBuilder *builder, guint id, const gchar *string)
+gda_sql_builder_ident (GdaSqlBuilder *builder, guint id, const gchar *string)
 {
 	g_return_val_if_fail (GDA_IS_SQL_BUILDER (builder), 0);
 	g_return_val_if_fail (builder->priv->main_stmt, 0);
@@ -668,6 +668,7 @@ gda_sql_builder_literal (GdaSqlBuilder *builder, guint id, const gchar *string)
 	if (string) {
 		expr->value = gda_value_new (G_TYPE_STRING);
 		g_value_set_string (expr->value, string);
+		expr->value_is_ident = (gpointer) 0x1;
 	}
 	
 	return add_part (builder, id, (GdaSqlAnyPart *) expr);
diff --git a/libgda/gda-sql-builder.h b/libgda/gda-sql-builder.h
index b5c8df1..b76d0f0 100644
--- a/libgda/gda-sql-builder.h
+++ b/libgda/gda-sql-builder.h
@@ -70,7 +70,7 @@ GdaStatement     *gda_sql_builder_get_statement (GdaSqlBuilder *builder, GError
 GdaSqlStatement  *gda_sql_builder_get_sql_statement (GdaSqlBuilder *builder, gboolean copy_it);
 
 /* Expression API */
-guint              gda_sql_builder_literal (GdaSqlBuilder *builder, guint id, const gchar *string);
+guint              gda_sql_builder_ident (GdaSqlBuilder *builder, guint id, const gchar *string);
 guint              gda_sql_builder_expr (GdaSqlBuilder *builder, guint id, GdaDataHandler *dh, GType type, ...);
 guint              gda_sql_builder_param (GdaSqlBuilder *builder, guint id, const gchar *param_name, GType type, gboolean nullok);
 
diff --git a/libgda/gda-statement.c b/libgda/gda-statement.c
index 2f4db6b..acf80e6 100644
--- a/libgda/gda-statement.c
+++ b/libgda/gda-statement.c
@@ -1292,7 +1292,8 @@ default_render_param_spec (GdaSqlParamSpec *pspec, GdaSqlExpr *expr, GdaSqlRende
 }
 
 static gchar *
-default_render_expr (GdaSqlExpr *expr, GdaSqlRenderingContext *context, gboolean *is_default, gboolean *is_null, GError **error)
+default_render_expr (GdaSqlExpr *expr, GdaSqlRenderingContext *context, gboolean *is_default,
+		     gboolean *is_null, GError **error)
 {
 	GString *string;
 	gchar *str = NULL;
@@ -1316,13 +1317,45 @@ default_render_expr (GdaSqlExpr *expr, GdaSqlRenderingContext *context, gboolean
 		if (!str) goto err;
 	}
 	else if (expr->value) {
-		str = gda_value_stringify (expr->value);
-		if (!str) goto err;
-		if (is_null && gda_value_is_null (expr->value))
-			*is_null = TRUE;
-		else if (is_default && (G_VALUE_TYPE (expr->value) == G_TYPE_STRING) && 
-			 !g_ascii_strcasecmp (g_value_get_string (expr->value), "default"))
-			*is_default = TRUE;
+		if (expr->value_is_ident && (G_VALUE_TYPE (expr->value) == G_TYPE_STRING) &&
+		    g_value_get_string (expr->value)) {
+			gchar **ids_array;
+			gint i;
+			GString *string = NULL;
+			GdaConnectionOptions cncoptions = 0;
+			if (context->cnc)
+				g_object_get (G_OBJECT (context->cnc), "options", &cncoptions, NULL);
+
+			ids_array = gda_sql_identifier_split (g_value_get_string (expr->value));
+			if (!ids_array) 
+				str = g_value_dup_string (expr->value);
+			else if (!(ids_array[0])) goto err;
+			else {
+				for (i = 0; ids_array[i]; i++) {
+					gchar *tmp;
+					if (!string)
+						string = g_string_new ("");
+					else
+						g_string_append_c (string, '.');
+					tmp = gda_sql_identifier_quote (ids_array[i], context->cnc,
+									context->provider, FALSE,
+					   cncoptions & GDA_CONNECTION_OPTIONS_SQL_IDENTIFIERS_CASE_SENSITIVE);
+					g_string_append (string, tmp);
+					g_free (tmp);
+				}
+				g_strfreev (ids_array);
+				str = g_string_free (string, FALSE);
+			}
+		}
+		else {
+			str = gda_value_stringify (expr->value);
+			if (!str) goto err;
+			if (is_null && gda_value_is_null (expr->value))
+				*is_null = TRUE;
+			else if (is_default && (G_VALUE_TYPE (expr->value) == G_TYPE_STRING) && 
+				 !g_ascii_strcasecmp (g_value_get_string (expr->value), "default"))
+				*is_default = TRUE;
+		}
 	}
 	else if (expr->func) {
 		str = context->render_function (GDA_SQL_ANY_PART (expr->func), context, error);
@@ -1383,7 +1416,12 @@ default_render_field (GdaSqlField *field, GdaSqlRenderingContext *context, GErro
 	/* can't have: field->field_name not a valid SQL identifier */
 	if (!gda_sql_any_part_check_structure (GDA_SQL_ANY_PART (field), error)) return NULL;
 
-	return g_strdup (field->field_name);
+	GdaConnectionOptions cncoptions = 0;
+	if (context->cnc)
+		g_object_get (G_OBJECT (context->cnc), "options", &cncoptions, NULL);
+	return gda_sql_identifier_quote (field->field_name, context->cnc, context->provider,
+					 FALSE,
+					 cncoptions & GDA_CONNECTION_OPTIONS_SQL_IDENTIFIERS_CASE_SENSITIVE);
 }
 
 static gchar *
@@ -1405,11 +1443,15 @@ default_render_table (GdaSqlTable *table, GdaSqlRenderingContext *context, GErro
 	
 	gint i;
 	GString *string;
+	GdaConnectionOptions cncoptions = 0;
+	if (context->cnc)
+		g_object_get (G_OBJECT (context->cnc), "options", &cncoptions, NULL);
 	string = g_string_new ("");
 	for (i = 0; ids_array [i]; i++) {
 		gchar *tmp;
 		tmp = gda_sql_identifier_quote (ids_array [i], context->cnc, context->provider,
-						FALSE, FALSE);
+						FALSE,
+						cncoptions & GDA_CONNECTION_OPTIONS_SQL_IDENTIFIERS_CASE_SENSITIVE);
 		g_free (ids_array [i]);
 		ids_array [i] = tmp;
 		if (i != 0)
@@ -1751,6 +1793,7 @@ default_render_select_target (GdaSqlSelectTarget *target, GdaSqlRenderingContext
 {
 	GString *string;
 	gchar *str;
+	gpointer tmp;
 
 	g_return_val_if_fail (target, NULL);
 	g_return_val_if_fail (GDA_SQL_ANY_PART (target)->type == GDA_SQL_ANY_SQL_SELECT_TARGET, NULL);
@@ -1763,29 +1806,15 @@ default_render_select_target (GdaSqlSelectTarget *target, GdaSqlRenderingContext
 		if (!str)
 			return NULL;
 		string = g_string_new (str);
+		g_free (str);
 	}
 	else {
-		gchar **ids_array;
-		ids_array = gda_sql_identifier_split (g_value_get_string (target->expr->value));
-		if (!ids_array) {
-			g_set_error (error, GDA_SQL_ERROR, GDA_SQL_STRUCTURE_CONTENTS_ERROR,
-				     "%s", _("Malformed expression in select target"));
-			return NULL;
-		}
-
-		gint i;
-		string = g_string_new ("");
-		for (i = 0; ids_array [i]; i++) {
-			gchar *tmp;
-			tmp = gda_sql_identifier_quote (ids_array [i], context->cnc, context->provider,
-							FALSE, FALSE);
-			g_free (ids_array [i]);
-			ids_array [i] = tmp;
-			if (i != 0)
-				g_string_append_c (string, '.');
-			g_string_append (string, ids_array [i]);
-		}
-		g_strfreev (ids_array);
+		tmp = target->expr->value_is_ident;
+		target->expr->value_is_ident = (gpointer) 0x1;
+		str = context->render_expr (target->expr, context, NULL, NULL, error);
+		target->expr->value_is_ident = tmp;
+		string = g_string_new (str);
+		g_free (str);
 	}
 
 	if (target->as)
diff --git a/libgda/sql-parser/gda-statement-struct-parts.c b/libgda/sql-parser/gda-statement-struct-parts.c
index 753b121..60e8b5a 100644
--- a/libgda/sql-parser/gda-statement-struct-parts.c
+++ b/libgda/sql-parser/gda-statement-struct-parts.c
@@ -81,7 +81,7 @@ gda_sql_expr_free (GdaSqlExpr *expr)
 	}
 	gda_sql_case_free (expr->case_s);
 	g_free (expr->cast_as);
-
+	expr->value_is_ident = (gpointer) 0x1;
 	g_free (expr);
 }
 
@@ -131,6 +131,8 @@ gda_sql_expr_copy (GdaSqlExpr *expr)
 
 	if (expr->cast_as)
 		copy->cast_as = g_strdup (expr->cast_as);
+
+	copy->value_is_ident = expr->value_is_ident;
 	return copy;
 }
 
@@ -201,6 +203,12 @@ gda_sql_expr_serialize (GdaSqlExpr *expr)
 		g_free (str);
 	}
 
+	if (expr->value_is_ident) {
+		str = _json_quote_string (expr->cast_as);
+		g_string_append (string, ",\"sqlident\":\"TRUE\"");
+		g_free (str);
+	}
+
 	g_string_append_c (string, '}');
 	str = string->str;
 	g_string_free (string, FALSE);
@@ -416,7 +424,7 @@ gda_sql_table_take_name (GdaSqlTable *table, GValue *value)
 
 /**
  * gda_sql_function_new
- * @parent: a #GdaSqlExpr structure
+ * @parent: a #GdaSqlAnyPart structure
  * 
  * Creates a new #GdaSqlFunction structure initated.
  *
@@ -568,7 +576,7 @@ gda_sql_function_take_args_list (GdaSqlFunction *function, GSList *args)
 
 /**
  * gda_sql_operation_new
- * @parent: a #GdaSqlExpr structure
+ * @parent: a #GdaSqlAnyPart structure
  * 
  * Creates a new #GdaSqlOperation structure and sets its parent to @parent.
  *
@@ -834,7 +842,7 @@ gda_sql_operation_operator_from_string (const gchar *op)
 
 /**
  * gda_sql_case_new
- * @parent: a #GdaSqlExpr structure
+ * @parent: a #GdaSqlAnyPart structure
  * 
  * Creates a new #GdaSqlCase structure and sets its parent to @parent.
  *
diff --git a/libgda/sql-parser/gda-statement-struct-parts.h b/libgda/sql-parser/gda-statement-struct-parts.h
index 8894e7f..5bdc893 100644
--- a/libgda/sql-parser/gda-statement-struct-parts.h
+++ b/libgda/sql-parser/gda-statement-struct-parts.h
@@ -55,8 +55,13 @@ struct _GdaSqlExpr {
 
 	gchar           *cast_as;
 
+	gpointer         value_is_ident; /* pointer to a boolean to keep ABI from 4.0.
+					  * Non NULL if @value represents an SQL identifier
+					  * Mem in _NOT_ allocated!
+					  */
+
+	/*< private >*/
 	/* Padding for future expansion */
-	gpointer         _gda_reserved1;
 	gpointer         _gda_reserved2;
 };
 
diff --git a/libgda/sqlite/gda-sqlite-provider.c b/libgda/sqlite/gda-sqlite-provider.c
index bebb910..e589d50 100644
--- a/libgda/sqlite/gda-sqlite-provider.c
+++ b/libgda/sqlite/gda-sqlite-provider.c
@@ -1504,20 +1504,52 @@ sqlite_render_expr (GdaSqlExpr *expr, GdaSqlRenderingContext *context,
 		if (!str) goto err;
 	}
 	else if (expr->value) {
-		str = gda_value_stringify (expr->value);
-		if (!str) goto err;
-		if (is_null && gda_value_is_null (expr->value))
-			*is_null = TRUE;
-		else if (is_default && (G_VALUE_TYPE (expr->value) == G_TYPE_STRING) && 
-			 !g_ascii_strcasecmp (g_value_get_string (expr->value), "default"))
-			*is_default = TRUE;
-		else if (!g_ascii_strcasecmp (str, "FALSE")) {
-			g_free (str);
-			str = g_strdup ("0");
+		if (expr->value_is_ident && (G_VALUE_TYPE (expr->value) == G_TYPE_STRING) &&
+		    g_value_get_string (expr->value)) {
+			gchar **ids_array;
+			gint i;
+			GString *string = NULL;
+			GdaConnectionOptions cncoptions = 0;
+			if (context->cnc)
+				g_object_get (G_OBJECT (context->cnc), "options", &cncoptions, NULL);
+
+			ids_array = gda_sql_identifier_split (g_value_get_string (expr->value));
+			if (!ids_array) 
+				str = g_value_dup_string (expr->value);
+			else if (!(ids_array[0])) goto err;
+			else {
+				for (i = 0; ids_array[i]; i++) {
+					gchar *tmp;
+					if (!string)
+						string = g_string_new ("");
+					else
+						g_string_append_c (string, '.');
+					tmp = gda_sql_identifier_quote (ids_array[i], context->cnc,
+									context->provider, FALSE,
+					   cncoptions & GDA_CONNECTION_OPTIONS_SQL_IDENTIFIERS_CASE_SENSITIVE);
+					g_string_append (string, tmp);
+					g_free (tmp);
+				}
+				g_strfreev (ids_array);
+				str = g_string_free (string, FALSE);
+			}
 		}
-		else if (!g_ascii_strcasecmp (str, "TRUE")) {
-			g_free (str);
-			str = g_strdup ("1");
+		else {
+			str = gda_value_stringify (expr->value);
+			if (!str) goto err;
+			if (is_null && gda_value_is_null (expr->value))
+				*is_null = TRUE;
+			else if (is_default && (G_VALUE_TYPE (expr->value) == G_TYPE_STRING) && 
+				 !g_ascii_strcasecmp (g_value_get_string (expr->value), "default"))
+				*is_default = TRUE;
+			else if (!g_ascii_strcasecmp (str, "FALSE")) {
+				g_free (str);
+				str = g_strdup ("0");
+			}
+			else if (!g_ascii_strcasecmp (str, "TRUE")) {
+				g_free (str);
+				str = g_strdup ("1");
+			}
 		}
 	}
 	else if (expr->func) {
diff --git a/providers/oracle/gda-oracle-provider.c b/providers/oracle/gda-oracle-provider.c
index dd80ea9..7d550ca 100644
--- a/providers/oracle/gda-oracle-provider.c
+++ b/providers/oracle/gda-oracle-provider.c
@@ -1262,6 +1262,7 @@ oracle_render_select_target (GdaSqlSelectTarget *target, GdaSqlRenderingContext
 {
         GString *string;
         gchar *str;
+	gpointer tmp;
 
         g_return_val_if_fail (target, NULL);
         g_return_val_if_fail (GDA_SQL_ANY_PART (target)->type == GDA_SQL_ANY_SQL_SELECT_TARGET, NULL);
@@ -1269,11 +1270,21 @@ oracle_render_select_target (GdaSqlSelectTarget *target, GdaSqlRenderingContext
         /* can't have: target->expr == NULL */
         if (!gda_sql_any_part_check_structure (GDA_SQL_ANY_PART (target), error)) return NULL;
 
-        string = g_string_new ("");
-        str = context->render_expr (target->expr, context, NULL, NULL, error);
-        if (!str) goto err;
-        g_string_append (string, str);
-        g_free (str);
+	if (! target->expr->value || (G_VALUE_TYPE (target->expr->value) != G_TYPE_STRING)) {
+		str = context->render_expr (target->expr, context, NULL, NULL, error);
+		if (!str)
+			return NULL;
+		string = g_string_new (str);
+		g_free (str);
+	}
+	else {
+		tmp = target->expr->value_is_ident;
+		target->expr->value_is_ident = (gpointer) 0x1;
+		str = context->render_expr (target->expr, context, NULL, NULL, error);
+		target->expr->value_is_ident = tmp;
+		string = g_string_new (str);
+		g_free (str);
+	}
 
         if (target->as) {
 		g_string_append_c (string, ' ');
@@ -1435,20 +1446,46 @@ oracle_render_expr (GdaSqlExpr *expr, GdaSqlRenderingContext *context,
 		if (!str) goto err;
 	}
 	else if (expr->value) {
-		str = gda_value_stringify (expr->value);
-		if (!str) goto err;
-		if (is_null && gda_value_is_null (expr->value))
-			*is_null = TRUE;
-		else if (is_default && (G_VALUE_TYPE (expr->value) == G_TYPE_STRING) && 
-			 !g_ascii_strcasecmp (g_value_get_string (expr->value), "default"))
-			*is_default = TRUE;
-		else if (!g_ascii_strcasecmp (str, "FALSE")) {
-			g_free (str);
-			str = g_strdup ("0");
+		if (expr->value_is_ident && (G_VALUE_TYPE (expr->value) == G_TYPE_STRING)) {
+			gchar **ids_array;
+			gint i;
+			GString *string = NULL;
+			GdaConnectionOptions cncoptions = 0;
+			if (context->cnc)
+				g_object_get (G_OBJECT (context->cnc), "options", &cncoptions, NULL);
+
+			ids_array = gda_sql_identifier_split (g_value_get_string (expr->value));
+			if ((!ids_array) || !(ids_array[0])) goto err;
+			for (i = 0; ids_array[i]; i++) {
+				gchar *tmp;
+				if (!string)
+					string = g_string_new ("");
+				else
+					g_string_append_c (string, '.');
+				tmp = gda_sql_identifier_quote (ids_array[i], context->cnc, context->provider, FALSE,
+					   cncoptions & GDA_CONNECTION_OPTIONS_SQL_IDENTIFIERS_CASE_SENSITIVE);
+				g_string_append (string, tmp);
+				g_free (tmp);
+			}
+			g_strfreev (ids_array);
+			str = g_string_free (string, FALSE);
 		}
-		else if (!g_ascii_strcasecmp (str, "TRUE")) {
-			g_free (str);
-			str = g_strdup ("1");
+		else {
+			str = gda_value_stringify (expr->value);
+			if (!str) goto err;
+			if (is_null && gda_value_is_null (expr->value))
+				*is_null = TRUE;
+			else if (is_default && (G_VALUE_TYPE (expr->value) == G_TYPE_STRING) && 
+				 !g_ascii_strcasecmp (g_value_get_string (expr->value), "default"))
+				*is_default = TRUE;
+			else if (!g_ascii_strcasecmp (str, "FALSE")) {
+				g_free (str);
+				str = g_strdup ("0");
+			}
+			else if (!g_ascii_strcasecmp (str, "TRUE")) {
+				g_free (str);
+				str = g_strdup ("1");
+			}
 		}
 	}
 	else if (expr->func) {
diff --git a/samples/SqlBuilder/example.c b/samples/SqlBuilder/example.c
index 1b0cef2..6b1fd2a 100644
--- a/samples/SqlBuilder/example.c
+++ b/samples/SqlBuilder/example.c
@@ -16,12 +16,12 @@ main (int argc, char *argv[])
 	gda_sql_builder_set_table (b, "customers");
 
 	gda_sql_builder_add_field (b,
-				   gda_sql_builder_literal (b, 0, "e"),
+				   gda_sql_builder_ident (b, 0, "e"),
 				   gda_sql_builder_param (b, 0, "p1", G_TYPE_STRING, FALSE));
 	gda_sql_builder_add_field (b,
-				   gda_sql_builder_literal (b, 0, "f"),
+				   gda_sql_builder_ident (b, 0, "f"),
 				   gda_sql_builder_expr (b, 0, NULL, G_TYPE_INT, 15));
-	gda_sql_builder_add_field (b, gda_sql_builder_literal (b, 0, "g"),
+	gda_sql_builder_add_field (b, gda_sql_builder_ident (b, 0, "g"),
 				   gda_sql_builder_expr (b, 0, NULL, G_TYPE_STRING, "joe"));
 	
 	render_as_sql (b);
@@ -33,9 +33,9 @@ main (int argc, char *argv[])
 
 	gda_sql_builder_set_table (b, "products");
 	gda_sql_builder_add_field (b,
-				   gda_sql_builder_literal (b, 0, "ref"),
+				   gda_sql_builder_ident (b, 0, "ref"),
 				   gda_sql_builder_expr (b, 10, NULL, G_TYPE_STRING, "A0E'FESP"));
-	gda_sql_builder_literal (b, 1, "id");
+	gda_sql_builder_ident (b, 1, "id");
 	gda_sql_builder_expr (b, 2, NULL, G_TYPE_INT, 14);
 	gda_sql_builder_cond (b, 3, GDA_SQL_OPERATOR_TYPE_EQ, 1, 2, 0);
 	gda_sql_builder_set_where (b, 3);
@@ -55,7 +55,7 @@ main (int argc, char *argv[])
 	b = gda_sql_builder_new (GDA_SQL_STATEMENT_DELETE);
 
 	gda_sql_builder_set_table (b, "items");
-	gda_sql_builder_literal (b, 1, "id");
+	gda_sql_builder_ident (b, 1, "id");
 	gda_sql_builder_param (b, 2, "theid", G_TYPE_INT, FALSE);
 	gda_sql_builder_cond (b, 3, GDA_SQL_OPERATOR_TYPE_EQ, 1, 2, 0);
 	gda_sql_builder_set_where (b, 3);
@@ -63,21 +63,25 @@ main (int argc, char *argv[])
 	render_as_sql (b);
 	g_object_unref (b);
 	
-	/* SELECT c.id, name, date AS person FROM customers as c, orders */
+	/*
+	 * The next statement shows automatic quoting of reserved SQL keywords (DATE and SELECT here)
+	 *
+	 * SELECT c."date", name, date AS person FROM "select" as c, orders
+	 */
 	b = gda_sql_builder_new (GDA_SQL_STATEMENT_SELECT);
 	
-	gda_sql_builder_literal (b, 1, "customers");
+	gda_sql_builder_ident (b, 1, "select"); /* SELECT is an SQL reserved keyword */
 	gda_sql_builder_select_add_target (b, 1, 1, "c");
 	gda_sql_builder_select_add_target (b, 2,
-					   gda_sql_builder_literal (b, 0, "orders"),
+					   gda_sql_builder_ident (b, 0, "orders"),
 					   NULL);
 	gda_sql_builder_select_join_targets (b, 5, 1, 2, GDA_SQL_SELECT_JOIN_INNER, 0);
 
 	gda_sql_builder_add_field (b,
-				   gda_sql_builder_literal (b, 0, "c.id"), 0);
+				   gda_sql_builder_ident (b, 0, "c.date"), 0); /* DATE is an SQL reserved keyword */
 	gda_sql_builder_add_field (b,
-				   gda_sql_builder_literal (b, 0, "name"),
-				   gda_sql_builder_literal (b, 0, "person"));
+				   gda_sql_builder_ident (b, 0, "name"),
+				   gda_sql_builder_ident (b, 0, "person"));
 
 	render_as_sql (b);
 
diff --git a/tests/test-sql-builder.c b/tests/test-sql-builder.c
index 3635920..ca8b0a4 100644
--- a/tests/test-sql-builder.c
+++ b/tests/test-sql-builder.c
@@ -127,9 +127,9 @@ build0 (void)
 
 	builder = gda_sql_builder_new (GDA_SQL_STATEMENT_SELECT);
 	gda_sql_builder_add_field (builder,
-				   gda_sql_builder_literal (builder, 0, "*"), 0);
+				   gda_sql_builder_ident (builder, 0, "*"), 0);
 	gda_sql_builder_select_add_target (builder, 0,
-					   gda_sql_builder_literal (builder, 0, "mytable"), NULL);
+					   gda_sql_builder_ident (builder, 0, "mytable"), NULL);
 	stmt = gda_sql_builder_get_sql_statement (builder, FALSE);
 	g_object_unref (builder);
 	return stmt;
@@ -150,26 +150,26 @@ build1 (void)
 
 	builder = gda_sql_builder_new (GDA_SQL_STATEMENT_SELECT);
 	gda_sql_builder_select_add_target (builder, 0,
-					   gda_sql_builder_literal (builder, 0, "mytable"), NULL);
+					   gda_sql_builder_ident (builder, 0, "mytable"), NULL);
 	gda_sql_builder_add_field (builder,
-				   gda_sql_builder_literal (builder, 0, "contents"), 0);
+				   gda_sql_builder_ident (builder, 0, "contents"), 0);
 	gda_sql_builder_add_field (builder,
-				   gda_sql_builder_literal (builder, 0, "descr"), 0);
+				   gda_sql_builder_ident (builder, 0, "descr"), 0);
 	gda_sql_builder_add_field (builder,
-				   gda_sql_builder_literal (builder, 0, "rank"), 0);
+				   gda_sql_builder_ident (builder, 0, "rank"), 0);
 	gda_sql_builder_add_field (builder,
-				   gda_sql_builder_literal (builder, 0, "name"), 0);
+				   gda_sql_builder_ident (builder, 0, "name"), 0);
 	gda_sql_builder_cond (builder, 1, GDA_SQL_OPERATOR_TYPE_EQ,
-			      gda_sql_builder_literal (builder, 0, "session"),
+			      gda_sql_builder_ident (builder, 0, "session"),
 			      gda_sql_builder_param (builder, 0, "session", G_TYPE_STRING, FALSE), 0);
 
 	op_ids [index] = gda_sql_builder_cond (builder, 0, GDA_SQL_OPERATOR_TYPE_EQ,
-					       gda_sql_builder_literal (builder, 0, "type"),
+					       gda_sql_builder_ident (builder, 0, "type"),
 					       gda_sql_builder_expr (builder, 0, NULL, G_TYPE_STRING, "TABLE"), 0);
 	index++;
 
 	op_ids [index] = gda_sql_builder_cond (builder, 0, GDA_SQL_OPERATOR_TYPE_EQ,
-					       gda_sql_builder_literal (builder, 0, "name"),
+					       gda_sql_builder_ident (builder, 0, "name"),
 					       gda_sql_builder_expr (builder, 0, NULL, G_TYPE_STRING, "alf"), 0);
 	index++;
 
@@ -196,19 +196,19 @@ build2 (void)
 	gda_sql_builder_set_table (builder, "mytable");
 
 	gda_sql_builder_add_field (builder,
-				   gda_sql_builder_literal (builder, 0, "session"),
+				   gda_sql_builder_ident (builder, 0, "session"),
 				   gda_sql_builder_param (builder, 0, "session", G_TYPE_INT, FALSE));
 	gda_sql_builder_add_field (builder,
-				   gda_sql_builder_literal (builder, 0, "type"),
+				   gda_sql_builder_ident (builder, 0, "type"),
 				   gda_sql_builder_param (builder, 0, "type", G_TYPE_INT, FALSE));
 	gda_sql_builder_add_field (builder,
-				   gda_sql_builder_literal (builder, 0, "name"),
+				   gda_sql_builder_ident (builder, 0, "name"),
 				   gda_sql_builder_param (builder, 0, "name", G_TYPE_STRING, TRUE));
 	gda_sql_builder_add_field (builder,
-				   gda_sql_builder_literal (builder, 0, "contents"),
+				   gda_sql_builder_ident (builder, 0, "contents"),
 				   gda_sql_builder_param (builder, 0, "contents", G_TYPE_STRING, FALSE));
 	gda_sql_builder_add_field (builder,
-				   gda_sql_builder_literal (builder, 0, "descr"),
+				   gda_sql_builder_ident (builder, 0, "descr"),
 				   gda_sql_builder_param (builder, 0, "descr", G_TYPE_STRING, TRUE));
 
 	stmt = gda_sql_builder_get_sql_statement (builder, FALSE);
@@ -230,18 +230,18 @@ build3 (void)
 	gda_sql_builder_set_table (builder, "mytable");
 
 	gda_sql_builder_add_field (builder,
-				   gda_sql_builder_literal (builder, 0, "name"),
+				   gda_sql_builder_ident (builder, 0, "name"),
 				   gda_sql_builder_param (builder, 0, "name", G_TYPE_STRING, TRUE));
 	gda_sql_builder_add_field (builder,
-				   gda_sql_builder_literal (builder, 0, "contents"),
+				   gda_sql_builder_ident (builder, 0, "contents"),
 				   gda_sql_builder_param (builder, 0, "contents", G_TYPE_STRING, FALSE));
 	gda_sql_builder_add_field (builder,
-				   gda_sql_builder_literal (builder, 0, "descr"),
+				   gda_sql_builder_ident (builder, 0, "descr"),
 				   gda_sql_builder_param (builder, 0, "descr", G_TYPE_STRING, TRUE));
 
 	gda_sql_builder_set_where (builder,
 				   gda_sql_builder_cond (builder, 0, GDA_SQL_OPERATOR_TYPE_EQ,
-							 gda_sql_builder_literal (builder, 0, "id"),
+							 gda_sql_builder_ident (builder, 0, "id"),
 							 gda_sql_builder_param (builder, 0, "id", G_TYPE_INT, FALSE),
 							 0));
 
@@ -264,30 +264,30 @@ build4 (void)
 
 	b = gda_sql_builder_new (GDA_SQL_STATEMENT_SELECT);
 	gda_sql_builder_add_field (b,
-				   gda_sql_builder_literal (b, 0, "fav.*"), 0);
+				   gda_sql_builder_ident (b, 0, "fav.*"), 0);
 	t1 = gda_sql_builder_select_add_target (b, 0,
-						gda_sql_builder_literal (b, 0, "mytable"),
+						gda_sql_builder_ident (b, 0, "mytable"),
 						"fav");
 	t2 = gda_sql_builder_select_add_target (b, 0,
-						gda_sql_builder_literal (b, 0, "fav_orders"),
+						gda_sql_builder_ident (b, 0, "fav_orders"),
 						"o");
 	gda_sql_builder_select_join_targets (b, 0, t1, t2, GDA_SQL_SELECT_JOIN_LEFT,
 					     gda_sql_builder_cond (b, 0, GDA_SQL_OPERATOR_TYPE_EQ,
-								   gda_sql_builder_literal (b, 0, "fav.id"),
-								   gda_sql_builder_literal (b, 0, "o.fav_id"),
+								   gda_sql_builder_ident (b, 0, "fav.id"),
+								   gda_sql_builder_ident (b, 0, "o.fav_id"),
 								   0));
 
 	gda_sql_builder_set_where (b,
 	    gda_sql_builder_cond (b, 0, GDA_SQL_OPERATOR_TYPE_AND,
 		  gda_sql_builder_cond (b, 0, GDA_SQL_OPERATOR_TYPE_EQ,
-					gda_sql_builder_literal (b, 0, "fav.sesion"),
+					gda_sql_builder_ident (b, 0, "fav.sesion"),
 					gda_sql_builder_param (b, 0, "session", G_TYPE_INT, FALSE), 0),
 		  gda_sql_builder_cond (b, 0, GDA_SQL_OPERATOR_TYPE_EQ,
-					gda_sql_builder_literal (b, 0, "o.order_key"),
+					gda_sql_builder_ident (b, 0, "o.order_key"),
 					gda_sql_builder_param (b, 0, "okey", G_TYPE_INT, FALSE), 0), 0));
 
 	gda_sql_builder_select_order_by (b,
-					 gda_sql_builder_literal (b, 0, "o.rank"), TRUE, NULL);
+					 gda_sql_builder_ident (b, 0, "o.rank"), TRUE, NULL);
 	stmt = gda_sql_builder_get_sql_statement (b, FALSE);
 	g_object_unref (b);
 	return stmt;
@@ -305,18 +305,18 @@ build5 (void)
 
 	b = gda_sql_builder_new (GDA_SQL_STATEMENT_SELECT);
 	gda_sql_builder_add_field (b,
-				   gda_sql_builder_literal (b, 0, "id"), 0);
+				   gda_sql_builder_ident (b, 0, "id"), 0);
 	gda_sql_builder_select_add_target (b, 0,
-					   gda_sql_builder_literal (b, 0, "mytable"),
+					   gda_sql_builder_ident (b, 0, "mytable"),
 					   NULL);
 
 	gda_sql_builder_set_where (b,
 	    gda_sql_builder_cond (b, 0, GDA_SQL_OPERATOR_TYPE_AND,
 		  gda_sql_builder_cond (b, 0, GDA_SQL_OPERATOR_TYPE_EQ,
-					gda_sql_builder_literal (b, 0, "sesion"),
+					gda_sql_builder_ident (b, 0, "sesion"),
 					gda_sql_builder_param (b, 0, "session", G_TYPE_INT, FALSE), 0),
 		  gda_sql_builder_cond (b, 0, GDA_SQL_OPERATOR_TYPE_EQ,
-					gda_sql_builder_literal (b, 0, "contents"),
+					gda_sql_builder_ident (b, 0, "contents"),
 					gda_sql_builder_param (b, 0, "contents", G_TYPE_INT, FALSE), 0), 0));
 
 	stmt = gda_sql_builder_get_sql_statement (b, FALSE);
@@ -335,17 +335,17 @@ build6 (void)
 	GdaSqlStatement *stmt;
 
 	b = gda_sql_builder_new (GDA_SQL_STATEMENT_SELECT);
-	gda_sql_builder_add_field (b, gda_sql_builder_literal (b, 0, "fav_id"), 0);
-	gda_sql_builder_add_field (b, gda_sql_builder_literal (b, 0, "rank"), 0);
+	gda_sql_builder_add_field (b, gda_sql_builder_ident (b, 0, "fav_id"), 0);
+	gda_sql_builder_add_field (b, gda_sql_builder_ident (b, 0, "rank"), 0);
 
 	gda_sql_builder_select_add_target (b, 0,
-					   gda_sql_builder_literal (b, 0, "mytable"),
+					   gda_sql_builder_ident (b, 0, "mytable"),
 					   NULL);
 	gda_sql_builder_cond (b, 1, GDA_SQL_OPERATOR_TYPE_EQ,
-			      gda_sql_builder_literal (b, 0, "order_key"),
+			      gda_sql_builder_ident (b, 0, "order_key"),
 			      gda_sql_builder_param (b, 0, "orderkey", G_TYPE_INT, FALSE), 0);
 	gda_sql_builder_cond (b, 2, GDA_SQL_OPERATOR_TYPE_DIFF,
-			      gda_sql_builder_literal (b, 0, "fav_id"),
+			      gda_sql_builder_ident (b, 0, "fav_id"),
 			      gda_sql_builder_param (b, 0, "id", G_TYPE_INT, FALSE), 0);
 
 	gda_sql_builder_set_where (b, gda_sql_builder_cond (b, 0, GDA_SQL_OPERATOR_TYPE_AND, 1, 2, 0));
@@ -367,18 +367,18 @@ build7 (void)
 	b = gda_sql_builder_new (GDA_SQL_STATEMENT_UPDATE);
 	gda_sql_builder_set_table (b, "mytable");
 	gda_sql_builder_add_field (b,
-				   gda_sql_builder_literal (b, 0, "rank"),
+				   gda_sql_builder_ident (b, 0, "rank"),
 				   gda_sql_builder_param (b, 0, "newrank", G_TYPE_INT, FALSE));
 	gda_sql_builder_cond (b, 1, GDA_SQL_OPERATOR_TYPE_EQ,
-			      gda_sql_builder_literal (b, 0, "fav_id"),
+			      gda_sql_builder_ident (b, 0, "fav_id"),
 			      gda_sql_builder_param (b, 0, "id", G_TYPE_INT, FALSE),
 			      0);
 	gda_sql_builder_cond (b, 2, GDA_SQL_OPERATOR_TYPE_EQ,
-			      gda_sql_builder_literal (b, 0, "order_key"),
+			      gda_sql_builder_ident (b, 0, "order_key"),
 			      gda_sql_builder_param (b, 0, "orderkey", G_TYPE_INT, FALSE),
 			      0);
 	gda_sql_builder_cond (b, 3, GDA_SQL_OPERATOR_TYPE_EQ,
-			      gda_sql_builder_literal (b, 0, "rank"),
+			      gda_sql_builder_ident (b, 0, "rank"),
 			      gda_sql_builder_param (b, 0, "rank", G_TYPE_INT, FALSE),
 			      0);
 	gda_sql_builder_set_where (b, gda_sql_builder_cond (b, 0, GDA_SQL_OPERATOR_TYPE_AND, 1, 2, 3));
@@ -401,7 +401,7 @@ build8 (void)
 	gda_sql_builder_set_table (b, "mytable");
 	
 	gda_sql_builder_set_where (b, gda_sql_builder_cond (b, 0, GDA_SQL_OPERATOR_TYPE_EQ,
-							    gda_sql_builder_literal (b, 0, "id"),
+							    gda_sql_builder_ident (b, 0, "id"),
 							    gda_sql_builder_param (b, 0, "id", G_TYPE_INT, FALSE),
 							    0));
 	stmt = gda_sql_builder_get_sql_statement (b, FALSE);
diff --git a/tools/browser/browser-favorites.c b/tools/browser/browser-favorites.c
index 4d37ce8..34c166e 100644
--- a/tools/browser/browser-favorites.c
+++ b/tools/browser/browser-favorites.c
@@ -245,16 +245,16 @@ find_favorite (BrowserFavorites *bfav, guint session_id, gint id, const gchar *c
 
 	b = gda_sql_builder_new (GDA_SQL_STATEMENT_SELECT);
 	gda_sql_builder_add_field (b,
-				   gda_sql_builder_literal (b, 0, "id"), 0);
+				   gda_sql_builder_ident (b, 0, "id"), 0);
 	gda_sql_builder_select_add_target (b, 0,
-					   gda_sql_builder_literal (b, 0, FAVORITES_TABLE_NAME),
+					   gda_sql_builder_ident (b, 0, FAVORITES_TABLE_NAME),
 					   NULL);
 
 	if (id >= 0) {
 		/* lookup from ID */
 		gda_sql_builder_set_where (b,
 		    gda_sql_builder_cond (b, 0, GDA_SQL_OPERATOR_TYPE_EQ,
-					  gda_sql_builder_literal (b, 0, "id"),
+					  gda_sql_builder_ident (b, 0, "id"),
 					  gda_sql_builder_param (b, 0, "id", G_TYPE_INT, FALSE), 0));
 	}
 	else {
@@ -262,10 +262,10 @@ find_favorite (BrowserFavorites *bfav, guint session_id, gint id, const gchar *c
 		gda_sql_builder_set_where (b,
 	            gda_sql_builder_cond (b, 0, GDA_SQL_OPERATOR_TYPE_AND,
 					  gda_sql_builder_cond (b, 0, GDA_SQL_OPERATOR_TYPE_EQ,
-						   gda_sql_builder_literal (b, 0, "session"),
+						   gda_sql_builder_ident (b, 0, "session"),
 						   gda_sql_builder_param (b, 0, "session", G_TYPE_INT, FALSE), 0),
 					  gda_sql_builder_cond (b, 0, GDA_SQL_OPERATOR_TYPE_EQ,
-						   gda_sql_builder_literal (b, 0, "contents"),
+						   gda_sql_builder_ident (b, 0, "contents"),
 						   gda_sql_builder_param (b, 0, "contents", G_TYPE_INT, FALSE), 0), 0));
 	}
 	stmt = gda_sql_builder_get_statement (b, error);
@@ -311,17 +311,17 @@ favorites_reorder (BrowserFavorites *bfav, gint order_key, gint id, gint new_pos
 	g_assert (order_key >= 0);
 
 	b = gda_sql_builder_new (GDA_SQL_STATEMENT_SELECT);
-	gda_sql_builder_add_field (b, gda_sql_builder_literal (b, 0, "fav_id"), 0);
+	gda_sql_builder_add_field (b, gda_sql_builder_ident (b, 0, "fav_id"), 0);
 
 	gda_sql_builder_select_add_target (b, 0,
-					   gda_sql_builder_literal (b, 0, FAVORDER_TABLE_NAME),
+					   gda_sql_builder_ident (b, 0, FAVORDER_TABLE_NAME),
 					   NULL);
 	
 	gda_sql_builder_set_where (b, gda_sql_builder_cond (b, 1, GDA_SQL_OPERATOR_TYPE_EQ,
-				    gda_sql_builder_literal (b, 0, "order_key"),
+				    gda_sql_builder_ident (b, 0, "order_key"),
 				    gda_sql_builder_param (b, 0, "orderkey", G_TYPE_INT, FALSE), 0));
 	gda_sql_builder_select_order_by (b,
-					 gda_sql_builder_literal (b, 0, "rank"), TRUE, NULL);
+					 gda_sql_builder_ident (b, 0, "rank"), TRUE, NULL);
 	stmt = gda_sql_builder_get_statement (b, error);
 	g_object_unref (G_OBJECT (b));
 	if (!stmt)
@@ -348,14 +348,14 @@ favorites_reorder (BrowserFavorites *bfav, gint order_key, gint id, gint new_pos
 	b = gda_sql_builder_new (GDA_SQL_STATEMENT_UPDATE);
 	gda_sql_builder_set_table (b, FAVORDER_TABLE_NAME);
 	gda_sql_builder_add_field (b,
-				   gda_sql_builder_literal (b, 0, "rank"),
+				   gda_sql_builder_ident (b, 0, "rank"),
 				   gda_sql_builder_param (b, 0, "rank", G_TYPE_INT, FALSE));
 	gda_sql_builder_cond (b, 1, GDA_SQL_OPERATOR_TYPE_EQ,
-			      gda_sql_builder_literal (b, 0, "fav_id"),
+			      gda_sql_builder_ident (b, 0, "fav_id"),
 			      gda_sql_builder_param (b, 0, "id", G_TYPE_INT, FALSE),
 			      0);
 	gda_sql_builder_cond (b, 2, GDA_SQL_OPERATOR_TYPE_EQ,
-			      gda_sql_builder_literal (b, 0, "order_key"),
+			      gda_sql_builder_ident (b, 0, "order_key"),
 			      gda_sql_builder_param (b, 0, "orderkey", G_TYPE_INT, FALSE),
 			      0);
 	gda_sql_builder_set_where (b, gda_sql_builder_cond (b, 0, GDA_SQL_OPERATOR_TYPE_AND, 1, 2, 0));
@@ -460,19 +460,19 @@ browser_favorites_add (BrowserFavorites *bfav, guint session_id,
 		gda_sql_builder_set_table (builder, FAVORITES_TABLE_NAME);
 
 		gda_sql_builder_add_field (builder,
-					   gda_sql_builder_literal (builder, 0, "session"),
+					   gda_sql_builder_ident (builder, 0, "session"),
 					   gda_sql_builder_param (builder, 0, "session", G_TYPE_INT, FALSE));
 		gda_sql_builder_add_field (builder,
-					   gda_sql_builder_literal (builder, 0, "type"),
+					   gda_sql_builder_ident (builder, 0, "type"),
 					   gda_sql_builder_param (builder, 0, "type", G_TYPE_INT, FALSE));
 		gda_sql_builder_add_field (builder,
-					   gda_sql_builder_literal (builder, 0, "name"),
+					   gda_sql_builder_ident (builder, 0, "name"),
 					   gda_sql_builder_param (builder, 0, "name", G_TYPE_STRING, TRUE));
 		gda_sql_builder_add_field (builder,
-					   gda_sql_builder_literal (builder, 0, "contents"),
+					   gda_sql_builder_ident (builder, 0, "contents"),
 					   gda_sql_builder_param (builder, 0, "contents", G_TYPE_STRING, FALSE));
 		gda_sql_builder_add_field (builder,
-					   gda_sql_builder_literal (builder, 0, "descr"),
+					   gda_sql_builder_ident (builder, 0, "descr"),
 					   gda_sql_builder_param (builder, 0, "descr", G_TYPE_STRING, TRUE));
 		stmt = gda_sql_builder_get_statement (builder, error);
 		g_object_unref (G_OBJECT (builder));
@@ -494,18 +494,18 @@ browser_favorites_add (BrowserFavorites *bfav, guint session_id,
 		gda_sql_builder_set_table (builder, FAVORITES_TABLE_NAME);
 
 		gda_sql_builder_add_field (builder,
-					   gda_sql_builder_literal (builder, 0, "name"),
+					   gda_sql_builder_ident (builder, 0, "name"),
 					   gda_sql_builder_param (builder, 0, "name", G_TYPE_STRING, TRUE));
 		gda_sql_builder_add_field (builder,
-					   gda_sql_builder_literal (builder, 0, "contents"),
+					   gda_sql_builder_ident (builder, 0, "contents"),
 					   gda_sql_builder_param (builder, 0, "contents", G_TYPE_STRING, FALSE));
 		gda_sql_builder_add_field (builder,
-					   gda_sql_builder_literal (builder, 0, "descr"),
+					   gda_sql_builder_ident (builder, 0, "descr"),
 					   gda_sql_builder_param (builder, 0, "descr", G_TYPE_STRING, TRUE));
 
 		gda_sql_builder_set_where (builder,
 					   gda_sql_builder_cond (builder, 0, GDA_SQL_OPERATOR_TYPE_EQ,
-								 gda_sql_builder_literal (builder, 0, "id"),
+								 gda_sql_builder_ident (builder, 0, "id"),
 								 gda_sql_builder_param (builder, 0, "id", G_TYPE_INT, FALSE),
 								 0));
 		stmt = gda_sql_builder_get_statement (builder, error);
@@ -537,11 +537,11 @@ browser_favorites_add (BrowserFavorites *bfav, guint session_id,
 		gda_sql_builder_set_where (builder,
 		      gda_sql_builder_cond (builder, 0, GDA_SQL_OPERATOR_TYPE_AND,
 			    gda_sql_builder_cond (builder, 0, GDA_SQL_OPERATOR_TYPE_EQ,
-						  gda_sql_builder_literal (builder, 0, "fav_id"),
+						  gda_sql_builder_ident (builder, 0, "fav_id"),
 						  gda_sql_builder_param (builder, 0, "id", G_TYPE_INT, FALSE),
 						  0),
 			    gda_sql_builder_cond (builder, 0, GDA_SQL_OPERATOR_TYPE_EQ,
-						  gda_sql_builder_literal (builder, 0, "order_key"),
+						  gda_sql_builder_ident (builder, 0, "order_key"),
 						  gda_sql_builder_param (builder, 0, "orderkey", G_TYPE_INT, FALSE),
 						  0), 0));
 		stmt = gda_sql_builder_get_statement (builder, error);
@@ -557,13 +557,13 @@ browser_favorites_add (BrowserFavorites *bfav, guint session_id,
 		builder = gda_sql_builder_new (GDA_SQL_STATEMENT_INSERT);
 		gda_sql_builder_set_table (builder, FAVORDER_TABLE_NAME);
 		gda_sql_builder_add_field (builder,
-					   gda_sql_builder_literal (builder, 0, "fav_id"),
+					   gda_sql_builder_ident (builder, 0, "fav_id"),
 					   gda_sql_builder_param (builder, 0, "id", G_TYPE_INT, FALSE));
 		gda_sql_builder_add_field (builder,
-					   gda_sql_builder_literal (builder, 0, "rank"),
+					   gda_sql_builder_ident (builder, 0, "rank"),
 					   gda_sql_builder_param (builder, 0, "rank", G_TYPE_INT, FALSE));
 		gda_sql_builder_add_field (builder,
-					   gda_sql_builder_literal (builder, 0, "order_key"),
+					   gda_sql_builder_ident (builder, 0, "order_key"),
 					   gda_sql_builder_param (builder, 0, "orderkey", G_TYPE_STRING, TRUE));
 		stmt = gda_sql_builder_get_statement (builder, error);
 		g_object_unref (G_OBJECT (builder));
@@ -650,40 +650,40 @@ browser_favorites_list (BrowserFavorites *bfav, guint session_id, BrowserFavorit
 
 	b = gda_sql_builder_new (GDA_SQL_STATEMENT_SELECT);
 	gda_sql_builder_add_field (b,
-				   gda_sql_builder_literal (b, 0, "fav.contents"), 0);
+				   gda_sql_builder_ident (b, 0, "fav.contents"), 0);
 	gda_sql_builder_add_field (b,
-				   gda_sql_builder_literal (b, 0, "fav.descr"), 0);
+				   gda_sql_builder_ident (b, 0, "fav.descr"), 0);
 	gda_sql_builder_add_field (b,
-				   gda_sql_builder_literal (b, 0, "fav.name"), 0);
+				   gda_sql_builder_ident (b, 0, "fav.name"), 0);
 	gda_sql_builder_add_field (b,
-				   gda_sql_builder_literal (b, 0, "fav.type"), 0);
+				   gda_sql_builder_ident (b, 0, "fav.type"), 0);
 	gda_sql_builder_add_field (b,
-				   gda_sql_builder_literal (b, 0, "fav.id"), 0);
+				   gda_sql_builder_ident (b, 0, "fav.id"), 0);
 
 	t1 = gda_sql_builder_select_add_target (b, 0,
-						gda_sql_builder_literal (b, 0, FAVORITES_TABLE_NAME),
+						gda_sql_builder_ident (b, 0, FAVORITES_TABLE_NAME),
 						"fav");
 	if (order_key > 0) {
 		t2 = gda_sql_builder_select_add_target (b, 0,
-							gda_sql_builder_literal (b, 0, FAVORDER_TABLE_NAME),
+							gda_sql_builder_ident (b, 0, FAVORDER_TABLE_NAME),
 							"o");
 		gda_sql_builder_select_join_targets (b, 0, t1, t2, GDA_SQL_SELECT_JOIN_LEFT,
 						     gda_sql_builder_cond (b, 0, GDA_SQL_OPERATOR_TYPE_EQ,
-									   gda_sql_builder_literal (b, 0, "fav.id"),
-									   gda_sql_builder_literal (b, 0, "o.fav_id"),
+									   gda_sql_builder_ident (b, 0, "fav.id"),
+									   gda_sql_builder_ident (b, 0, "o.fav_id"),
 									   0));
 		gda_sql_builder_select_order_by (b,
-						 gda_sql_builder_literal (b, 0, "o.rank"), TRUE, NULL);
+						 gda_sql_builder_ident (b, 0, "o.rank"), TRUE, NULL);
 
 		and_cond_ids [and_cond_size] = gda_sql_builder_cond (b, 0, GDA_SQL_OPERATOR_TYPE_EQ,
-							     gda_sql_builder_literal (b, 0, "o.order_key"),
+							     gda_sql_builder_ident (b, 0, "o.order_key"),
 							     gda_sql_builder_param (b, 0, "okey", G_TYPE_INT, FALSE),
 							     0);
 		and_cond_size++;
 	}
 
 	and_cond_ids [and_cond_size] = gda_sql_builder_cond (b, 0, GDA_SQL_OPERATOR_TYPE_EQ,
-						     gda_sql_builder_literal (b, 0, "fav.session"),
+						     gda_sql_builder_ident (b, 0, "fav.session"),
 						     gda_sql_builder_param (b, 0, "session", G_TYPE_INT, FALSE), 0);
 	and_cond_size++;
 
@@ -694,8 +694,8 @@ browser_favorites_list (BrowserFavorites *bfav, guint session_id, BrowserFavorit
 			gchar *str;
 			str = g_strdup_printf ("'%s'", favorite_type_to_string (flag));
 			or_cond_ids [or_cond_size] = gda_sql_builder_cond (b, 0, GDA_SQL_OPERATOR_TYPE_EQ,
-							     gda_sql_builder_literal (b, 0, "fav.type"),
-							     gda_sql_builder_literal (b, 0, str),
+							     gda_sql_builder_ident (b, 0, "fav.type"),
+							     gda_sql_builder_ident (b, 0, str),
 							     0);
 			g_free (str);
 			or_cond_size++;
@@ -816,7 +816,7 @@ browser_favorites_delete (BrowserFavorites *bfav, guint session_id,
 	b = gda_sql_builder_new (GDA_SQL_STATEMENT_DELETE);
 	gda_sql_builder_set_table (b, FAVORITES_TABLE_NAME);
 	gda_sql_builder_set_where (b, gda_sql_builder_cond (b, 0, GDA_SQL_OPERATOR_TYPE_EQ,
-							    gda_sql_builder_literal (b, 0, "id"),
+							    gda_sql_builder_ident (b, 0, "id"),
 							    gda_sql_builder_param (b, 0, "id", G_TYPE_INT, FALSE),
 							    0));
 
@@ -838,7 +838,7 @@ browser_favorites_delete (BrowserFavorites *bfav, guint session_id,
 	b = gda_sql_builder_new (GDA_SQL_STATEMENT_DELETE);
 	gda_sql_builder_set_table (b, FAVORDER_TABLE_NAME);
 	gda_sql_builder_set_where (b, gda_sql_builder_cond (b, 0, GDA_SQL_OPERATOR_TYPE_EQ,
-							    gda_sql_builder_literal (b, 0, "fav_id"),
+							    gda_sql_builder_ident (b, 0, "fav_id"),
 							    gda_sql_builder_param (b, 0, "id", G_TYPE_INT, FALSE),
 							    0));
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]