On Tue, Apr 8, 2008 at 9:10 PM, Murray Cumming <[EMAIL PROTECTED]> wrote: > The libgda-4.0 API reference is now online, and it contains information > about the changes between libgda-3.0 and libgda-4.0: > http://library.gnome.org/devel/libgda-4.0/unstable/migration-2.html > > I have some comments from my initial tests: > > 1. > Creating and executing SQL statements was never easy but it is now even > more awkward than before because you must create a GdaSqlParser and use > it, and check for an error when doing that: > > libgda-3.0: > > GdaCommand* command = gda_command_new("SELECT * FROM album", > GDA_COMMAND_TYPE_SQL, GDA_COMMAND_OPTION_STOP_ON_ERRORS); > GdaDataModel* model = > gda_connection_execute_select_command(connection, command, NULL /* > params */, &error); > > > libgda-4.0: > > GdaSqlParser* parser = gda_connection_create_parser(connection); > error = NULL; > GdaStatement* statement = gda_sql_parser_parse_string(parser, > "SELECT * FROM album", > NULL /* remain */, &error); > g_object_unref(parser); > > if(error) > { > printf("GError from gda_sql_parser_parse_string(): %s\n", > error->message); > g_clear_error(&error); > return EXIT_FAILURE; > } > > GdaDataModel* model = > gda_connection_statement_execute_select(connection, statement, > NULL /* params */, &error); >
The reason you need to create an SQL parser is that the parser can keep track of some specific SQL dialects such as MySQL "delimiter" command which allows one to change the ";" to mark the end of a command with something else. If you've got a general parser then you will inevitably run into trouble when for instance parsing some SQL in a file and parsing your own SQL commands... However, in the general case you can still use gda_execute_select_command() or gda_execute_non_select_command() and the code above is reduced to one line. > > 2. > The list of removed objects and functions needs information for eacho > one about what should be used now: > http://library.gnome.org/devel/libgda-4.0/unstable/ch07s05.html#id2561757 Yes... > > 3. > The > GdaParameterList to GdaSet > and GdaParameter to GdaHolder > rename seems arbitary. > > I guess that GdaSet should really be GdaValueSet or GdaValueList. Is it > used for anything other than executing statements? It is difficult to find good object names. GdaValueSet was pretty high on my list, however one would expect a GdaValueSet to contain GdaValue objects which IMO is too close to the GValue and would have caused misunderstandings. Also GdaSet/GdaHolder are used in data model iterators, and also in some places to pass and unlimited list of named values. > > GdaHolder is a particularly obscure name. If not GdaParameter then maybe > GdaNamedValue? Renaming GdaSet to GdaValueSet and GdaHolder to GdaNamedValue would not be difficult, I can do it if you think they are better names. _______________________________________________ gnome-db-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/gnome-db-list
