1 /*
2  * Copyright (C) YEAR The GNOME Foundation.
3  *
4  * AUTHORS:
5  *      TO_ADD: your name and email
6  *      Vivien Malerba <malerba@gnome-db.org>
7  *
8  * This Library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Library General Public License as
10  * published by the Free Software Foundation; either version 2 of the
11  * License, or (at your option) any later version.
12  *
13  * This Library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  * Library General Public License for more details.
17  *
18  * You should have received a copy of the GNU Library General Public
19  * License along with this Library; see the file COPYING.LIB.  If not,
20  * write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21  * Boston, MA  02110-1301, USA.
22  */
23 
24 #include <string.h>
25 #include "gda-capi.h"
26 #include "gda-capi-meta.h"
27 #include "gda-capi-provider.h"
28 #include <libgda/gda-meta-store.h>
29 #include <libgda/sql-parser/gda-sql-parser.h>
30 #include <glib/gi18n-lib.h>
31 #include <libgda/gda-server-provider-extra.h>
32 #include <libgda/gda-connection-private.h>
33 #include <libgda/gda-data-model-array.h>
34 #include <libgda/gda-set.h>
35 #include <libgda/gda-holder.h>
36 #include <libgda/gda-debug-macros.h>
37 #include <libgda/sqlite/keywords_hash.h>
38 #include "keywords_hash.c" /* this one is dynamically generated */
39 
40 /*
41  * predefined statements' IDs
42  */
43 typedef enum {
44         I_STMT_1,
45 } InternalStatementItem;
46 
47 
48 /*
49  * predefined statements' SQL
50  */
51 static gchar *internal_sql[] = {
52 	"SQL for I_STMT_1"
53 };
54 
55 /*
56  * global static values, and
57  * predefined statements' GdaStatement, all initialized in _gda_capi_provider_meta_init()
58  */
59 static GMutex init_mutex;
60 static GdaStatement **internal_stmt = NULL;
61 static GdaSet        *i_set = NULL;
62 static GdaSqlParser  *internal_parser = NULL;
63 /* TO_ADD: other static values */
64 
65 
66 /*
67  * Meta initialization
68  */
69 void
_gda_capi_provider_meta_init(GdaServerProvider * provider)70 _gda_capi_provider_meta_init (GdaServerProvider *provider)
71 {
72 	g_mutex_lock (&init_mutex);
73 
74 	if (!internal_stmt) {
75 		InternalStatementItem i;
76 		internal_parser = gda_server_provider_internal_get_parser (provider);
77 		internal_stmt = g_new0 (GdaStatement *, sizeof (internal_sql) / sizeof (gchar*));
78 		for (i = I_STMT_1; i < sizeof (internal_sql) / sizeof (gchar*); i++) {
79 			internal_stmt[i] = gda_sql_parser_parse_string (internal_parser, internal_sql[i], NULL, NULL);
80 			if (!internal_stmt[i])
81 				g_error ("Could not parse internal statement: %s\n", internal_sql[i]);
82 		}
83 
84 		/* initialize static values here */
85 		i_set = gda_set_new_inline (4, "cat", G_TYPE_STRING, "",
86 					    "name", G_TYPE_STRING, "",
87 					    "schema", G_TYPE_STRING, "",
88 					    "name2", G_TYPE_STRING, "");
89 	}
90 
91 	g_mutex_unlock (&init_mutex);
92 
93 #ifdef GDA_DEBUG
94 	/* make sure the reserved keywords hash works correctly */
95         test_keywords ();
96 #endif
97 }
98 
99 gboolean
_gda_capi_meta__info(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error)100 _gda_capi_meta__info (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
101 		      GdaMetaStore *store, GdaMetaContext *context, GError **error)
102 {
103 	GdaDataModel *model = NULL;
104 	gboolean retval;
105 
106 	TO_IMPLEMENT;
107 	/* fill in @model, with something like:
108 	 * model = gda_connection_statement_execute_select (cnc, internal_stmt[I_STMT_1], NULL,
109 	 *                                                  error);
110 	 */
111 	if (!model)
112 		return FALSE;
113 
114 	gda_meta_store_set_reserved_keywords_func (store, is_keyword);
115 	retval = gda_meta_store_modify_with_context (store, context, model, error);
116 	g_object_unref (model);
117 
118 	return retval;
119 }
120 
121 gboolean
_gda_capi_meta__btypes(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error)122 _gda_capi_meta__btypes (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
123 			G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
124 			G_GNUC_UNUSED GError **error)
125 {
126 	TO_IMPLEMENT;
127 	return TRUE;
128 }
129 
130 gboolean
_gda_capi_meta__udt(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error)131 _gda_capi_meta__udt (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
132 		     G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context, G_GNUC_UNUSED GError **error)
133 {
134 	TO_IMPLEMENT;
135 	return TRUE;
136 }
137 
138 gboolean
_gda_capi_meta_udt(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,GdaMetaStore * store,GdaMetaContext * context,GError ** error,const GValue * udt_catalog,const GValue * udt_schema)139 _gda_capi_meta_udt (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
140 		    GdaMetaStore *store, GdaMetaContext *context, GError **error,
141 		    const GValue *udt_catalog, const GValue *udt_schema)
142 {
143 	GdaDataModel *model = NULL;
144 	gboolean retval = TRUE;
145 
146 	/* set internal holder's values from the arguments */
147 	if (! gda_holder_set_value (gda_set_get_holder (i_set, "cat"), udt_catalog, error))
148 		return FALSE;
149 	if (! gda_holder_set_value (gda_set_get_holder (i_set, "schema"), udt_schema, error))
150 		return FALSE;
151 
152 	TO_IMPLEMENT;
153 	/* fill in @model, with something like:
154 	 * model = gda_connection_statement_execute_select (cnc, internal_stmt[I_STMT_UDT], i_set, error);
155 	 */
156 	if (!model)
157 		return FALSE;
158 
159 	gda_meta_store_set_reserved_keywords_func (store, is_keyword);
160 	retval = gda_meta_store_modify_with_context (store, context, model, error);
161 	g_object_unref (model);
162 
163 	return retval;
164 }
165 
166 
167 gboolean
_gda_capi_meta__udt_cols(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error)168 _gda_capi_meta__udt_cols (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
169 			  G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
170 			  G_GNUC_UNUSED GError **error)
171 {
172 	TO_IMPLEMENT;
173 	return TRUE;
174 }
175 
176 gboolean
_gda_capi_meta_udt_cols(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error,G_GNUC_UNUSED const GValue * udt_catalog,G_GNUC_UNUSED const GValue * udt_schema,G_GNUC_UNUSED const GValue * udt_name)177 _gda_capi_meta_udt_cols (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
178 			 G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
179 			 G_GNUC_UNUSED GError **error, G_GNUC_UNUSED const GValue *udt_catalog,
180 			 G_GNUC_UNUSED const GValue *udt_schema, G_GNUC_UNUSED const GValue *udt_name)
181 {
182 	TO_IMPLEMENT;
183 	return TRUE;
184 }
185 
186 gboolean
_gda_capi_meta__enums(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error)187 _gda_capi_meta__enums (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
188 		       G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
189 		       G_GNUC_UNUSED GError **error)
190 {
191 	TO_IMPLEMENT;
192 	return TRUE;
193 }
194 
195 gboolean
_gda_capi_meta_enums(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error,G_GNUC_UNUSED const GValue * udt_catalog,G_GNUC_UNUSED const GValue * udt_schema,G_GNUC_UNUSED const GValue * udt_name)196 _gda_capi_meta_enums (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
197 		      G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
198 		      G_GNUC_UNUSED GError **error, G_GNUC_UNUSED const GValue *udt_catalog,
199 		      G_GNUC_UNUSED const GValue *udt_schema, G_GNUC_UNUSED const GValue *udt_name)
200 {
201 	TO_IMPLEMENT;
202 	return TRUE;
203 }
204 
205 
206 gboolean
_gda_capi_meta__domains(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error)207 _gda_capi_meta__domains (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
208 			 G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
209 			 G_GNUC_UNUSED GError **error)
210 {
211 	TO_IMPLEMENT;
212 	return TRUE;
213 }
214 
215 gboolean
_gda_capi_meta_domains(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error,G_GNUC_UNUSED const GValue * domain_catalog,G_GNUC_UNUSED const GValue * domain_schema)216 _gda_capi_meta_domains (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
217 			G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
218 			G_GNUC_UNUSED GError **error, G_GNUC_UNUSED const GValue *domain_catalog,
219 			G_GNUC_UNUSED const GValue *domain_schema)
220 {
221 	TO_IMPLEMENT;
222 	return TRUE;
223 }
224 
225 gboolean
_gda_capi_meta__constraints_dom(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error)226 _gda_capi_meta__constraints_dom (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
227 				 G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
228 				 G_GNUC_UNUSED GError **error)
229 {
230 	TO_IMPLEMENT;
231 	return TRUE;
232 }
233 
234 gboolean
_gda_capi_meta_constraints_dom(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error,G_GNUC_UNUSED const GValue * domain_catalog,G_GNUC_UNUSED const GValue * domain_schema,G_GNUC_UNUSED const GValue * domain_name)235 _gda_capi_meta_constraints_dom (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
236 				G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
237 				G_GNUC_UNUSED GError **error, G_GNUC_UNUSED const GValue *domain_catalog,
238 				G_GNUC_UNUSED const GValue *domain_schema,
239 				G_GNUC_UNUSED const GValue *domain_name)
240 {
241 	TO_IMPLEMENT;
242 	return TRUE;
243 }
244 
245 gboolean
_gda_capi_meta__el_types(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error)246 _gda_capi_meta__el_types (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
247 			  G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
248 			  G_GNUC_UNUSED GError **error)
249 {
250 	TO_IMPLEMENT;
251 	return TRUE;
252 }
253 
254 gboolean
_gda_capi_meta_el_types(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error,G_GNUC_UNUSED const GValue * specific_name)255 _gda_capi_meta_el_types (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
256 			 G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
257 			 G_GNUC_UNUSED GError **error, G_GNUC_UNUSED const GValue *specific_name)
258 {
259 	TO_IMPLEMENT;
260 	return TRUE;
261 }
262 
263 gboolean
_gda_capi_meta__collations(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error)264 _gda_capi_meta__collations (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
265 			    G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
266 			    G_GNUC_UNUSED GError **error)
267 {
268 	TO_IMPLEMENT;
269 	return TRUE;
270 }
271 
272 gboolean
_gda_capi_meta_collations(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error,G_GNUC_UNUSED const GValue * collation_catalog,G_GNUC_UNUSED const GValue * collation_schema,G_GNUC_UNUSED const GValue * collation_name_n)273 _gda_capi_meta_collations (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
274 			   G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
275 			   G_GNUC_UNUSED GError **error, G_GNUC_UNUSED const GValue *collation_catalog,
276 			   G_GNUC_UNUSED const GValue *collation_schema,
277 			   G_GNUC_UNUSED const GValue *collation_name_n)
278 {
279 	TO_IMPLEMENT;
280 	return TRUE;
281 }
282 
283 gboolean
_gda_capi_meta__character_sets(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error)284 _gda_capi_meta__character_sets (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
285 				G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
286 				G_GNUC_UNUSED GError **error)
287 {
288 	TO_IMPLEMENT;
289 	return TRUE;
290 }
291 
292 gboolean
_gda_capi_meta_character_sets(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error,G_GNUC_UNUSED const GValue * chset_catalog,G_GNUC_UNUSED const GValue * chset_schema,G_GNUC_UNUSED const GValue * chset_name_n)293 _gda_capi_meta_character_sets (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
294 			       G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
295 			       G_GNUC_UNUSED GError **error, G_GNUC_UNUSED const GValue *chset_catalog,
296 			       G_GNUC_UNUSED const GValue *chset_schema,
297 			       G_GNUC_UNUSED const GValue *chset_name_n)
298 {
299 	TO_IMPLEMENT;
300 	return TRUE;
301 }
302 
303 gboolean
_gda_capi_meta__schemata(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error)304 _gda_capi_meta__schemata (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
305 			  G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
306 			  G_GNUC_UNUSED GError **error)
307 {
308 	TO_IMPLEMENT;
309 	return TRUE;
310 }
311 
312 gboolean
_gda_capi_meta_schemata(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error,G_GNUC_UNUSED const GValue * catalog_name,G_GNUC_UNUSED const GValue * schema_name_n)313 _gda_capi_meta_schemata (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
314 			 G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
315 			 G_GNUC_UNUSED GError **error, G_GNUC_UNUSED const GValue *catalog_name,
316 			 G_GNUC_UNUSED const GValue *schema_name_n)
317 {
318 	TO_IMPLEMENT;
319 	return TRUE;
320 }
321 
322 gboolean
_gda_capi_meta__tables_views(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error)323 _gda_capi_meta__tables_views (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
324 			      G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
325 			      G_GNUC_UNUSED GError **error)
326 {
327 	TO_IMPLEMENT;
328 	return TRUE;
329 }
330 
331 gboolean
_gda_capi_meta_tables_views(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error,G_GNUC_UNUSED const GValue * table_catalog,G_GNUC_UNUSED const GValue * table_schema,G_GNUC_UNUSED const GValue * table_name_n)332 _gda_capi_meta_tables_views (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
333 			     G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
334 			     G_GNUC_UNUSED GError **error, G_GNUC_UNUSED const GValue *table_catalog,
335 			     G_GNUC_UNUSED const GValue *table_schema,
336 			     G_GNUC_UNUSED const GValue *table_name_n)
337 {
338 	TO_IMPLEMENT;
339 	return TRUE;
340 }
341 
342 gboolean
_gda_capi_meta__columns(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error)343 _gda_capi_meta__columns (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
344 			 G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
345 			 G_GNUC_UNUSED GError **error)
346 {
347 	TO_IMPLEMENT;
348 	return TRUE;
349 }
350 
351 gboolean
_gda_capi_meta_columns(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error,G_GNUC_UNUSED const GValue * table_catalog,G_GNUC_UNUSED const GValue * table_schema,G_GNUC_UNUSED const GValue * table_name)352 _gda_capi_meta_columns (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
353 			G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
354 			G_GNUC_UNUSED GError **error, G_GNUC_UNUSED const GValue *table_catalog,
355 			G_GNUC_UNUSED const GValue *table_schema, G_GNUC_UNUSED const GValue *table_name)
356 {
357 	TO_IMPLEMENT;
358 	return TRUE;
359 }
360 
361 gboolean
_gda_capi_meta__view_cols(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error)362 _gda_capi_meta__view_cols (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
363 			   G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
364 			   G_GNUC_UNUSED GError **error)
365 {
366 	TO_IMPLEMENT;
367 	return TRUE;
368 }
369 
370 gboolean
_gda_capi_meta_view_cols(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error,G_GNUC_UNUSED const GValue * view_catalog,G_GNUC_UNUSED const GValue * view_schema,G_GNUC_UNUSED const GValue * view_name)371 _gda_capi_meta_view_cols (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
372 			  G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
373 			  G_GNUC_UNUSED GError **error, G_GNUC_UNUSED const GValue *view_catalog,
374 			  G_GNUC_UNUSED const GValue *view_schema, G_GNUC_UNUSED const GValue *view_name)
375 {
376 	TO_IMPLEMENT;
377 	return TRUE;
378 }
379 
380 gboolean
_gda_capi_meta__constraints_tab(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error)381 _gda_capi_meta__constraints_tab (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
382 				 G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
383 				 G_GNUC_UNUSED GError **error)
384 {
385 	TO_IMPLEMENT;
386 	return TRUE;
387 }
388 
389 gboolean
_gda_capi_meta_constraints_tab(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error,G_GNUC_UNUSED const GValue * table_catalog,G_GNUC_UNUSED const GValue * table_schema,G_GNUC_UNUSED const GValue * table_name,G_GNUC_UNUSED const GValue * constraint_name_n)390 _gda_capi_meta_constraints_tab (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
391 				G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
392 				G_GNUC_UNUSED GError **error, G_GNUC_UNUSED const GValue *table_catalog,
393 				G_GNUC_UNUSED const GValue *table_schema,
394 				G_GNUC_UNUSED const GValue *table_name,
395 				G_GNUC_UNUSED const GValue *constraint_name_n)
396 {
397 	TO_IMPLEMENT;
398 	return TRUE;
399 }
400 
401 gboolean
_gda_capi_meta__constraints_ref(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error)402 _gda_capi_meta__constraints_ref (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
403 				 G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
404 				 G_GNUC_UNUSED GError **error)
405 {
406 	TO_IMPLEMENT;
407 	return TRUE;
408 }
409 
410 gboolean
_gda_capi_meta_constraints_ref(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error,G_GNUC_UNUSED const GValue * table_catalog,G_GNUC_UNUSED const GValue * table_schema,G_GNUC_UNUSED const GValue * table_name,G_GNUC_UNUSED const GValue * constraint_name)411 _gda_capi_meta_constraints_ref (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
412 				G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
413 				G_GNUC_UNUSED GError **error, G_GNUC_UNUSED const GValue *table_catalog,
414 				G_GNUC_UNUSED const GValue *table_schema,
415 				G_GNUC_UNUSED const GValue *table_name,
416 				G_GNUC_UNUSED const GValue *constraint_name)
417 {
418 	TO_IMPLEMENT;
419 	return TRUE;
420 }
421 
422 gboolean
_gda_capi_meta__key_columns(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error)423 _gda_capi_meta__key_columns (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
424 			     G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
425 			     G_GNUC_UNUSED GError **error)
426 {
427 	TO_IMPLEMENT;
428 	return TRUE;
429 }
430 
431 gboolean
_gda_capi_meta_key_columns(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error,G_GNUC_UNUSED const GValue * table_catalog,G_GNUC_UNUSED const GValue * table_schema,G_GNUC_UNUSED const GValue * table_name,G_GNUC_UNUSED const GValue * constraint_name)432 _gda_capi_meta_key_columns (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
433 			    G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
434 			    G_GNUC_UNUSED GError **error, G_GNUC_UNUSED const GValue *table_catalog,
435 			    G_GNUC_UNUSED const GValue *table_schema,
436 			    G_GNUC_UNUSED const GValue *table_name,
437 			    G_GNUC_UNUSED const GValue *constraint_name)
438 {
439 	TO_IMPLEMENT;
440 	return TRUE;
441 }
442 
443 gboolean
_gda_capi_meta__check_columns(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error)444 _gda_capi_meta__check_columns (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
445 			       G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
446 			       G_GNUC_UNUSED GError **error)
447 {
448 	TO_IMPLEMENT;
449 	return TRUE;
450 }
451 
452 gboolean
_gda_capi_meta_check_columns(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error,G_GNUC_UNUSED const GValue * table_catalog,G_GNUC_UNUSED const GValue * table_schema,G_GNUC_UNUSED const GValue * table_name,G_GNUC_UNUSED const GValue * constraint_name)453 _gda_capi_meta_check_columns (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
454 			      G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
455 			      G_GNUC_UNUSED GError **error, G_GNUC_UNUSED const GValue *table_catalog,
456 			      G_GNUC_UNUSED const GValue *table_schema,
457 			      G_GNUC_UNUSED const GValue *table_name,
458 			      G_GNUC_UNUSED const GValue *constraint_name)
459 {
460 	TO_IMPLEMENT;
461 	return TRUE;
462 }
463 
464 gboolean
_gda_capi_meta__triggers(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error)465 _gda_capi_meta__triggers (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
466 			  G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
467 			  G_GNUC_UNUSED GError **error)
468 {
469 	TO_IMPLEMENT;
470 	return TRUE;
471 }
472 
473 gboolean
_gda_capi_meta_triggers(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error,G_GNUC_UNUSED const GValue * table_catalog,G_GNUC_UNUSED const GValue * table_schema,G_GNUC_UNUSED const GValue * table_name)474 _gda_capi_meta_triggers (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
475 			 G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
476 			 G_GNUC_UNUSED GError **error, G_GNUC_UNUSED const GValue *table_catalog,
477 			 G_GNUC_UNUSED const GValue *table_schema, G_GNUC_UNUSED const GValue *table_name)
478 {
479 	TO_IMPLEMENT;
480 	return TRUE;
481 }
482 
483 gboolean
_gda_capi_meta__routines(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error)484 _gda_capi_meta__routines (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
485 			  G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
486 			  G_GNUC_UNUSED GError **error)
487 {
488 	TO_IMPLEMENT;
489 	return TRUE;
490 }
491 
492 gboolean
_gda_capi_meta_routines(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error,G_GNUC_UNUSED const GValue * routine_catalog,G_GNUC_UNUSED const GValue * routine_schema,G_GNUC_UNUSED const GValue * routine_name_n)493 _gda_capi_meta_routines (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
494 			 G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
495 			 G_GNUC_UNUSED GError **error, G_GNUC_UNUSED const GValue *routine_catalog,
496 			 G_GNUC_UNUSED const GValue *routine_schema,
497 			 G_GNUC_UNUSED const GValue *routine_name_n)
498 {
499 	TO_IMPLEMENT;
500 	return TRUE;
501 }
502 
503 gboolean
_gda_capi_meta__routine_col(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error)504 _gda_capi_meta__routine_col (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
505 			     G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
506 			     G_GNUC_UNUSED GError **error)
507 {
508 	TO_IMPLEMENT;
509 	return TRUE;
510 }
511 
512 gboolean
_gda_capi_meta_routine_col(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error,G_GNUC_UNUSED const GValue * rout_catalog,G_GNUC_UNUSED const GValue * rout_schema,G_GNUC_UNUSED const GValue * rout_name)513 _gda_capi_meta_routine_col (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
514 			    G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
515 			    G_GNUC_UNUSED GError **error, G_GNUC_UNUSED const GValue *rout_catalog,
516 			    G_GNUC_UNUSED const GValue *rout_schema, G_GNUC_UNUSED const GValue *rout_name)
517 {
518 	TO_IMPLEMENT;
519 	return TRUE;
520 }
521 
522 gboolean
_gda_capi_meta__routine_par(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error)523 _gda_capi_meta__routine_par (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
524 			     G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context, G_GNUC_UNUSED GError **error)
525 {
526 	TO_IMPLEMENT;
527 	return TRUE;
528 }
529 
530 gboolean
_gda_capi_meta_routine_par(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error,G_GNUC_UNUSED const GValue * rout_catalog,G_GNUC_UNUSED const GValue * rout_schema,G_GNUC_UNUSED const GValue * rout_name)531 _gda_capi_meta_routine_par (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
532 			    G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
533 			    G_GNUC_UNUSED GError **error, G_GNUC_UNUSED const GValue *rout_catalog,
534 			    G_GNUC_UNUSED const GValue *rout_schema, G_GNUC_UNUSED const GValue *rout_name)
535 {
536 	TO_IMPLEMENT;
537 	return TRUE;
538 }
539 
540 gboolean
_gda_capi_meta__indexes_tab(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error)541 _gda_capi_meta__indexes_tab (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
542 			     G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
543 			     G_GNUC_UNUSED GError **error)
544 {
545 	TO_IMPLEMENT;
546 	return TRUE;
547 }
548 
549 gboolean
_gda_capi_meta_indexes_tab(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error,G_GNUC_UNUSED const GValue * table_catalog,G_GNUC_UNUSED const GValue * table_schema,G_GNUC_UNUSED const GValue * table_name,G_GNUC_UNUSED const GValue * index_name_n)550 _gda_capi_meta_indexes_tab (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
551 			    G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
552 			    G_GNUC_UNUSED GError **error, G_GNUC_UNUSED const GValue *table_catalog,
553 			    G_GNUC_UNUSED const GValue *table_schema, G_GNUC_UNUSED const GValue *table_name,
554 			    G_GNUC_UNUSED const GValue *index_name_n)
555 {
556 	TO_IMPLEMENT;
557 	return TRUE;
558 }
559 
560 gboolean
_gda_capi_meta__index_cols(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error)561 _gda_capi_meta__index_cols (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
562 			    G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
563 			    G_GNUC_UNUSED GError **error)
564 {
565 	TO_IMPLEMENT;
566 	return TRUE;
567 }
568 
569 gboolean
_gda_capi_meta_index_cols(G_GNUC_UNUSED GdaServerProvider * prov,G_GNUC_UNUSED GdaConnection * cnc,G_GNUC_UNUSED GdaMetaStore * store,G_GNUC_UNUSED GdaMetaContext * context,G_GNUC_UNUSED GError ** error,G_GNUC_UNUSED const GValue * table_catalog,G_GNUC_UNUSED const GValue * table_schema,G_GNUC_UNUSED const GValue * table_name,G_GNUC_UNUSED const GValue * index_name)570 _gda_capi_meta_index_cols (G_GNUC_UNUSED GdaServerProvider *prov, G_GNUC_UNUSED GdaConnection *cnc,
571 			   G_GNUC_UNUSED GdaMetaStore *store, G_GNUC_UNUSED GdaMetaContext *context,
572 			   G_GNUC_UNUSED GError **error, G_GNUC_UNUSED const GValue *table_catalog,
573 			   G_GNUC_UNUSED const GValue *table_schema, G_GNUC_UNUSED const GValue *table_name,
574 			   G_GNUC_UNUSED const GValue *index_name)
575 {
576 	TO_IMPLEMENT;
577 	return TRUE;
578 }
579