All pastes #251071 Raw Edit

Someone

public text v1 · immutable
#251071 ·published 2006-11-17 18:52 UTC
rendered paste body
diff -NurdB libgda-1.99.1-orig/libgda/gda-query-parsing.c libgda-1.99.1-patched/libgda/gda-query-parsing.c
--- libgda-1.99.1-orig/libgda/gda-query-parsing.c	2006-10-12 03:10:46.000000000 -0500
+++ libgda-1.99.1-patched/libgda/gda-query-parsing.c	2006-11-17 13:04:39.000000000 -0500
@@ -632,7 +632,6 @@
 				has_error = TRUE;
 			else {
 				if (!GDA_IS_QUERY_FIELD_FIELD (qfield)) {
-					gda_query_field_set_visible (GDA_QUERY_FIELD (qfield), FALSE);
 					if (fields)
 						g_object_set (G_OBJECT (g_slist_nth_data (fields, pos)), "value_provider",
 							      qfield, NULL);
@@ -675,6 +674,19 @@
 			pos ++;
 		}
 
+		if (!has_error) {
+			GSList *qfields, *qlist;
+
+			qfields = gda_entity_get_fields (GDA_ENTITY (query));
+			for (qlist = qfields; qlist != NULL; qlist = g_slist_next (qlist)) {
+				GdaEntityField *qfield = GDA_ENTITY_FIELD (qlist->data);
+
+				if (!GDA_IS_QUERY_FIELD_FIELD (qfield)) 
+					gda_query_field_set_visible (GDA_QUERY_FIELD (qfield), FALSE);
+			}
+			g_slist_free (qfields);
+		}
+
 		if (entity_fields)
 			g_slist_free (entity_fields);
 	}
diff -NurdB libgda-1.99.1-orig/libgda/gda-query.c libgda-1.99.1-patched/libgda/gda-query.c
--- libgda-1.99.1-orig/libgda/gda-query.c	2006-10-26 07:16:19.000000000 -0500
+++ libgda-1.99.1-patched/libgda/gda-query.c	2006-11-17 13:01:08.000000000 -0500
@@ -5307,12 +5307,12 @@
 		vfields = gda_entity_get_fields (GDA_ENTITY (query));
 		list = vfields;
 		while (list && !err) {
-			GdaEntityField *value_prov;
+			GdaObject *value_prov;
 			gchar *str;
 			gboolean add_field = TRUE;
 
-			g_object_get (G_OBJECT (list->data), "value_provider", &value_prov, NULL);
-			g_assert (value_prov);
+			g_object_get (GDA_ENTITY_FIELD (list->data), "value_provider", &value_prov, NULL);
+			g_assert (value_prov != NULL);
 			str = gda_renderer_render_as_sql (GDA_RENDERER (value_prov), context, 
 							  options | GDA_RENDERER_ERROR_IF_DEFAULT, &my_error);
 			if (!str) {