1 /*
2  * Copyright (C) 2009 Bas Driessen <bas.driessen@xobas.com>
3  * Copyright (C) 2009 - 2011 Vivien Malerba <malerba@gnome-db.org>
4  * Copyright (C) 2010 David King <davidk@openismus.com>
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the
18  * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
19  * Boston, MA  02110-1301, USA.
20  */
21 
22 #include <string.h>
23 #include "gda-thread-meta.h"
24 #include "gda-thread-provider.h"
25 #include <libgda/gda-meta-store.h>
26 #include <libgda/gda-server-provider-extra.h>
27 #include <libgda/gda-connection-private.h>
28 #include <libgda/gda-connection-internal.h>
29 
30 #define PROV_CLASS(provider) (GDA_SERVER_PROVIDER_CLASS (G_OBJECT_GET_CLASS (provider)))
31 
32 /* common implementation of the functions used when no parameter is passed */
33 typedef struct {
34 	GdaServerProvider *prov;
35 	GdaConnection *cnc;
36 	GdaMetaStore *store;
37 	GdaMetaContext *context;
38 } BasicThreadData;
39 
40 #define main_thread_basic_core(func,prov,cnc,store,context,error) \
41 	ThreadConnectionData *cdata; \
42 	BasicThreadData wdata; \
43 	gpointer res; \
44 	guint jid; \
45         cdata = (ThreadConnectionData*) gda_connection_internal_get_provider_data_error ((cnc),(error)); \
46 	if (!cdata) \
47 		return FALSE; \
48 	wdata.prov = cdata->cnc_provider; \
49 	wdata.cnc = cdata->sub_connection; \
50         wdata.store = (store); \
51         wdata.context = (context); \
52 	jid = gda_thread_wrapper_execute (cdata->wrapper, \
53 					  (GdaThreadWrapperFunc) (func), &wdata, NULL, NULL); \
54 	res = gda_thread_wrapper_fetch_result (cdata->wrapper, TRUE, jid, (error)); \
55 	return GPOINTER_TO_INT (res) ? TRUE : FALSE
56 
57 #define sub_thread_basic_core(func,name) \
58 	gboolean retval; \
59 	if (! (func)) {		  \
60 	        WARN_METHOD_NOT_IMPLEMENTED (data->prov, (name)); \
61 		return GINT_TO_POINTER (0); \
62 	} \
63 	retval = (func) (data->prov, data->cnc, data->store, data->context, error); \
64 	/*g_print ("/%s() => %s\n", __FUNCTION__, retval ? "TRUE" : "FALSE");*/ \
65 	return GINT_TO_POINTER (retval ? 1 : 0)
66 
67 typedef struct {
68 	GdaServerProvider *prov;
69 	GdaConnection *cnc;
70 	GdaMetaStore *store;
71 	GdaMetaContext *context;
72 	const GValue *v1;
73 	const GValue *v2;
74 	const GValue *v3;
75 	const GValue *v4;
76 } DetailedThreadData;
77 
78 #define main_thread_detailed_core(func,prov,cnc,store,context,arg1,arg2,arg3,arg4,error) \
79 	ThreadConnectionData *cdata; \
80 	DetailedThreadData wdata; \
81 	gpointer res; \
82 	guint jid; \
83         cdata = (ThreadConnectionData*) gda_connection_internal_get_provider_data_error ((cnc),(error)); \
84 	if (!cdata) \
85 		return FALSE; \
86 	wdata.prov = cdata->cnc_provider; \
87 	wdata.cnc = cdata->sub_connection; \
88         wdata.store = (store); \
89         wdata.context = (context); \
90         wdata.v1 = (arg1); \
91         wdata.v2 = (arg2); \
92         wdata.v3 = (arg3); \
93         wdata.v4 = (arg4); \
94 	jid = gda_thread_wrapper_execute (cdata->wrapper, \
95 					  (GdaThreadWrapperFunc) (func), &wdata, NULL, NULL); \
96 	res = gda_thread_wrapper_fetch_result (cdata->wrapper, TRUE, jid, (error)); \
97 	return GPOINTER_TO_INT (res) ? TRUE : FALSE
98 
99 #define sub_thread_detailed1_core(func,name) \
100 	gboolean retval; \
101 	if (! (func)) {		  \
102 	        WARN_METHOD_NOT_IMPLEMENTED (data->prov, (name)); \
103 		return GINT_TO_POINTER (0); \
104 	} \
105 	retval = (func) (data->prov, data->cnc, data->store, data->context, error, data->v1); \
106 	/*g_print ("/%s() => %s\n", __FUNCTION__, retval ? "TRUE" : "FALSE");*/ \
107 	return GINT_TO_POINTER (retval ? 1 : 0)
108 
109 #define sub_thread_detailed2_core(func,name) \
110 	gboolean retval; \
111 	if (! (func)) {		  \
112 	        WARN_METHOD_NOT_IMPLEMENTED (data->prov, (name)); \
113 		return GINT_TO_POINTER (0); \
114 	} \
115 	retval = (func) (data->prov, data->cnc, data->store, data->context, error, data->v1, data->v2); \
116 	/*g_print ("/%s() => %s\n", __FUNCTION__, retval ? "TRUE" : "FALSE");*/ \
117 	return GINT_TO_POINTER (retval ? 1 : 0)
118 
119 #define sub_thread_detailed3_core(func,name) \
120 	gboolean retval; \
121 	if (! (func)) {		  \
122 	        WARN_METHOD_NOT_IMPLEMENTED (data->prov, (name)); \
123 		return GINT_TO_POINTER (0); \
124 	} \
125 	retval = (func) (data->prov, data->cnc, data->store, data->context, error, data->v1, data->v2, data->v3); \
126 	/*g_print ("/%s() => %s\n", __FUNCTION__, retval ? "TRUE" : "FALSE");*/ \
127 	return GINT_TO_POINTER (retval ? 1 : 0)
128 
129 #define sub_thread_detailed4_core(func,name) \
130 	gboolean retval; \
131 	if (! (func)) {		  \
132 	        WARN_METHOD_NOT_IMPLEMENTED (data->prov, (name)); \
133 		return GINT_TO_POINTER (0); \
134 	} \
135 	retval = (func) (data->prov, data->cnc, data->store, data->context, error, data->v1, data->v2, data->v3, data->v4); \
136 	/*g_print ("/%s() => %s\n", __FUNCTION__, retval ? "TRUE" : "FALSE");*/ \
137 	return GINT_TO_POINTER (retval ? 1 : 0)
138 
139 /*
140  * Meta initialization
141  */
142 void
_gda_thread_provider_meta_init(G_GNUC_UNUSED GdaServerProvider * provider)143 _gda_thread_provider_meta_init (G_GNUC_UNUSED GdaServerProvider *provider)
144 {
145 	/* nothing to be done */
146 }
147 
148 
149 
150 static gpointer
sub_thread__gda_thread_meta__info(BasicThreadData * data,GError ** error)151 sub_thread__gda_thread_meta__info (BasicThreadData *data, GError **error)
152 {
153 	/* WARNING: function executed in sub thread! */
154 	sub_thread_basic_core (PROV_CLASS (data->prov)->meta_funcs._info, "_info");
155 }
156 
157 gboolean
_gda_thread_meta__info(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error)158 _gda_thread_meta__info (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
159 			GdaMetaStore *store, GdaMetaContext *context, GError **error)
160 {
161 	main_thread_basic_core (sub_thread__gda_thread_meta__info, prov, cnc, store, context, error);
162 }
163 
164 
165 
166 static gpointer
sub_thread__gda_thread_meta__btypes(BasicThreadData * data,GError ** error)167 sub_thread__gda_thread_meta__btypes (BasicThreadData *data, GError **error)
168 {
169 	/* WARNING: function executed in sub thread! */
170 	sub_thread_basic_core (PROV_CLASS (data->prov)->meta_funcs._btypes, "_btypes");
171 }
172 
173 gboolean
_gda_thread_meta__btypes(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error)174 _gda_thread_meta__btypes (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
175 			  GdaMetaStore *store, GdaMetaContext *context, GError **error)
176 {
177 	main_thread_basic_core (sub_thread__gda_thread_meta__btypes, prov, cnc, store, context, error);
178 }
179 
180 
181 static gpointer
sub_thread__gda_thread_meta__udt(BasicThreadData * data,GError ** error)182 sub_thread__gda_thread_meta__udt (BasicThreadData *data, GError **error)
183 {
184 	/* WARNING: function executed in sub thread! */
185 	sub_thread_basic_core (PROV_CLASS (data->prov)->meta_funcs._udt, "_udt");
186 }
187 gboolean
_gda_thread_meta__udt(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error)188 _gda_thread_meta__udt (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
189 		       GdaMetaStore *store, GdaMetaContext *context, GError **error)
190 {
191 	main_thread_basic_core (sub_thread__gda_thread_meta__udt, prov, cnc, store, context, error);
192 }
193 
194 static gpointer
sub_thread__gda_thread_meta_udt(DetailedThreadData * data,GError ** error)195 sub_thread__gda_thread_meta_udt (DetailedThreadData *data, GError **error)
196 {
197 	/* WARNING: function executed in sub thread! */
198 	sub_thread_detailed2_core (PROV_CLASS (data->prov)->meta_funcs.udt, "_udt");
199 }
200 gboolean
_gda_thread_meta_udt(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error,const GValue * udt_catalog,const GValue * udt_schema)201 _gda_thread_meta_udt (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
202 		      GdaMetaStore *store, GdaMetaContext *context, GError **error,
203 		      const GValue *udt_catalog, const GValue *udt_schema)
204 {
205 	main_thread_detailed_core (sub_thread__gda_thread_meta_udt, prov, cnc, store, context,
206 				    udt_catalog, udt_schema, NULL, NULL, error);
207 }
208 
209 
210 
211 static gpointer
sub_thread__gda_thread_meta__udt_cols(BasicThreadData * data,GError ** error)212 sub_thread__gda_thread_meta__udt_cols (BasicThreadData *data, GError **error)
213 {
214 	/* WARNING: function executed in sub thread! */
215 	sub_thread_basic_core (PROV_CLASS (data->prov)->meta_funcs._udt_cols, "_udt_cols");
216 }
217 
218 gboolean
_gda_thread_meta__udt_cols(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error)219 _gda_thread_meta__udt_cols (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
220 			    GdaMetaStore *store, GdaMetaContext *context, GError **error)
221 {
222 	main_thread_basic_core (sub_thread__gda_thread_meta__udt_cols, prov, cnc, store, context, error);
223 }
224 
225 static gpointer
sub_thread__gda_thread_meta_udt_cols(DetailedThreadData * data,GError ** error)226 sub_thread__gda_thread_meta_udt_cols (DetailedThreadData *data, GError **error)
227 {
228 	/* WARNING: function executed in sub thread! */
229 	sub_thread_detailed3_core (PROV_CLASS (data->prov)->meta_funcs.udt_cols, "udt_cols");
230 }
231 
232 gboolean
_gda_thread_meta_udt_cols(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error,const GValue * udt_catalog,const GValue * udt_schema,const GValue * udt_name)233 _gda_thread_meta_udt_cols (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
234 			   GdaMetaStore *store, GdaMetaContext *context, GError **error,
235 			   const GValue *udt_catalog, const GValue *udt_schema, const GValue *udt_name)
236 {
237 	main_thread_detailed_core (sub_thread__gda_thread_meta_udt_cols, prov, cnc, store, context,
238 				    udt_catalog, udt_schema, udt_name, NULL, error);
239 }
240 
241 static gpointer
sub_thread__gda_thread_meta__enums(BasicThreadData * data,GError ** error)242 sub_thread__gda_thread_meta__enums (BasicThreadData *data, GError **error)
243 {
244 	/* WARNING: function executed in sub thread! */
245 	sub_thread_basic_core (PROV_CLASS (data->prov)->meta_funcs._enums, "_enums");
246 }
247 
248 gboolean
_gda_thread_meta__enums(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error)249 _gda_thread_meta__enums (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
250 			 GdaMetaStore *store, GdaMetaContext *context, GError **error)
251 {
252 	main_thread_basic_core (sub_thread__gda_thread_meta__enums, prov, cnc, store, context, error);
253 }
254 
255 static gpointer
sub_thread__gda_thread_meta_enums(DetailedThreadData * data,GError ** error)256 sub_thread__gda_thread_meta_enums (DetailedThreadData *data, GError **error)
257 {
258 	/* WARNING: function executed in sub thread! */
259 	sub_thread_detailed3_core (PROV_CLASS (data->prov)->meta_funcs.enums, "enums");
260 }
261 
262 gboolean
_gda_thread_meta_enums(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error,const GValue * udt_catalog,const GValue * udt_schema,const GValue * udt_name)263 _gda_thread_meta_enums (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
264 			GdaMetaStore *store, GdaMetaContext *context, GError **error,
265 			const GValue *udt_catalog, const GValue *udt_schema, const GValue *udt_name)
266 {
267 	main_thread_detailed_core (sub_thread__gda_thread_meta_enums, prov, cnc, store, context,
268 				    udt_catalog, udt_schema, udt_name, NULL, error);
269 }
270 
271 static gpointer
sub_thread__gda_thread_meta__domains(BasicThreadData * data,GError ** error)272 sub_thread__gda_thread_meta__domains (BasicThreadData *data, GError **error)
273 {
274 	/* WARNING: function executed in sub thread! */
275 	sub_thread_basic_core (PROV_CLASS (data->prov)->meta_funcs._domains, "_domains");
276 }
277 
278 gboolean
_gda_thread_meta__domains(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error)279 _gda_thread_meta__domains (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
280 			   GdaMetaStore *store, GdaMetaContext *context, GError **error)
281 {
282 	main_thread_basic_core (sub_thread__gda_thread_meta__domains, prov, cnc, store, context, error);
283 }
284 
285 static gpointer
sub_thread__gda_thread_meta_domains(DetailedThreadData * data,GError ** error)286 sub_thread__gda_thread_meta_domains (DetailedThreadData *data, GError **error)
287 {
288 	/* WARNING: function executed in sub thread! */
289 	sub_thread_detailed2_core (PROV_CLASS (data->prov)->meta_funcs.domains, "domains");
290 }
291 
292 gboolean
_gda_thread_meta_domains(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error,const GValue * domain_catalog,const GValue * domain_schema)293 _gda_thread_meta_domains (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
294 			  GdaMetaStore *store, GdaMetaContext *context, GError **error,
295 			  const GValue *domain_catalog, const GValue *domain_schema)
296 {
297 	main_thread_detailed_core (sub_thread__gda_thread_meta_domains, prov, cnc, store, context,
298 				    domain_catalog, domain_schema, NULL, NULL, error);
299 }
300 
301 static gpointer
sub_thread__gda_thread_meta__constraints_dom(BasicThreadData * data,GError ** error)302 sub_thread__gda_thread_meta__constraints_dom (BasicThreadData *data, GError **error)
303 {
304 	/* WARNING: function executed in sub thread! */
305 	sub_thread_basic_core (PROV_CLASS (data->prov)->meta_funcs._constraints_dom, "_constraints_dom");
306 }
307 
308 gboolean
_gda_thread_meta__constraints_dom(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error)309 _gda_thread_meta__constraints_dom (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
310 				   GdaMetaStore *store, GdaMetaContext *context, GError **error)
311 {
312 	main_thread_basic_core (sub_thread__gda_thread_meta__constraints_dom, prov, cnc, store, context, error);
313 }
314 
315 static gpointer
sub_thread__gda_thread_meta_constraints_dom(DetailedThreadData * data,GError ** error)316 sub_thread__gda_thread_meta_constraints_dom (DetailedThreadData *data, GError **error)
317 {
318 	/* WARNING: function executed in sub thread! */
319 	sub_thread_detailed3_core (PROV_CLASS (data->prov)->meta_funcs.constraints_dom, "constraints_dom");
320 }
321 
322 gboolean
_gda_thread_meta_constraints_dom(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error,const GValue * domain_catalog,const GValue * domain_schema,const GValue * domain_name)323 _gda_thread_meta_constraints_dom (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
324 				  GdaMetaStore *store, GdaMetaContext *context, GError **error,
325 				  const GValue *domain_catalog, const GValue *domain_schema,
326 				  const GValue *domain_name)
327 {
328 	main_thread_detailed_core (sub_thread__gda_thread_meta_constraints_dom, prov, cnc, store, context,
329 				    domain_catalog, domain_schema, domain_name, NULL, error);
330 }
331 
332 static gpointer
sub_thread__gda_thread_meta__el_types(BasicThreadData * data,GError ** error)333 sub_thread__gda_thread_meta__el_types (BasicThreadData *data, GError **error)
334 {
335 	/* WARNING: function executed in sub thread! */
336 	sub_thread_basic_core (PROV_CLASS (data->prov)->meta_funcs._el_types, "_el_types");
337 }
338 
339 gboolean
_gda_thread_meta__el_types(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error)340 _gda_thread_meta__el_types (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
341 			    GdaMetaStore *store, GdaMetaContext *context, GError **error)
342 {
343 	main_thread_basic_core (sub_thread__gda_thread_meta__el_types, prov, cnc, store, context, error);
344 }
345 
346 static gpointer
sub_thread__gda_thread_meta_el_types(DetailedThreadData * data,GError ** error)347 sub_thread__gda_thread_meta_el_types (DetailedThreadData *data, GError **error)
348 {
349 	/* WARNING: function executed in sub thread! */
350 	sub_thread_detailed1_core (PROV_CLASS (data->prov)->meta_funcs.el_types, "el_types");
351 }
352 
353 gboolean
_gda_thread_meta_el_types(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error,const GValue * specific_name)354 _gda_thread_meta_el_types (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
355 			   GdaMetaStore *store, GdaMetaContext *context, GError **error,
356 			   const GValue *specific_name)
357 {
358 	main_thread_detailed_core (sub_thread__gda_thread_meta_el_types, prov, cnc, store, context,
359 				    specific_name, NULL, NULL, NULL, error);
360 }
361 
362 static gpointer
sub_thread__gda_thread_meta__collations(BasicThreadData * data,GError ** error)363 sub_thread__gda_thread_meta__collations (BasicThreadData *data, GError **error)
364 {
365 	/* WARNING: function executed in sub thread! */
366 	sub_thread_basic_core (PROV_CLASS (data->prov)->meta_funcs._collations, "_collations");
367 }
368 
369 gboolean
_gda_thread_meta__collations(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error)370 _gda_thread_meta__collations (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
371 			      GdaMetaStore *store, GdaMetaContext *context, GError **error)
372 {
373 	main_thread_basic_core (sub_thread__gda_thread_meta__collations, prov, cnc, store, context, error);
374 }
375 
376 static gpointer
sub_thread__gda_thread_meta_collations(DetailedThreadData * data,GError ** error)377 sub_thread__gda_thread_meta_collations (DetailedThreadData *data, GError **error)
378 {
379 	/* WARNING: function executed in sub thread! */
380 	sub_thread_detailed3_core (PROV_CLASS (data->prov)->meta_funcs.collations, "collations");
381 }
382 
383 gboolean
_gda_thread_meta_collations(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error,const GValue * collation_catalog,const GValue * collation_schema,const GValue * collation_name_n)384 _gda_thread_meta_collations (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
385 			     GdaMetaStore *store, GdaMetaContext *context, GError **error,
386 			     const GValue *collation_catalog, const GValue *collation_schema,
387 			     const GValue *collation_name_n)
388 {
389 	main_thread_detailed_core (sub_thread__gda_thread_meta_collations, prov, cnc, store, context,
390 				    collation_catalog, collation_schema, collation_name_n, NULL, error);
391 }
392 
393 static gpointer
sub_thread__gda_thread_meta__character_sets(BasicThreadData * data,GError ** error)394 sub_thread__gda_thread_meta__character_sets (BasicThreadData *data, GError **error)
395 {
396 	/* WARNING: function executed in sub thread! */
397 	sub_thread_basic_core (PROV_CLASS (data->prov)->meta_funcs._character_sets, "_character_sets");
398 }
399 
400 gboolean
_gda_thread_meta__character_sets(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error)401 _gda_thread_meta__character_sets (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
402 				  GdaMetaStore *store, GdaMetaContext *context, GError **error)
403 {
404 	main_thread_basic_core (sub_thread__gda_thread_meta__character_sets, prov, cnc, store, context, error);
405 }
406 
407 static gpointer
sub_thread__gda_thread_meta_character_sets(DetailedThreadData * data,GError ** error)408 sub_thread__gda_thread_meta_character_sets (DetailedThreadData *data, GError **error)
409 {
410 	/* WARNING: function executed in sub thread! */
411 	sub_thread_detailed3_core (PROV_CLASS (data->prov)->meta_funcs.character_sets, "character_sets");
412 }
413 
414 gboolean
_gda_thread_meta_character_sets(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error,const GValue * chset_catalog,const GValue * chset_schema,const GValue * chset_name_n)415 _gda_thread_meta_character_sets (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
416 				 GdaMetaStore *store, GdaMetaContext *context, GError **error,
417 				 const GValue *chset_catalog, const GValue *chset_schema,
418 				 const GValue *chset_name_n)
419 {
420 	main_thread_detailed_core (sub_thread__gda_thread_meta_character_sets, prov, cnc, store, context,
421 				    chset_catalog, chset_schema, chset_name_n, NULL, error);
422 }
423 
424 
425 static gpointer
sub_thread__gda_thread_meta__schemata(BasicThreadData * data,GError ** error)426 sub_thread__gda_thread_meta__schemata (BasicThreadData *data, GError **error)
427 {
428 	/* WARNING: function executed in sub thread! */
429 	sub_thread_basic_core (PROV_CLASS (data->prov)->meta_funcs._schemata, "_schemata");
430 }
431 
432 gboolean
_gda_thread_meta__schemata(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error)433 _gda_thread_meta__schemata (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
434 			    GdaMetaStore *store, GdaMetaContext *context, GError **error)
435 {
436 	main_thread_basic_core (sub_thread__gda_thread_meta__schemata, prov, cnc, store, context, error);
437 }
438 
439 static gpointer
sub_thread__gda_thread_meta_schemata(DetailedThreadData * data,GError ** error)440 sub_thread__gda_thread_meta_schemata (DetailedThreadData *data, GError **error)
441 {
442 	/* WARNING: function executed in sub thread! */
443 	sub_thread_detailed2_core (PROV_CLASS (data->prov)->meta_funcs.schemata, "schemata");
444 }
445 
446 gboolean
_gda_thread_meta_schemata(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error,const GValue * catalog_name,const GValue * schema_name_n)447 _gda_thread_meta_schemata (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
448 			   GdaMetaStore *store, GdaMetaContext *context, GError **error,
449 			   const GValue *catalog_name, const GValue *schema_name_n)
450 {
451 	main_thread_detailed_core (sub_thread__gda_thread_meta_schemata, prov, cnc, store, context,
452 				    catalog_name, schema_name_n, NULL, NULL, error);
453 }
454 
455 static gpointer
sub_thread__gda_thread_meta__tables_views(BasicThreadData * data,GError ** error)456 sub_thread__gda_thread_meta__tables_views (BasicThreadData *data, GError **error)
457 {
458 	/* WARNING: function executed in sub thread! */
459 	sub_thread_basic_core (PROV_CLASS (data->prov)->meta_funcs._tables_views, "_tables_views");
460 }
461 
462 gboolean
_gda_thread_meta__tables_views(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error)463 _gda_thread_meta__tables_views (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
464 				GdaMetaStore *store, GdaMetaContext *context, GError **error)
465 {
466 	main_thread_basic_core (sub_thread__gda_thread_meta__tables_views, prov, cnc, store, context, error);
467 }
468 
469 static gpointer
sub_thread__gda_thread_meta_tables_views(DetailedThreadData * data,GError ** error)470 sub_thread__gda_thread_meta_tables_views (DetailedThreadData *data, GError **error)
471 {
472 	/* WARNING: function executed in sub thread! */
473 	sub_thread_detailed3_core (PROV_CLASS (data->prov)->meta_funcs.tables_views, "tables_views");
474 }
475 
476 gboolean
_gda_thread_meta_tables_views(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error,const GValue * table_catalog,const GValue * table_schema,const GValue * table_name_n)477 _gda_thread_meta_tables_views (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
478 			       GdaMetaStore *store, GdaMetaContext *context, GError **error,
479 			       const GValue *table_catalog, const GValue *table_schema,
480 			       const GValue *table_name_n)
481 {
482 	main_thread_detailed_core (sub_thread__gda_thread_meta_tables_views, prov, cnc, store, context,
483 				    table_catalog, table_schema, table_name_n, NULL, error);
484 }
485 
486 static gpointer
sub_thread__gda_thread_meta__columns(BasicThreadData * data,GError ** error)487 sub_thread__gda_thread_meta__columns (BasicThreadData *data, GError **error)
488 {
489 	/* WARNING: function executed in sub thread! */
490 	sub_thread_basic_core (PROV_CLASS (data->prov)->meta_funcs._columns, "_columns");
491 }
492 
493 gboolean
_gda_thread_meta__columns(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error)494 _gda_thread_meta__columns (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
495 			   GdaMetaStore *store, GdaMetaContext *context, GError **error)
496 {
497 	main_thread_basic_core (sub_thread__gda_thread_meta__columns, prov, cnc, store, context, error);
498 }
499 
500 static gpointer
sub_thread__gda_thread_meta_columns(DetailedThreadData * data,GError ** error)501 sub_thread__gda_thread_meta_columns (DetailedThreadData *data, GError **error)
502 {
503 	/* WARNING: function executed in sub thread! */
504 	sub_thread_detailed3_core (PROV_CLASS (data->prov)->meta_funcs.columns, "columns");
505 }
506 
507 gboolean
_gda_thread_meta_columns(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error,const GValue * table_catalog,const GValue * table_schema,const GValue * table_name)508 _gda_thread_meta_columns (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
509 			  GdaMetaStore *store, GdaMetaContext *context, GError **error,
510 			  const GValue *table_catalog, const GValue *table_schema,
511 			  const GValue *table_name)
512 {
513 	main_thread_detailed_core (sub_thread__gda_thread_meta_columns, prov, cnc, store, context,
514 				    table_catalog, table_schema, table_name, NULL, error);
515 }
516 
517 static gpointer
sub_thread__gda_thread_meta__view_cols(BasicThreadData * data,GError ** error)518 sub_thread__gda_thread_meta__view_cols (BasicThreadData *data, GError **error)
519 {
520 	/* WARNING: function executed in sub thread! */
521 	sub_thread_basic_core (PROV_CLASS (data->prov)->meta_funcs._view_cols, "_view_cols");
522 }
523 
524 gboolean
_gda_thread_meta__view_cols(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error)525 _gda_thread_meta__view_cols (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
526 			     GdaMetaStore *store, GdaMetaContext *context, GError **error)
527 {
528 	main_thread_basic_core (sub_thread__gda_thread_meta__view_cols, prov, cnc, store, context, error);
529 }
530 
531 static gpointer
sub_thread__gda_thread_meta_view_cols(DetailedThreadData * data,GError ** error)532 sub_thread__gda_thread_meta_view_cols (DetailedThreadData *data, GError **error)
533 {
534 	/* WARNING: function executed in sub thread! */
535 	sub_thread_detailed3_core (PROV_CLASS (data->prov)->meta_funcs.view_cols, "view_cols");
536 }
537 
538 gboolean
_gda_thread_meta_view_cols(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error,const GValue * view_catalog,const GValue * view_schema,const GValue * view_name)539 _gda_thread_meta_view_cols (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
540 			    GdaMetaStore *store, GdaMetaContext *context, GError **error,
541 			    const GValue *view_catalog, const GValue *view_schema,
542 			    const GValue *view_name)
543 {
544 	main_thread_detailed_core (sub_thread__gda_thread_meta_view_cols, prov, cnc, store, context,
545 				    view_catalog, view_schema, view_name, NULL, error);
546 }
547 
548 static gpointer
sub_thread__gda_thread_meta__constraints_tab(BasicThreadData * data,GError ** error)549 sub_thread__gda_thread_meta__constraints_tab (BasicThreadData *data, GError **error)
550 {
551 	/* WARNING: function executed in sub thread! */
552 	sub_thread_basic_core (PROV_CLASS (data->prov)->meta_funcs._constraints_tab, "_constraints_tab");
553 }
554 
555 gboolean
_gda_thread_meta__constraints_tab(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error)556 _gda_thread_meta__constraints_tab (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
557 				   GdaMetaStore *store, GdaMetaContext *context, GError **error)
558 {
559 	main_thread_basic_core (sub_thread__gda_thread_meta__constraints_tab, prov, cnc, store, context, error);
560 }
561 
562 static gpointer
sub_thread__gda_thread_meta_constraints_tab(DetailedThreadData * data,GError ** error)563 sub_thread__gda_thread_meta_constraints_tab (DetailedThreadData *data, GError **error)
564 {
565 	/* WARNING: function executed in sub thread! */
566 	sub_thread_detailed4_core (PROV_CLASS (data->prov)->meta_funcs.constraints_tab, "constraints_tab");
567 }
568 
569 gboolean
_gda_thread_meta_constraints_tab(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error,const GValue * table_catalog,const GValue * table_schema,const GValue * table_name,const GValue * constraint_name_n)570 _gda_thread_meta_constraints_tab (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
571 				  GdaMetaStore *store, GdaMetaContext *context, GError **error,
572 				  const GValue *table_catalog, const GValue *table_schema,
573 				  const GValue *table_name, const GValue *constraint_name_n)
574 {
575 	main_thread_detailed_core (sub_thread__gda_thread_meta_constraints_tab, prov, cnc, store, context,
576 				   table_catalog, table_schema, table_name, constraint_name_n, error);
577 }
578 
579 static gpointer
sub_thread__gda_thread_meta__constraints_ref(BasicThreadData * data,GError ** error)580 sub_thread__gda_thread_meta__constraints_ref (BasicThreadData *data, GError **error)
581 {
582 	/* WARNING: function executed in sub thread! */
583 	sub_thread_basic_core (PROV_CLASS (data->prov)->meta_funcs._constraints_ref, "_constraints_ref");
584 }
585 
586 gboolean
_gda_thread_meta__constraints_ref(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error)587 _gda_thread_meta__constraints_ref (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
588 				   GdaMetaStore *store, GdaMetaContext *context, GError **error)
589 {
590 	main_thread_basic_core (sub_thread__gda_thread_meta__constraints_ref, prov, cnc, store, context, error);
591 }
592 
593 static gpointer
sub_thread__gda_thread_meta_constraints_ref(DetailedThreadData * data,GError ** error)594 sub_thread__gda_thread_meta_constraints_ref (DetailedThreadData *data, GError **error)
595 {
596 	/* WARNING: function executed in sub thread! */
597 	sub_thread_detailed4_core (PROV_CLASS (data->prov)->meta_funcs.constraints_ref, "constraints_ref");
598 }
599 
600 gboolean
_gda_thread_meta_constraints_ref(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error,const GValue * table_catalog,const GValue * table_schema,const GValue * table_name,const GValue * constraint_name)601 _gda_thread_meta_constraints_ref (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
602 				  GdaMetaStore *store, GdaMetaContext *context, GError **error,
603 				  const GValue *table_catalog, const GValue *table_schema, const GValue *table_name,
604 				  const GValue *constraint_name)
605 {
606 	main_thread_detailed_core (sub_thread__gda_thread_meta_constraints_ref, prov, cnc, store, context,
607 				    table_catalog, table_schema, table_name, constraint_name, error);
608 }
609 
610 static gpointer
sub_thread__gda_thread_meta__key_columns(BasicThreadData * data,GError ** error)611 sub_thread__gda_thread_meta__key_columns (BasicThreadData *data, GError **error)
612 {
613 	/* WARNING: function executed in sub thread! */
614 	sub_thread_basic_core (PROV_CLASS (data->prov)->meta_funcs._key_columns, "_key_columns");
615 }
616 
617 gboolean
_gda_thread_meta__key_columns(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error)618 _gda_thread_meta__key_columns (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
619 			       GdaMetaStore *store, GdaMetaContext *context, GError **error)
620 {
621 	main_thread_basic_core (sub_thread__gda_thread_meta__key_columns, prov, cnc, store, context, error);
622 }
623 
624 static gpointer
sub_thread__gda_thread_meta_key_columns(DetailedThreadData * data,GError ** error)625 sub_thread__gda_thread_meta_key_columns (DetailedThreadData *data, GError **error)
626 {
627 	/* WARNING: function executed in sub thread! */
628 	sub_thread_detailed4_core (PROV_CLASS (data->prov)->meta_funcs.key_columns, "key_columns");
629 }
630 
631 gboolean
_gda_thread_meta_key_columns(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error,const GValue * table_catalog,const GValue * table_schema,const GValue * table_name,const GValue * constraint_name)632 _gda_thread_meta_key_columns (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
633 			      GdaMetaStore *store, GdaMetaContext *context, GError **error,
634 			      const GValue *table_catalog, const GValue *table_schema,
635 			      const GValue *table_name, const GValue *constraint_name)
636 {
637 	main_thread_detailed_core (sub_thread__gda_thread_meta_key_columns, prov, cnc, store, context,
638 				    table_catalog, table_schema, table_name, constraint_name, error);
639 }
640 
641 static gpointer
sub_thread__gda_thread_meta__check_columns(BasicThreadData * data,GError ** error)642 sub_thread__gda_thread_meta__check_columns (BasicThreadData *data, GError **error)
643 {
644 	/* WARNING: function executed in sub thread! */
645 	sub_thread_basic_core (PROV_CLASS (data->prov)->meta_funcs._check_columns, "_check_columns");
646 }
647 
648 gboolean
_gda_thread_meta__check_columns(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error)649 _gda_thread_meta__check_columns (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
650 				 GdaMetaStore *store, GdaMetaContext *context, GError **error)
651 {
652 	main_thread_basic_core (sub_thread__gda_thread_meta__check_columns, prov, cnc, store, context, error);
653 }
654 
655 static gpointer
sub_thread__gda_thread_meta_check_columns(DetailedThreadData * data,GError ** error)656 sub_thread__gda_thread_meta_check_columns (DetailedThreadData *data, GError **error)
657 {
658 	/* WARNING: function executed in sub thread! */
659 	sub_thread_detailed4_core (PROV_CLASS (data->prov)->meta_funcs.check_columns, "check_columns");
660 }
661 
662 gboolean
_gda_thread_meta_check_columns(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error,const GValue * table_catalog,const GValue * table_schema,const GValue * table_name,const GValue * constraint_name)663 _gda_thread_meta_check_columns (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
664 				GdaMetaStore *store, GdaMetaContext *context, GError **error,
665 				const GValue *table_catalog, const GValue *table_schema,
666 				const GValue *table_name, const GValue *constraint_name)
667 {
668 	main_thread_detailed_core (sub_thread__gda_thread_meta_check_columns, prov, cnc, store, context,
669 				    table_catalog, table_schema, table_name, constraint_name, error);
670 }
671 
672 static gpointer
sub_thread__gda_thread_meta__triggers(BasicThreadData * data,GError ** error)673 sub_thread__gda_thread_meta__triggers (BasicThreadData *data, GError **error)
674 {
675 	/* WARNING: function executed in sub thread! */
676 	sub_thread_basic_core (PROV_CLASS (data->prov)->meta_funcs._triggers, "_triggers");
677 }
678 
679 gboolean
_gda_thread_meta__triggers(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error)680 _gda_thread_meta__triggers (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
681 			    GdaMetaStore *store, GdaMetaContext *context, GError **error)
682 {
683 	main_thread_basic_core (sub_thread__gda_thread_meta__triggers, prov, cnc, store, context, error);
684 }
685 
686 static gpointer
sub_thread__gda_thread_meta_triggers(DetailedThreadData * data,GError ** error)687 sub_thread__gda_thread_meta_triggers (DetailedThreadData *data, GError **error)
688 {
689 	/* WARNING: function executed in sub thread! */
690 	sub_thread_detailed3_core (PROV_CLASS (data->prov)->meta_funcs.triggers, "triggers");
691 }
692 
693 gboolean
_gda_thread_meta_triggers(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error,const GValue * table_catalog,const GValue * table_schema,const GValue * table_name)694 _gda_thread_meta_triggers (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
695 			   GdaMetaStore *store, GdaMetaContext *context, GError **error,
696 			   const GValue *table_catalog, const GValue *table_schema,
697 			   const GValue *table_name)
698 {
699 	main_thread_detailed_core (sub_thread__gda_thread_meta_triggers, prov, cnc, store, context,
700 				    table_catalog, table_schema, table_name, NULL, error);
701 }
702 
703 static gpointer
sub_thread__gda_thread_meta__routines(BasicThreadData * data,GError ** error)704 sub_thread__gda_thread_meta__routines (BasicThreadData *data, GError **error)
705 {
706 	/* WARNING: function executed in sub thread! */
707 	sub_thread_basic_core (PROV_CLASS (data->prov)->meta_funcs._routines, "_routines");
708 }
709 
710 gboolean
_gda_thread_meta__routines(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error)711 _gda_thread_meta__routines (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
712 			    GdaMetaStore *store, GdaMetaContext *context, GError **error)
713 {
714 	main_thread_basic_core (sub_thread__gda_thread_meta__routines, prov, cnc, store, context, error);
715 }
716 
717 static gpointer
sub_thread__gda_thread_meta_routines(DetailedThreadData * data,GError ** error)718 sub_thread__gda_thread_meta_routines (DetailedThreadData *data, GError **error)
719 {
720 	/* WARNING: function executed in sub thread! */
721 	sub_thread_detailed3_core (PROV_CLASS (data->prov)->meta_funcs.routines, "routines");
722 }
723 
724 gboolean
_gda_thread_meta_routines(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error,const GValue * routine_catalog,const GValue * routine_schema,const GValue * routine_name_n)725 _gda_thread_meta_routines (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
726 			   GdaMetaStore *store, GdaMetaContext *context, GError **error,
727 			   const GValue *routine_catalog, const GValue *routine_schema,
728 			   const GValue *routine_name_n)
729 {
730 	main_thread_detailed_core (sub_thread__gda_thread_meta_routines, prov, cnc, store, context,
731 				    routine_catalog, routine_schema, routine_name_n, NULL, error);
732 }
733 
734 static gpointer
sub_thread__gda_thread_meta__routine_col(BasicThreadData * data,GError ** error)735 sub_thread__gda_thread_meta__routine_col (BasicThreadData *data, GError **error)
736 {
737 	/* WARNING: function executed in sub thread! */
738 	sub_thread_basic_core (PROV_CLASS (data->prov)->meta_funcs._routine_col, "_routine_col");
739 }
740 
741 gboolean
_gda_thread_meta__routine_col(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error)742 _gda_thread_meta__routine_col (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
743 			       GdaMetaStore *store, GdaMetaContext *context, GError **error)
744 {
745 	main_thread_basic_core (sub_thread__gda_thread_meta__routine_col, prov, cnc, store, context, error);
746 }
747 
748 static gpointer
sub_thread__gda_thread_meta_routine_col(DetailedThreadData * data,GError ** error)749 sub_thread__gda_thread_meta_routine_col (DetailedThreadData *data, GError **error)
750 {
751 	/* WARNING: function executed in sub thread! */
752 	sub_thread_detailed3_core (PROV_CLASS (data->prov)->meta_funcs.routine_col, "routine_col");
753 }
754 
755 gboolean
_gda_thread_meta_routine_col(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error,const GValue * rout_catalog,const GValue * rout_schema,const GValue * rout_name)756 _gda_thread_meta_routine_col (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
757 			      GdaMetaStore *store, GdaMetaContext *context, GError **error,
758 			      const GValue *rout_catalog, const GValue *rout_schema,
759 			      const GValue *rout_name)
760 {
761 	main_thread_detailed_core (sub_thread__gda_thread_meta_routine_col, prov, cnc, store, context,
762 				    rout_catalog, rout_schema, rout_name, NULL, error);
763 }
764 
765 static gpointer
sub_thread__gda_thread_meta__routine_par(BasicThreadData * data,GError ** error)766 sub_thread__gda_thread_meta__routine_par (BasicThreadData *data, GError **error)
767 {
768 	/* WARNING: function executed in sub thread! */
769 	sub_thread_basic_core (PROV_CLASS (data->prov)->meta_funcs._routine_par, "_routine_par");
770 }
771 
772 gboolean
_gda_thread_meta__routine_par(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error)773 _gda_thread_meta__routine_par (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
774 			       GdaMetaStore *store, GdaMetaContext *context, GError **error)
775 {
776 	main_thread_basic_core (sub_thread__gda_thread_meta__routine_par, prov, cnc, store, context, error);
777 }
778 
779 static gpointer
sub_thread__gda_thread_meta_routine_par(DetailedThreadData * data,GError ** error)780 sub_thread__gda_thread_meta_routine_par (DetailedThreadData *data, GError **error)
781 {
782 	/* WARNING: function executed in sub thread! */
783 	sub_thread_detailed3_core (PROV_CLASS (data->prov)->meta_funcs.routine_par, "routine_par");
784 }
785 
786 gboolean
_gda_thread_meta_routine_par(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error,const GValue * rout_catalog,const GValue * rout_schema,const GValue * rout_name)787 _gda_thread_meta_routine_par (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
788 			      GdaMetaStore *store, GdaMetaContext *context, GError **error,
789 			      const GValue *rout_catalog, const GValue *rout_schema,
790 			      const GValue *rout_name)
791 {
792 	main_thread_detailed_core (sub_thread__gda_thread_meta_routine_par, prov, cnc, store, context,
793 				   rout_catalog, rout_schema, rout_name, NULL, error);
794 }
795 
796 static gpointer
sub_thread__gda_thread_meta__indexes_tab(DetailedThreadData * data,GError ** error)797 sub_thread__gda_thread_meta__indexes_tab (DetailedThreadData *data, GError **error)
798 {
799 	/* WARNING: function executed in sub thread! */
800 	sub_thread_basic_core (PROV_CLASS (data->prov)->meta_funcs._indexes_tab, "_table_indexes");
801 }
802 
803 gboolean
_gda_thread_meta__indexes_tab(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error)804 _gda_thread_meta__indexes_tab (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
805 			       GdaMetaStore *store, GdaMetaContext *context, GError **error)
806 {
807 	main_thread_basic_core (sub_thread__gda_thread_meta__indexes_tab, prov, cnc, store, context, error);
808 }
809 
810 static gpointer
sub_thread__gda_thread_meta_indexes_tab(DetailedThreadData * data,GError ** error)811 sub_thread__gda_thread_meta_indexes_tab (DetailedThreadData *data, GError **error)
812 {
813 	/* WARNING: function executed in sub thread! */
814 	sub_thread_detailed4_core (PROV_CLASS (data->prov)->meta_funcs.indexes_tab, "table_indexes");
815 }
816 
817 gboolean
_gda_thread_meta_indexes_tab(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error,const GValue * table_catalog,const GValue * table_schema,const GValue * table_name,const GValue * index_name_n)818 _gda_thread_meta_indexes_tab (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
819 			      GdaMetaStore *store, GdaMetaContext *context, GError **error,
820 			      const GValue *table_catalog, const GValue *table_schema, const GValue *table_name,
821 			      const GValue *index_name_n)
822 {
823 	main_thread_detailed_core (sub_thread__gda_thread_meta_indexes_tab, prov, cnc, store, context,
824 				   table_catalog, table_schema, table_name, index_name_n, error);
825 }
826 
827 static gpointer
sub_thread__gda_thread_meta__index_cols(DetailedThreadData * data,GError ** error)828 sub_thread__gda_thread_meta__index_cols (DetailedThreadData *data, GError **error)
829 {
830 	/* WARNING: function executed in sub thread! */
831 	sub_thread_basic_core (PROV_CLASS (data->prov)->meta_funcs._index_cols, "_index_column_usage");
832 }
833 
834 gboolean
_gda_thread_meta__index_cols(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error)835 _gda_thread_meta__index_cols (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
836 			      GdaMetaStore *store, GdaMetaContext *context, GError **error)
837 {
838 	main_thread_basic_core (sub_thread__gda_thread_meta__index_cols, prov, cnc, store, context, error);
839 }
840 
841 static gpointer
sub_thread__gda_thread_meta_index_cols(DetailedThreadData * data,GError ** error)842 sub_thread__gda_thread_meta_index_cols (DetailedThreadData *data, GError **error)
843 {
844 	/* WARNING: function executed in sub thread! */
845 	sub_thread_detailed4_core (PROV_CLASS (data->prov)->meta_funcs.index_cols, "index_column_usage");
846 }
847 
848 gboolean
_gda_thread_meta_index_cols(G_GNUC_UNUSED GdaServerProvider * prov,GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error,const GValue * table_catalog,const GValue * table_schema,const GValue * table_name,const GValue * index_name)849 _gda_thread_meta_index_cols (G_GNUC_UNUSED GdaServerProvider *prov, GdaConnection *cnc,
850 			     GdaMetaStore *store, GdaMetaContext *context, GError **error,
851 			     const GValue *table_catalog, const GValue *table_schema,
852 			     const GValue *table_name, const GValue *index_name)
853 {
854 	main_thread_detailed_core (sub_thread__gda_thread_meta_index_cols, prov, cnc, store, context,
855 				   table_catalog, table_schema, table_name, index_name, error);
856 }
857